(module
  (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
  (type $FUNCSIG$v (func))
  (type $FUNCSIG$ii (func (param i32) (result i32)))
  (type $FUNCSIG$vi (func (param i32)))
  (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
  (type $FUNCSIG$vii (func (param i32 i32)))
  (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32))
  (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32))
  (import "env" "ABORT" (global $ABORT$asm2wasm$import i32))
  (import "global" "NaN" (global $nan$asm2wasm$import f64))
  (import "global" "Infinity" (global $inf$asm2wasm$import f64))
  (import "env" "abort" (func $abort (param i32)))
  (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32)))
  (import "env" "___lock" (func $___lock (param i32)))
  (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32)))
  (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32)))
  (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32)))
  (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32)))
  (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32)))
  (import "env" "___unlock" (func $___unlock (param i32)))
  (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32)))
  (import "env" "memory" (memory $0 256 256))
  (import "env" "table" (table 9 9 funcref))
  (import "env" "memoryBase" (global $memoryBase i32))
  (import "env" "tableBase" (global $tableBase i32))
  (elem (i32.const 0) $b0 $___stdio_close $b1 $___stdout_write $___stdio_seek $___stdio_write $b2 $_cleanup_387 $b3)
  (data (global.get $memoryBase) "\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\b0\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04")
  (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import))
  (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import))
  (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import))
  (global $__THREW__ (mut i32) (i32.const 0))
  (global $threwValue (mut i32) (i32.const 0))
  (global $setjmpId (mut i32) (i32.const 0))
  (global $undef (mut i32) (i32.const 0))
  (global $nan (mut f64) (global.get $nan$asm2wasm$import))
  (global $inf (mut f64) (global.get $inf$asm2wasm$import))
  (global $tempInt (mut i32) (i32.const 0))
  (global $tempBigInt (mut i32) (i32.const 0))
  (global $tempBigIntP (mut i32) (i32.const 0))
  (global $tempBigIntS (mut i32) (i32.const 0))
  (global $tempBigIntR (mut f64) (f64.const 0))
  (global $tempBigIntI (mut i32) (i32.const 0))
  (global $tempBigIntD (mut i32) (i32.const 0))
  (global $tempValue (mut i32) (i32.const 0))
  (global $tempDouble (mut f64) (f64.const 0))
  (global $tempRet0 (mut i32) (i32.const 0))
  (global $tempFloat (mut f32) (f32.const 0))
  (global $f0 (mut f32) (f32.const 0))
  (export "_fflush" (func $_fflush))
  (export "_main" (func $_main))
  (export "_pthread_self" (func $_pthread_self))
  (export "_memset" (func $_memset))
  (export "_malloc" (func $_malloc))
  (export "_memcpy" (func $_memcpy))
  (export "_free" (func $_free))
  (export "___errno_location" (func $___errno_location))
  (export "runPostSets" (func $runPostSets))
  (export "stackAlloc" (func $stackAlloc))
  (export "stackSave" (func $stackSave))
  (export "stackRestore" (func $stackRestore))
  (export "establishStackSpace" (func $establishStackSpace))
  (export "setThrew" (func $setThrew))
  (export "setTempRet0" (func $setTempRet0))
  (export "getTempRet0" (func $getTempRet0))
  (export "dynCall_ii" (func $dynCall_ii))
  (export "dynCall_iiii" (func $dynCall_iiii))
  (export "dynCall_vi" (func $dynCall_vi))
  (export "dynCall_v" (func $dynCall_v))
  (func $stackAlloc (param $0 i32) (result i32)
    (local $1 i32)
    (local.set $1
      (global.get $STACKTOP)
    )
    (global.set $STACKTOP
      (i32.add
        (global.get $STACKTOP)
        (local.get $0)
      )
    )
    (global.set $STACKTOP
      (i32.and
        (i32.add
          (global.get $STACKTOP)
          (i32.const 15)
        )
        (i32.const -16)
      )
    )
    (local.get $1)
  )
  (func $stackSave (result i32)
    (global.get $STACKTOP)
  )
  (func $stackRestore (param $0 i32)
    (global.set $STACKTOP
      (local.get $0)
    )
  )
  (func $establishStackSpace (param $0 i32) (param $1 i32)
    (global.set $STACKTOP
      (local.get $0)
    )
    (global.set $STACK_MAX
      (local.get $1)
    )
  )
  (func $setThrew (param $0 i32) (param $1 i32)
    (if
      (i32.eqz
        (global.get $__THREW__)
      )
      (then
        (block
          (global.set $__THREW__
            (local.get $0)
          )
          (global.set $threwValue
            (local.get $1)
          )
        )
      )
    )
  )
  (func $setTempRet0 (param $0 i32)
    (global.set $tempRet0
      (local.get $0)
    )
  )
  (func $getTempRet0 (result i32)
    (global.get $tempRet0)
  )
  (func $_malloc (param $0 i32) (result i32)
    (i32.const 0)
  )
  (func $_free (param $0 i32)
    (nop)
  )
  (func $_main (result i32)
    (local $0 i32)
    (i64.store align=4
      (local.tee $0
        (call $__Znwj
          (i32.const 8)
        )
      )
      (i64.const 0)
    )
    (local.get $0)
  )
  (func $___stdio_close (param $0 i32) (result i32)
    (local $1 i32)
    (local $2 i32)
    (local.set $1
      (global.get $STACKTOP)
    )
    (global.set $STACKTOP
      (i32.add
        (global.get $STACKTOP)
        (i32.const 16)
      )
    )
    (i32.store
      (local.tee $2
        (local.get $1)
      )
      (i32.load offset=60
        (local.get $0)
      )
    )
    (local.set $0
      (call $___syscall_ret
        (call $___syscall6
          (i32.const 6)
          (local.get $2)
        )
      )
    )
    (global.set $STACKTOP
      (local.get $1)
    )
    (local.get $0)
  )
  (func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
    (local $3 i32)
    (local $4 i32)
    (local $5 i32)
    (local $6 i32)
    (local $7 i32)
    (local $8 i32)
    (local $9 i32)
    (local $10 i32)
    (local $11 i32)
    (local $12 i32)
    (local $13 i32)
    (local $14 i32)
    (local.set $7
      (global.get $STACKTOP)
    )
    (global.set $STACKTOP
      (i32.add
        (global.get $STACKTOP)
        (i32.const 48)
      )
    )
    (local.set $8
      (i32.add
        (local.get $7)
        (i32.const 16)
      )
    )
    (local.set $9
      (local.get $7)
    )
    (i32.store
      (local.tee $3
        (i32.add
          (local.get $7)
          (i32.const 32)
        )
      )
      (local.tee $5
        (i32.load
          (local.tee $6
            (i32.add
              (local.get $0)
              (i32.const 28)
            )
          )
        )
      )
    )
    (i32.store offset=4
      (local.get $3)
      (local.tee $4
        (i32.sub
          (i32.load
            (local.tee $10
              (i32.add
                (local.get $0)
                (i32.const 20)
              )
            )
          )
          (local.get $5)
        )
      )
    )
    (i32.store offset=8
      (local.get $3)
      (local.get $1)
    )
    (i32.store offset=12
      (local.get $3)
      (local.get $2)
    )
    (local.set $13
      (i32.add
        (local.get $0)
        (i32.const 60)
      )
    )
    (local.set $14
      (i32.add
        (local.get $0)
        (i32.const 44)
      )
    )
    (local.set $1
      (local.get $3)
    )
    (local.set $5
      (i32.const 2)
    )
    (local.set $11
      (i32.add
        (local.get $4)
        (local.get $2)
      )
    )
    (local.set $0
      (block $jumpthreading$outer$1 (result i32)
        (block $jumpthreading$inner$1
          (block $jumpthreading$inner$0
            (loop $while-in
              (br_if $jumpthreading$inner$0
                (i32.eq
                  (local.get $11)
                  (local.tee $4
                    (if (result i32)
                      (i32.load
                        (i32.const 1140)
                      )
                      (then
                        (block (result i32)
                          (call $_pthread_cleanup_push
                            (i32.const 1)
                            (local.get $0)
                          )
                          (i32.store
                            (local.get $9)
                            (i32.load
                              (local.get $13)
                            )
                          )
                          (i32.store offset=4
                            (local.get $9)
                            (local.get $1)
                          )
                          (i32.store offset=8
                            (local.get $9)
                            (local.get $5)
                          )
                          (local.set $3
                            (call $___syscall_ret
                              (call $___syscall146
                                (i32.const 146)
                                (local.get $9)
                              )
                            )
                          )
                          (call $_pthread_cleanup_pop
                            (i32.const 0)
                          )
                          (local.get $3)
                        )
                      )
                      (else
                        (block (result i32)
                          (i32.store
                            (local.get $8)
                            (i32.load
                              (local.get $13)
                            )
                          )
                          (i32.store offset=4
                            (local.get $8)
                            (local.get $1)
                          )
                          (i32.store offset=8
                            (local.get $8)
                            (local.get $5)
                          )
                          (call $___syscall_ret
                            (call $___syscall146
                              (i32.const 146)
                              (local.get $8)
                            )
                          )
                        )
                      )
                    )
                  )
                )
              )
              (br_if $jumpthreading$inner$1
                (i32.lt_s
                  (local.get $4)
                  (i32.const 0)
                )
              )
              (local.set $11
                (i32.sub
                  (local.get $11)
                  (local.get $4)
                )
              )
              (local.set $1
                (if (result i32)
                  (i32.gt_u
                    (local.get $4)
                    (local.tee $12
                      (i32.load offset=4
                        (local.get $1)
                      )
                    )
                  )
                  (then
                    (block (result i32)
                      (i32.store
                        (local.get $6)
                        (local.tee $3
                          (i32.load
                            (local.get $14)
                          )
                        )
                      )
                      (i32.store
                        (local.get $10)
                        (local.get $3)
                      )
                      (local.set $4
                        (i32.sub
                          (local.get $4)
                          (local.get $12)
                        )
                      )
                      (local.set $3
                        (i32.add
                          (local.get $1)
                          (i32.const 8)
                        )
                      )
                      (local.set $5
                        (i32.add
                          (local.get $5)
                          (i32.const -1)
                        )
                      )
                      (i32.load offset=12
                        (local.get $1)
                      )
                    )
                  )
                  (else
                    (if (result i32)
                      (i32.eq
                        (local.get $5)
                        (i32.const 2)
                      )
                      (then
                        (block (result i32)
                          (i32.store
                            (local.get $6)
                            (i32.add
                              (i32.load
                                (local.get $6)
                              )
                              (local.get $4)
                            )
                          )
                          (local.set $3
                            (local.get $1)
                          )
                          (local.set $5
                            (i32.const 2)
                          )
                          (local.get $12)
                        )
                      )
                      (else
                        (block (result i32)
                          (local.set $3
                            (local.get $1)
                          )
                          (local.get $12)
                        )
                      )
                    )
                  )
                )
              )
              (i32.store
                (local.get $3)
                (i32.add
                  (i32.load
                    (local.get $3)
                  )
                  (local.get $4)
                )
              )
              (i32.store offset=4
                (local.get $3)
                (i32.sub
                  (local.get $1)
                  (local.get $4)
                )
              )
              (local.set $1
                (local.get $3)
              )
              (br $while-in)
            )
          )
          (i32.store offset=16
            (local.get $0)
            (i32.add
              (local.tee $1
                (i32.load
                  (local.get $14)
                )
              )
              (i32.load offset=48
                (local.get $0)
              )
            )
          )
          (i32.store
            (local.get $6)
            (local.tee $0
              (local.get $1)
            )
          )
          (i32.store
            (local.get $10)
            (local.get $0)
          )
          (br $jumpthreading$outer$1
            (local.get $2)
          )
        )
        (i32.store offset=16
          (local.get $0)
          (i32.const 0)
        )
        (i32.store
          (local.get $6)
          (i32.const 0)
        )
        (i32.store
          (local.get $10)
          (i32.const 0)
        )
        (i32.store
          (local.get $0)
          (i32.or
            (i32.load
              (local.get $0)
            )
            (i32.const 32)
          )
        )
        (select
          (i32.const 0)
          (i32.sub
            (local.get $2)
            (i32.load offset=4
              (local.get $1)
            )
          )
          (i32.eq
            (local.get $5)
            (i32.const 2)
          )
        )
      )
    )
    (global.set $STACKTOP
      (local.get $7)
    )
    (local.get $0)
  )
  (func $___stdio_seek (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
    (local $3 i32)
    (local $4 i32)
    (local.set $4
      (global.get $STACKTOP)
    )
    (global.set $STACKTOP
      (i32.add
        (global.get $STACKTOP)
        (i32.const 32)
      )
    )
    (i32.store
      (local.tee $3
        (local.get $4)
      )
      (i32.load offset=60
        (local.get $0)
      )
    )
    (i32.store offset=4
      (local.get $3)
      (i32.const 0)
    )
    (i32.store offset=8
      (local.get $3)
      (local.get $1)
    )
    (i32.store offset=12
      (local.get $3)
      (local.tee $0
        (i32.add
          (local.get $4)
          (i32.const 20)
        )
      )
    )
    (i32.store offset=16
      (local.get $3)
      (local.get $2)
    )
    (local.set $0
      (if (result i32)
        (i32.lt_s
          (call $___syscall_ret
            (call $___syscall140
              (i32.const 140)
              (local.get $3)
            )
          )
          (i32.const 0)
        )
        (then
          (block (result i32)
            (i32.store
              (local.get $0)
              (i32.const -1)
            )
            (i32.const -1)
          )
        )
        (else
          (i32.load
            (local.get $0)
          )
        )
      )
    )
    (global.set $STACKTOP
      (local.get $4)
    )
    (local.get $0)
  )
  (func $___syscall_ret (param $0 i32) (result i32)
    (if (result i32)
      (i32.gt_u
        (local.get $0)
        (i32.const -4096)
      )
      (then
        (block (result i32)
          (i32.store
            (call $___errno_location)
            (i32.sub
              (i32.const 0)
              (local.get $0)
            )
          )
          (i32.const -1)
        )
      )
      (else
        (local.get $0)
      )
    )
  )
  (func $___errno_location (result i32)
    (if (result i32)
      (i32.load
        (i32.const 1140)
      )
      (then
        (i32.load offset=64
          (call $_pthread_self)
        )
      )
      (else
        (i32.const 1184)
      )
    )
  )
  (func $_cleanup_387 (param $0 i32)
    (if
      (i32.eqz
        (i32.load offset=68
          (local.get $0)
        )
      )
      (then
        (call $_free
          (local.get $0)
        )
      )
    )
  )
  (func $___stdout_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
    (local $3 i32)
    (local $4 i32)
    (local $5 i32)
    (local.set $4
      (global.get $STACKTOP)
    )
    (global.set $STACKTOP
      (i32.add
        (global.get $STACKTOP)
        (i32.const 80)
      )
    )
    (local.set $3
      (local.get $4)
    )
    (local.set $5
      (i32.add
        (local.get $4)
        (i32.const 12)
      )
    )
    (i32.store offset=36
      (local.get $0)
      (i32.const 3)
    )
    (if
      (i32.eqz
        (i32.and
          (i32.load
            (local.get $0)
          )
          (i32.const 64)
        )
      )
      (then
        (block
          (i32.store
            (local.get $3)
            (i32.load offset=60
              (local.get $0)
            )
          )
          (i32.store offset=4
            (local.get $3)
            (i32.const 21505)
          )
          (i32.store offset=8
            (local.get $3)
            (local.get $5)
          )
          (if
            (call $___syscall54
              (i32.const 54)
              (local.get $3)
            )
            (then
              (i32.store8 offset=75
                (local.get $0)
                (i32.const -1)
              )
            )
          )
        )
      )
    )
    (local.set $0
      (call $___stdio_write
        (local.get $0)
        (local.get $1)
        (local.get $2)
      )
    )
    (global.set $STACKTOP
      (local.get $4)
    )
    (local.get $0)
  )
  (func $_fflush (param $0 i32) (result i32)
    (local $1 i32)
    (local $2 i32)
    (block $do-once (result i32)
      (if (result i32)
        (local.get $0)
        (then
          (block (result i32)
            (if
              (i32.le_s
                (i32.load offset=76
                  (local.get $0)
                )
                (i32.const -1)
              )
              (then
                (br $do-once
                  (call $___fflush_unlocked
                    (local.get $0)
                  )
                )
              )
            )
            (local.set $2
              (i32.eqz
                (call $_malloc
                  (local.get $0)
                )
              )
            )
            (local.set $1
              (call $___fflush_unlocked
                (local.get $0)
              )
            )
            (if (result i32)
              (local.get $2)
              (then
                (local.get $1)
              )
              (else
                (block (result i32)
                  (call $_free
                    (local.get $0)
                  )
                  (local.get $1)
                )
              )
            )
          )
        )
        (else
          (block (result i32)
            (local.set $0
              (if (result i32)
                (i32.load
                  (i32.const 1136)
                )
                (then
                  (call $_fflush
                    (i32.load
                      (i32.const 1136)
                    )
                  )
                )
                (else
                  (i32.const 0)
                )
              )
            )
            (call $___lock
              (i32.const 1168)
            )
            (if
              (local.tee $1
                (i32.load
                  (i32.const 1164)
                )
              )
              (then
                (loop $while-in
                  (local.set $2
                    (if (result i32)
                      (i32.gt_s
                        (i32.load offset=76
                          (local.get $1)
                        )
                        (i32.const -1)
                      )
                      (then
                        (call $_malloc
                          (local.get $1)
                        )
                      )
                      (else
                        (i32.const 0)
                      )
                    )
                  )
                  (local.set $0
                    (if (result i32)
                      (i32.gt_u
                        (i32.load offset=20
                          (local.get $1)
                        )
                        (i32.load offset=28
                          (local.get $1)
                        )
                      )
                      (then
                        (i32.or
                          (call $___fflush_unlocked
                            (local.get $1)
                          )
                          (local.get $0)
                        )
                      )
                      (else
                        (local.get $0)
                      )
                    )
                  )
                  (if
                    (local.get $2)
                    (then
                      (call $_free
                        (local.get $1)
                      )
                    )
                  )
                  (br_if $while-in
                    (local.tee $1
                      (i32.load offset=56
                        (local.get $1)
                      )
                    )
                  )
                )
              )
            )
            (call $___unlock
              (i32.const 1168)
            )
            (local.get $0)
          )
        )
      )
    )
  )
  (func $___fflush_unlocked (param $0 i32) (result i32)
    (local $1 i32)
    (local $2 i32)
    (local $3 i32)
    (local $4 i32)
    (local $5 i32)
    (local $6 i32)
    (block $jumpthreading$outer$0 (result i32)
      (block $jumpthreading$inner$0
        (br_if $jumpthreading$inner$0
          (i32.le_u
            (i32.load
              (local.tee $1
                (i32.add
                  (local.get $0)
                  (i32.const 20)
                )
              )
            )
            (i32.load
              (local.tee $2
                (i32.add
                  (local.get $0)
                  (i32.const 28)
                )
              )
            )
          )
        )
        (drop
          (call_indirect (type $FUNCSIG$iiii)
            (local.get $0)
            (i32.const 0)
            (i32.const 0)
            (i32.add
              (i32.and
                (i32.load offset=36
                  (local.get $0)
                )
                (i32.const 3)
              )
              (i32.const 2)
            )
          )
        )
        (br_if $jumpthreading$inner$0
          (i32.load
            (local.get $1)
          )
        )
        (br $jumpthreading$outer$0
          (i32.const -1)
        )
      )
      (if
        (i32.lt_u
          (local.tee $4
            (i32.load
              (local.tee $3
                (i32.add
                  (local.get $0)
                  (i32.const 4)
                )
              )
            )
          )
          (local.tee $6
            (i32.load
              (local.tee $5
                (i32.add
                  (local.get $0)
                  (i32.const 8)
                )
              )
            )
          )
        )
        (then
          (drop
            (call_indirect (type $FUNCSIG$iiii)
              (local.get $0)
              (i32.sub
                (local.get $4)
                (local.get $6)
              )
              (i32.const 1)
              (i32.add
                (i32.and
                  (i32.load offset=40
                    (local.get $0)
                  )
                  (i32.const 3)
                )
                (i32.const 2)
              )
            )
          )
        )
      )
      (i32.store offset=16
        (local.get $0)
        (i32.const 0)
      )
      (i32.store
        (local.get $2)
        (i32.const 0)
      )
      (i32.store
        (local.get $1)
        (i32.const 0)
      )
      (i32.store
        (local.get $5)
        (i32.const 0)
      )
      (i32.store
        (local.get $3)
        (i32.const 0)
      )
      (i32.const 0)
    )
  )
  (func $__Znwj (param $0 i32) (result i32)
    (local $1 i32)
    (local.set $1
      (select
        (local.get $0)
        (i32.const 1)
        (local.get $0)
      )
    )
    (loop $while-in
      (block $while-out
        (br_if $while-out
          (local.tee $0
            (call $_malloc
              (local.get $1)
            )
          )
        )
        (if
          (local.tee $0
            (call $__ZSt15get_new_handlerv)
          )
          (then
            (block
              (call_indirect (type $FUNCSIG$v)
                (i32.add
                  (i32.and
                    (local.get $0)
                    (i32.const 0)
                  )
                  (i32.const 8)
                )
              )
              (br $while-in)
            )
          )
          (else
            (local.set $0
              (i32.const 0)
            )
          )
        )
      )
    )
    (local.get $0)
  )
  (func $__ZSt15get_new_handlerv (result i32)
    (local $0 i32)
    (i32.store
      (i32.const 1188)
      (i32.add
        (local.tee $0
          (i32.load
            (i32.const 1188)
          )
        )
        (i32.const 0)
      )
    )
    (local.get $0)
  )
  (func $runPostSets
    (nop)
  )
  (func $_memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
    (local $3 i32)
    (local $4 i32)
    (local $5 i32)
    (local $6 i32)
    (local.set $4
      (i32.add
        (local.get $0)
        (local.get $2)
      )
    )
    (if
      (i32.ge_s
        (local.get $2)
        (i32.const 20)
      )
      (then
        (block
          (local.set $5
            (i32.or
              (i32.or
                (i32.or
                  (local.tee $1
                    (i32.and
                      (local.get $1)
                      (i32.const 255)
                    )
                  )
                  (i32.shl
                    (local.get $1)
                    (i32.const 8)
                  )
                )
                (i32.shl
                  (local.get $1)
                  (i32.const 16)
                )
              )
              (i32.shl
                (local.get $1)
                (i32.const 24)
              )
            )
          )
          (local.set $6
            (i32.and
              (local.get $4)
              (i32.const -4)
            )
          )
          (if
            (local.tee $3
              (i32.and
                (local.get $0)
                (i32.const 3)
              )
            )
            (then
              (block
                (local.set $3
                  (i32.sub
                    (i32.add
                      (local.get $0)
                      (i32.const 4)
                    )
                    (local.get $3)
                  )
                )
                (loop $while-in
                  (if
                    (i32.lt_s
                      (local.get $0)
                      (local.get $3)
                    )
                    (then
                      (block
                        (i32.store8
                          (local.get $0)
                          (local.get $1)
                        )
                        (local.set $0
                          (i32.add
                            (local.get $0)
                            (i32.const 1)
                          )
                        )
                        (br $while-in)
                      )
                    )
                  )
                )
              )
            )
          )
          (loop $while-in1
            (if
              (i32.lt_s
                (local.get $0)
                (local.get $6)
              )
              (then
                (block
                  (i32.store
                    (local.get $0)
                    (local.get $5)
                  )
                  (local.set $0
                    (i32.add
                      (local.get $0)
                      (i32.const 4)
                    )
                  )
                  (br $while-in1)
                )
              )
            )
          )
        )
      )
    )
    (loop $while-in3
      (if
        (i32.lt_s
          (local.get $0)
          (local.get $4)
        )
        (then
          (block
            (i32.store8
              (local.get $0)
              (local.get $1)
            )
            (local.set $0
              (i32.add
                (local.get $0)
                (i32.const 1)
              )
            )
            (br $while-in3)
          )
        )
      )
    )
    (i32.sub
      (local.get $0)
      (local.get $2)
    )
  )
  (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
    (local $3 i32)
    (if
      (i32.ge_s
        (local.get $2)
        (i32.const 4096)
      )
      (then
        (return
          (call $_emscripten_memcpy_big
            (local.get $0)
            (local.get $1)
            (local.get $2)
          )
        )
      )
    )
    (local.set $3
      (local.get $0)
    )
    (if
      (i32.eq
        (i32.and
          (local.get $0)
          (i32.const 3)
        )
        (i32.and
          (local.get $1)
          (i32.const 3)
        )
      )
      (then
        (block
          (loop $while-in
            (block $while-out
              (br_if $while-out
                (i32.eqz
                  (i32.and
                    (local.get $0)
                    (i32.const 3)
                  )
                )
              )
              (if
                (i32.eqz
                  (local.get $2)
                )
                (then
                  (return
                    (local.get $3)
                  )
                )
              )
              (i32.store8
                (local.get $0)
                (i32.load8_s
                  (local.get $1)
                )
              )
              (local.set $0
                (i32.add
                  (local.get $0)
                  (i32.const 1)
                )
              )
              (local.set $1
                (i32.add
                  (local.get $1)
                  (i32.const 1)
                )
              )
              (local.set $2
                (i32.sub
                  (local.get $2)
                  (i32.const 1)
                )
              )
              (br $while-in)
            )
          )
          (loop $while-in1
            (if
              (i32.ge_s
                (local.get $2)
                (i32.const 4)
              )
              (then
                (block
                  (i32.store
                    (local.get $0)
                    (i32.load
                      (local.get $1)
                    )
                  )
                  (local.set $0
                    (i32.add
                      (local.get $0)
                      (i32.const 4)
                    )
                  )
                  (local.set $1
                    (i32.add
                      (local.get $1)
                      (i32.const 4)
                    )
                  )
                  (local.set $2
                    (i32.sub
                      (local.get $2)
                      (i32.const 4)
                    )
                  )
                  (br $while-in1)
                )
              )
            )
          )
        )
      )
    )
    (loop $while-in3
      (if
        (i32.gt_s
          (local.get $2)
          (i32.const 0)
        )
        (then
          (block
            (i32.store8
              (local.get $0)
              (i32.load8_s
                (local.get $1)
              )
            )
            (local.set $0
              (i32.add
                (local.get $0)
                (i32.const 1)
              )
            )
            (local.set $1
              (i32.add
                (local.get $1)
                (i32.const 1)
              )
            )
            (local.set $2
              (i32.sub
                (local.get $2)
                (i32.const 1)
              )
            )
            (br $while-in3)
          )
        )
      )
    )
    (local.get $3)
  )
  (func $_pthread_self (result i32)
    (i32.const 0)
  )
  (func $dynCall_ii (param $0 i32) (param $1 i32) (result i32)
    (call_indirect (type $FUNCSIG$ii)
      (local.get $1)
      (i32.add
        (i32.and
          (local.get $0)
          (i32.const 1)
        )
        (i32.const 0)
      )
    )
  )
  (func $dynCall_iiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
    (call_indirect (type $FUNCSIG$iiii)
      (local.get $1)
      (local.get $2)
      (local.get $3)
      (i32.add
        (i32.and
          (local.get $0)
          (i32.const 3)
        )
        (i32.const 2)
      )
    )
  )
  (func $dynCall_vi (param $0 i32) (param $1 i32)
    (call_indirect (type $FUNCSIG$vi)
      (local.get $1)
      (i32.add
        (i32.and
          (local.get $0)
          (i32.const 1)
        )
        (i32.const 6)
      )
    )
  )
  (func $dynCall_v (param $0 i32)
    (call_indirect (type $FUNCSIG$v)
      (i32.add
        (i32.and
          (local.get $0)
          (i32.const 0)
        )
        (i32.const 8)
      )
    )
  )
  (func $b0 (param $0 i32) (result i32)
    (call $abort
      (i32.const 0)
    )
    (i32.const 0)
  )
  (func $b1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
    (call $abort
      (i32.const 1)
    )
    (i32.const 0)
  )
  (func $b2 (param $0 i32)
    (call $abort
      (i32.const 2)
    )
  )
  (func $b3
    (call $abort
      (i32.const 3)
    )
  )
)
