(module
 (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
 (type $FUNCSIG$ii (func (param i32) (result i32)))
 (type $FUNCSIG$vi (func (param i32)))
 (type $FUNCSIG$v (func))
 (type $FUNCSIG$vii (func (param i32 i32)))
 (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
 (import "env" "memory" (memory $memory 256))
 (import "env" "table" (table $table 8 8 funcref))
 (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa)
 (import "env" "__table_base" (global $__table_base i32))
 (import "env" "STACKTOP" (global $r$asm2wasm$import i32))
 (import "env" "STACK_MAX" (global $s$asm2wasm$import i32))
 (import "env" "abort" (func $ja (param i32)))
 (import "env" "_pthread_cleanup_pop" (func $oa (param i32)))
 (import "env" "___lock" (func $pa (param i32)))
 (import "env" "_abort" (func $qa))
 (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32)))
 (import "env" "___syscall6" (func $sa (param i32 i32) (result i32)))
 (import "env" "_sbrk" (func $ta (param i32) (result i32)))
 (import "env" "___syscall140" (func $ua (param i32 i32) (result i32)))
 (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32)))
 (import "env" "___syscall54" (func $wa (param i32 i32) (result i32)))
 (import "env" "___unlock" (func $xa (param i32)))
 (import "env" "___syscall146" (func $ya (param i32 i32) (result i32)))
 (global $r (mut i32) (global.get $r$asm2wasm$import))
 (global $s (mut i32) (global.get $s$asm2wasm$import))
 (global $v (mut i32) (i32.const 0))
 (global $w (mut i32) (i32.const 0))
 (global $K (mut i32) (i32.const 0))
 (export "__growWasmMemory" (func $__growWasmMemory))
 (export "_free" (func $fb))
 (export "_main" (func $Na))
 (export "_pthread_self" (func $ib))
 (export "_memset" (func $hb))
 (export "_malloc" (func $eb))
 (export "_memcpy" (func $jb))
 (export "_fflush" (func $_a))
 (export "___errno_location" (func $Qa))
 (export "runPostSets" (func $gb))
 (export "stackAlloc" (func $Ea))
 (export "stackSave" (func $Fa))
 (export "stackRestore" (func $Ga))
 (export "establishStackSpace" (func $Ha))
 (export "setThrew" (func $Ia))
 (export "setTempRet0" (func $La))
 (export "getTempRet0" (func $Ma))
 (export "dynCall_ii" (func $kb))
 (export "dynCall_iiii" (func $lb))
 (export "dynCall_vi" (func $mb))
 (func $__growWasmMemory (; 12 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (memory.grow
   (local.get $0)
  )
 )
 (func $eb (; 13 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (local $2 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 $15 i32)
  (local $16 i32)
  (local $17 i32)
  (local $18 i32)
  (local $19 i32)
  (local $20 i32)
  (local $21 i32)
  (local $22 i32)
  (local $23 i32)
  (local $24 i32)
  (local $25 i32)
  (local $26 i32)
  (local $27 i32)
  (local $28 i32)
  (local $29 i32)
  (local $30 i32)
  (local $31 i32)
  (local $32 i32)
  (local $33 i32)
  (local $34 i32)
  (local $35 i32)
  (local $36 i32)
  (local $37 i32)
  (local $38 i32)
  (local $39 i32)
  (local $40 i32)
  (local $41 i32)
  (local $42 i32)
  (local $43 i32)
  (local $44 i32)
  (local $45 i32)
  (local $46 i32)
  (local $47 i32)
  (local.set $18
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (global.get $r)
    (i32.const 16)
   )
  )
  (if
   (i32.lt_u
    (local.get $0)
    (i32.const 245)
   )
   (block
    (if
     (i32.and
      (local.tee $10
       (i32.shr_u
        (local.tee $12
         (i32.load
          (i32.const 1208)
         )
        )
        (local.tee $2
         (i32.shr_u
          (local.tee $4
           (select
            (i32.const 16)
            (i32.and
             (i32.add
              (local.get $0)
              (i32.const 11)
             )
             (i32.const -8)
            )
            (i32.lt_u
             (local.get $0)
             (i32.const 11)
            )
           )
          )
          (i32.const 3)
         )
        )
       )
      )
      (i32.const 3)
     )
     (block
      (local.set $0
       (i32.load
        (local.tee $2
         (i32.add
          (local.tee $4
           (i32.load offset=8
            (local.tee $1
             (i32.add
              (i32.shl
               (local.tee $3
                (i32.add
                 (local.get $2)
                 (i32.xor
                  (i32.and
                   (local.get $10)
                   (i32.const 1)
                  )
                  (i32.const 1)
                 )
                )
               )
               (i32.const 3)
              )
              (i32.const 1248)
             )
            )
           )
          )
          (i32.const 8)
         )
        )
       )
      )
      (if
       (i32.eq
        (local.get $0)
        (local.get $1)
       )
       (i32.store
        (i32.const 1208)
        (i32.and
         (i32.xor
          (i32.shl
           (i32.const 1)
           (local.get $3)
          )
          (i32.const -1)
         )
         (local.get $12)
        )
       )
       (block
        (if
         (i32.lt_u
          (local.get $0)
          (i32.load
           (i32.const 1224)
          )
         )
         (call $qa)
        )
        (if
         (i32.eq
          (local.get $4)
          (i32.load offset=12
           (local.get $0)
          )
         )
         (block
          (i32.store offset=12
           (local.get $0)
           (local.get $1)
          )
          (i32.store offset=8
           (local.get $1)
           (local.get $0)
          )
         )
         (call $qa)
        )
       )
      )
      (i32.store offset=4
       (local.get $4)
       (i32.or
        (local.tee $0
         (i32.shl
          (local.get $3)
          (i32.const 3)
         )
        )
        (i32.const 3)
       )
      )
      (i32.store offset=4
       (local.tee $0
        (i32.add
         (local.get $0)
         (local.get $4)
        )
       )
       (i32.or
        (i32.load offset=4
         (local.get $0)
        )
        (i32.const 1)
       )
      )
      (global.set $r
       (local.get $18)
      )
      (return
       (local.get $2)
      )
     )
    )
    (if
     (i32.gt_u
      (local.get $4)
      (local.tee $0
       (i32.load
        (i32.const 1216)
       )
      )
     )
     (block
      (if
       (local.get $10)
       (block
        (local.set $1
         (i32.and
          (i32.shr_u
           (local.tee $3
            (i32.add
             (i32.and
              (i32.sub
               (i32.const 0)
               (local.tee $1
                (i32.and
                 (i32.or
                  (i32.sub
                   (i32.const 0)
                   (local.tee $1
                    (i32.shl
                     (i32.const 2)
                     (local.get $2)
                    )
                   )
                  )
                  (local.get $1)
                 )
                 (i32.shl
                  (local.get $10)
                  (local.get $2)
                 )
                )
               )
              )
              (local.get $1)
             )
             (i32.const -1)
            )
           )
           (i32.const 12)
          )
          (i32.const 16)
         )
        )
        (local.set $3
         (i32.and
          (i32.shr_u
           (local.tee $2
            (i32.shr_u
             (local.get $3)
             (local.get $1)
            )
           )
           (i32.const 5)
          )
          (i32.const 8)
         )
        )
        (local.set $2
         (i32.and
          (i32.shr_u
           (local.tee $5
            (i32.shr_u
             (local.get $2)
             (local.get $3)
            )
           )
           (i32.const 2)
          )
          (i32.const 4)
         )
        )
        (local.set $5
         (i32.and
          (i32.shr_u
           (local.tee $7
            (i32.shr_u
             (local.get $5)
             (local.get $2)
            )
           )
           (i32.const 1)
          )
          (i32.const 2)
         )
        )
        (local.set $1
         (i32.load
          (local.tee $6
           (i32.add
            (local.tee $2
             (i32.load offset=8
              (local.tee $3
               (i32.add
                (i32.shl
                 (local.tee $5
                  (i32.add
                   (i32.or
                    (local.tee $6
                     (i32.and
                      (i32.shr_u
                       (local.tee $7
                        (i32.shr_u
                         (local.get $7)
                         (local.get $5)
                        )
                       )
                       (i32.const 1)
                      )
                      (i32.const 1)
                     )
                    )
                    (i32.or
                     (local.get $5)
                     (i32.or
                      (local.get $2)
                      (i32.or
                       (local.get $1)
                       (local.get $3)
                      )
                     )
                    )
                   )
                   (i32.shr_u
                    (local.get $7)
                    (local.get $6)
                   )
                  )
                 )
                 (i32.const 3)
                )
                (i32.const 1248)
               )
              )
             )
            )
            (i32.const 8)
           )
          )
         )
        )
        (if
         (i32.eq
          (local.get $1)
          (local.get $3)
         )
         (block
          (i32.store
           (i32.const 1208)
           (i32.and
            (i32.xor
             (i32.shl
              (i32.const 1)
              (local.get $5)
             )
             (i32.const -1)
            )
            (local.get $12)
           )
          )
          (local.set $13
           (local.get $0)
          )
         )
         (block
          (if
           (i32.lt_u
            (local.get $1)
            (i32.load
             (i32.const 1224)
            )
           )
           (call $qa)
          )
          (if
           (i32.eq
            (local.get $2)
            (i32.load offset=12
             (local.get $1)
            )
           )
           (block
            (i32.store offset=12
             (local.get $1)
             (local.get $3)
            )
            (i32.store offset=8
             (local.get $3)
             (local.get $1)
            )
            (local.set $13
             (i32.load
              (i32.const 1216)
             )
            )
           )
           (call $qa)
          )
         )
        )
        (i32.store offset=4
         (local.get $2)
         (i32.or
          (local.get $4)
          (i32.const 3)
         )
        )
        (i32.store offset=4
         (local.tee $7
          (i32.add
           (local.get $2)
           (local.get $4)
          )
         )
         (i32.or
          (local.tee $2
           (i32.sub
            (i32.shl
             (local.get $5)
             (i32.const 3)
            )
            (local.get $4)
           )
          )
          (i32.const 1)
         )
        )
        (i32.store
         (i32.add
          (local.get $2)
          (local.get $7)
         )
         (local.get $2)
        )
        (if
         (local.get $13)
         (block
          (local.set $3
           (i32.load
            (i32.const 1228)
           )
          )
          (local.set $0
           (i32.add
            (i32.shl
             (local.tee $1
              (i32.shr_u
               (local.get $13)
               (i32.const 3)
              )
             )
             (i32.const 3)
            )
            (i32.const 1248)
           )
          )
          (if
           (i32.and
            (local.tee $4
             (i32.load
              (i32.const 1208)
             )
            )
            (local.tee $1
             (i32.shl
              (i32.const 1)
              (local.get $1)
             )
            )
           )
           (if
            (i32.lt_u
             (local.tee $4
              (i32.load
               (local.tee $1
                (i32.add
                 (local.get $0)
                 (i32.const 8)
                )
               )
              )
             )
             (i32.load
              (i32.const 1224)
             )
            )
            (call $qa)
            (block
             (local.set $20
              (local.get $1)
             )
             (local.set $8
              (local.get $4)
             )
            )
           )
           (block
            (i32.store
             (i32.const 1208)
             (i32.or
              (local.get $1)
              (local.get $4)
             )
            )
            (local.set $20
             (i32.add
              (local.get $0)
              (i32.const 8)
             )
            )
            (local.set $8
             (local.get $0)
            )
           )
          )
          (i32.store
           (local.get $20)
           (local.get $3)
          )
          (i32.store offset=12
           (local.get $8)
           (local.get $3)
          )
          (i32.store offset=8
           (local.get $3)
           (local.get $8)
          )
          (i32.store offset=12
           (local.get $3)
           (local.get $0)
          )
         )
        )
        (i32.store
         (i32.const 1216)
         (local.get $2)
        )
        (i32.store
         (i32.const 1228)
         (local.get $7)
        )
        (global.set $r
         (local.get $18)
        )
        (return
         (local.get $6)
        )
       )
      )
      (if
       (local.tee $0
        (i32.load
         (i32.const 1212)
        )
       )
       (block
        (local.set $0
         (i32.and
          (i32.shr_u
           (local.tee $1
            (i32.add
             (i32.and
              (i32.sub
               (i32.const 0)
               (local.get $0)
              )
              (local.get $0)
             )
             (i32.const -1)
            )
           )
           (i32.const 12)
          )
          (i32.const 16)
         )
        )
        (local.set $1
         (i32.and
          (i32.shr_u
           (local.tee $3
            (i32.shr_u
             (local.get $1)
             (local.get $0)
            )
           )
           (i32.const 5)
          )
          (i32.const 8)
         )
        )
        (local.set $3
         (i32.and
          (i32.shr_u
           (local.tee $2
            (i32.shr_u
             (local.get $3)
             (local.get $1)
            )
           )
           (i32.const 2)
          )
          (i32.const 4)
         )
        )
        (local.set $2
         (i32.and
          (i32.shr_u
           (local.tee $8
            (i32.shr_u
             (local.get $2)
             (local.get $3)
            )
           )
           (i32.const 1)
          )
          (i32.const 2)
         )
        )
        (local.set $7
         (i32.sub
          (i32.and
           (i32.load offset=4
            (local.tee $0
             (i32.load
              (i32.add
               (i32.shl
                (i32.add
                 (i32.or
                  (local.tee $7
                   (i32.and
                    (i32.shr_u
                     (local.tee $8
                      (i32.shr_u
                       (local.get $8)
                       (local.get $2)
                      )
                     )
                     (i32.const 1)
                    )
                    (i32.const 1)
                   )
                  )
                  (i32.or
                   (local.get $2)
                   (i32.or
                    (local.get $3)
                    (i32.or
                     (local.get $0)
                     (local.get $1)
                    )
                   )
                  )
                 )
                 (i32.shr_u
                  (local.get $8)
                  (local.get $7)
                 )
                )
                (i32.const 2)
               )
               (i32.const 1512)
              )
             )
            )
           )
           (i32.const -8)
          )
          (local.get $4)
         )
        )
        (local.set $9
         (local.get $0)
        )
        (loop $while-in
         (block $while-out
          (if
           (local.tee $1
            (i32.load offset=16
             (local.get $0)
            )
           )
           (local.set $0
            (local.get $1)
           )
           (if
            (i32.eqz
             (local.tee $0
              (i32.load offset=20
               (local.get $0)
              )
             )
            )
            (block
             (local.set $8
              (local.get $9)
             )
             (br $while-out)
            )
           )
          )
          (local.set $1
           (i32.lt_u
            (local.tee $3
             (i32.sub
              (i32.and
               (i32.load offset=4
                (local.get $0)
               )
               (i32.const -8)
              )
              (local.get $4)
             )
            )
            (local.get $7)
           )
          )
          (local.set $7
           (select
            (local.get $3)
            (local.get $7)
            (local.get $1)
           )
          )
          (local.set $9
           (select
            (local.get $0)
            (local.get $9)
            (local.get $1)
           )
          )
          (br $while-in)
         )
        )
        (if
         (i32.lt_u
          (local.get $8)
          (local.tee $14
           (i32.load
            (i32.const 1224)
           )
          )
         )
         (call $qa)
        )
        (if
         (i32.ge_u
          (local.get $8)
          (local.tee $12
           (i32.add
            (local.get $4)
            (local.get $8)
           )
          )
         )
         (call $qa)
        )
        (local.set $10
         (i32.load offset=24
          (local.get $8)
         )
        )
        (if
         (i32.eq
          (local.get $8)
          (local.tee $0
           (i32.load offset=12
            (local.get $8)
           )
          )
         )
         (block $do-once4
          (if
           (i32.eqz
            (local.tee $0
             (i32.load
              (local.tee $1
               (i32.add
                (local.get $8)
                (i32.const 20)
               )
              )
             )
            )
           )
           (br_if $do-once4
            (i32.eqz
             (local.tee $0
              (i32.load
               (local.tee $1
                (i32.add
                 (local.get $8)
                 (i32.const 16)
                )
               )
              )
             )
            )
           )
          )
          (loop $while-in7
           (if
            (local.tee $2
             (i32.load
              (local.tee $3
               (i32.add
                (local.get $0)
                (i32.const 20)
               )
              )
             )
            )
            (block
             (local.set $0
              (local.get $2)
             )
             (local.set $1
              (local.get $3)
             )
             (br $while-in7)
            )
           )
           (if
            (local.tee $2
             (i32.load
              (local.tee $3
               (i32.add
                (local.get $0)
                (i32.const 16)
               )
              )
             )
            )
            (block
             (local.set $0
              (local.get $2)
             )
             (local.set $1
              (local.get $3)
             )
             (br $while-in7)
            )
           )
          )
          (if
           (i32.lt_u
            (local.get $1)
            (local.get $14)
           )
           (call $qa)
           (block
            (i32.store
             (local.get $1)
             (i32.const 0)
            )
            (local.set $5
             (local.get $0)
            )
           )
          )
         )
         (block
          (if
           (i32.lt_u
            (local.tee $1
             (i32.load offset=8
              (local.get $8)
             )
            )
            (local.get $14)
           )
           (call $qa)
          )
          (if
           (i32.ne
            (local.get $8)
            (i32.load offset=12
             (local.get $1)
            )
           )
           (call $qa)
          )
          (if
           (i32.eq
            (local.get $8)
            (i32.load offset=8
             (local.get $0)
            )
           )
           (block
            (i32.store offset=12
             (local.get $1)
             (local.get $0)
            )
            (i32.store offset=8
             (local.get $0)
             (local.get $1)
            )
            (local.set $5
             (local.get $0)
            )
           )
           (call $qa)
          )
         )
        )
        (if
         (local.get $10)
         (block $do-once8
          (if
           (i32.eq
            (i32.load
             (local.tee $1
              (i32.add
               (i32.shl
                (local.tee $0
                 (i32.load offset=28
                  (local.get $8)
                 )
                )
                (i32.const 2)
               )
               (i32.const 1512)
              )
             )
            )
            (local.get $8)
           )
           (block
            (i32.store
             (local.get $1)
             (local.get $5)
            )
            (if
             (i32.eqz
              (local.get $5)
             )
             (block
              (i32.store
               (i32.const 1212)
               (i32.and
                (i32.load
                 (i32.const 1212)
                )
                (i32.xor
                 (i32.shl
                  (i32.const 1)
                  (local.get $0)
                 )
                 (i32.const -1)
                )
               )
              )
              (br $do-once8)
             )
            )
           )
           (block
            (if
             (i32.lt_u
              (local.get $10)
              (i32.load
               (i32.const 1224)
              )
             )
             (call $qa)
            )
            (if
             (i32.eq
              (local.get $8)
              (i32.load offset=16
               (local.get $10)
              )
             )
             (i32.store offset=16
              (local.get $10)
              (local.get $5)
             )
             (i32.store offset=20
              (local.get $10)
              (local.get $5)
             )
            )
            (br_if $do-once8
             (i32.eqz
              (local.get $5)
             )
            )
           )
          )
          (if
           (i32.lt_u
            (local.get $5)
            (local.tee $1
             (i32.load
              (i32.const 1224)
             )
            )
           )
           (call $qa)
          )
          (i32.store offset=24
           (local.get $5)
           (local.get $10)
          )
          (if
           (local.tee $0
            (i32.load offset=16
             (local.get $8)
            )
           )
           (if
            (i32.lt_u
             (local.get $0)
             (local.get $1)
            )
            (call $qa)
            (block
             (i32.store offset=16
              (local.get $5)
              (local.get $0)
             )
             (i32.store offset=24
              (local.get $0)
              (local.get $5)
             )
            )
           )
          )
          (if
           (local.tee $0
            (i32.load offset=20
             (local.get $8)
            )
           )
           (if
            (i32.lt_u
             (local.get $0)
             (i32.load
              (i32.const 1224)
             )
            )
            (call $qa)
            (block
             (i32.store offset=20
              (local.get $5)
              (local.get $0)
             )
             (i32.store offset=24
              (local.get $0)
              (local.get $5)
             )
            )
           )
          )
         )
        )
        (if
         (i32.lt_u
          (local.get $7)
          (i32.const 16)
         )
         (block
          (i32.store offset=4
           (local.get $8)
           (i32.or
            (local.tee $0
             (i32.add
              (local.get $4)
              (local.get $7)
             )
            )
            (i32.const 3)
           )
          )
          (i32.store offset=4
           (local.tee $0
            (i32.add
             (local.get $0)
             (local.get $8)
            )
           )
           (i32.or
            (i32.load offset=4
             (local.get $0)
            )
            (i32.const 1)
           )
          )
         )
         (block
          (i32.store offset=4
           (local.get $8)
           (i32.or
            (local.get $4)
            (i32.const 3)
           )
          )
          (i32.store offset=4
           (local.get $12)
           (i32.or
            (local.get $7)
            (i32.const 1)
           )
          )
          (i32.store
           (i32.add
            (local.get $7)
            (local.get $12)
           )
           (local.get $7)
          )
          (if
           (local.tee $0
            (i32.load
             (i32.const 1216)
            )
           )
           (block
            (local.set $3
             (i32.load
              (i32.const 1228)
             )
            )
            (local.set $0
             (i32.add
              (i32.shl
               (local.tee $1
                (i32.shr_u
                 (local.get $0)
                 (i32.const 3)
                )
               )
               (i32.const 3)
              )
              (i32.const 1248)
             )
            )
            (if
             (i32.and
              (local.tee $4
               (i32.load
                (i32.const 1208)
               )
              )
              (local.tee $1
               (i32.shl
                (i32.const 1)
                (local.get $1)
               )
              )
             )
             (if
              (i32.lt_u
               (local.tee $4
                (i32.load
                 (local.tee $1
                  (i32.add
                   (local.get $0)
                   (i32.const 8)
                  )
                 )
                )
               )
               (i32.load
                (i32.const 1224)
               )
              )
              (call $qa)
              (block
               (local.set $21
                (local.get $1)
               )
               (local.set $6
                (local.get $4)
               )
              )
             )
             (block
              (i32.store
               (i32.const 1208)
               (i32.or
                (local.get $1)
                (local.get $4)
               )
              )
              (local.set $21
               (i32.add
                (local.get $0)
                (i32.const 8)
               )
              )
              (local.set $6
               (local.get $0)
              )
             )
            )
            (i32.store
             (local.get $21)
             (local.get $3)
            )
            (i32.store offset=12
             (local.get $6)
             (local.get $3)
            )
            (i32.store offset=8
             (local.get $3)
             (local.get $6)
            )
            (i32.store offset=12
             (local.get $3)
             (local.get $0)
            )
           )
          )
          (i32.store
           (i32.const 1216)
           (local.get $7)
          )
          (i32.store
           (i32.const 1228)
           (local.get $12)
          )
         )
        )
        (global.set $r
         (local.get $18)
        )
        (return
         (i32.add
          (local.get $8)
          (i32.const 8)
         )
        )
       )
      )
     )
    )
   )
   (local.set $4
    (if (result i32)
     (i32.gt_u
      (local.get $0)
      (i32.const -65)
     )
     (i32.const -1)
     (block $do-once (result i32)
      (local.set $8
       (i32.and
        (local.tee $0
         (i32.add
          (local.get $0)
          (i32.const 11)
         )
        )
        (i32.const -8)
       )
      )
      (if (result i32)
       (local.tee $39
        (i32.load
         (i32.const 1212)
        )
       )
       (block (result i32)
        (local.set $21
         (if (result i32)
          (local.tee $0
           (i32.shr_u
            (local.get $0)
            (i32.const 8)
           )
          )
          (if (result i32)
           (i32.gt_u
            (local.get $8)
            (i32.const 16777215)
           )
           (i32.const 31)
           (block (result i32)
            (local.set $0
             (i32.and
              (i32.shr_u
               (i32.add
                (local.tee $6
                 (i32.shl
                  (local.get $0)
                  (local.tee $5
                   (i32.and
                    (i32.shr_u
                     (i32.add
                      (local.get $0)
                      (i32.const 1048320)
                     )
                     (i32.const 16)
                    )
                    (i32.const 8)
                   )
                  )
                 )
                )
                (i32.const 520192)
               )
               (i32.const 16)
              )
              (i32.const 4)
             )
            )
            (i32.or
             (i32.and
              (i32.shr_u
               (local.get $8)
               (i32.add
                (local.tee $0
                 (i32.add
                  (i32.sub
                   (i32.const 14)
                   (i32.or
                    (local.tee $13
                     (i32.and
                      (i32.shr_u
                       (i32.add
                        (local.tee $6
                         (i32.shl
                          (local.get $6)
                          (local.get $0)
                         )
                        )
                        (i32.const 245760)
                       )
                       (i32.const 16)
                      )
                      (i32.const 2)
                     )
                    )
                    (i32.or
                     (local.get $0)
                     (local.get $5)
                    )
                   )
                  )
                  (i32.shr_u
                   (i32.shl
                    (local.get $6)
                    (local.get $13)
                   )
                   (i32.const 15)
                  )
                 )
                )
                (i32.const 7)
               )
              )
              (i32.const 1)
             )
             (i32.shl
              (local.get $0)
              (i32.const 1)
             )
            )
           )
          )
          (i32.const 0)
         )
        )
        (local.set $0
         (i32.sub
          (i32.const 0)
          (local.get $8)
         )
        )
        (if
         (local.tee $6
          (i32.load
           (i32.add
            (i32.shl
             (local.get $21)
             (i32.const 2)
            )
            (i32.const 1512)
           )
          )
         )
         (block $label$break$a
          (local.set $9
           (i32.shl
            (local.get $8)
            (select
             (i32.const 0)
             (i32.sub
              (i32.const 25)
              (i32.shr_u
               (local.get $21)
               (i32.const 1)
              )
             )
             (i32.eq
              (local.get $21)
              (i32.const 31)
             )
            )
           )
          )
          (local.set $5
           (i32.const 0)
          )
          (local.set $10
           (loop $while-in14 (result i32)
            (if
             (i32.lt_u
              (local.tee $13
               (i32.sub
                (local.tee $25
                 (i32.and
                  (i32.load offset=4
                   (local.get $6)
                  )
                  (i32.const -8)
                 )
                )
                (local.get $8)
               )
              )
              (local.get $0)
             )
             (local.set $0
              (if (result i32)
               (i32.eq
                (local.get $8)
                (local.get $25)
               )
               (block
                (local.set $4
                 (local.get $13)
                )
                (local.set $12
                 (local.get $6)
                )
                (local.set $2
                 (local.get $6)
                )
                (local.set $9
                 (i32.const 90)
                )
                (br $label$break$a)
               )
               (block (result i32)
                (local.set $5
                 (local.get $6)
                )
                (local.get $13)
               )
              )
             )
            )
            (local.set $13
             (select
              (local.get $20)
              (local.tee $13
               (i32.load offset=20
                (local.get $6)
               )
              )
              (i32.or
               (i32.eqz
                (local.get $13)
               )
               (i32.eq
                (local.tee $6
                 (i32.load
                  (i32.add
                   (i32.add
                    (local.get $6)
                    (i32.const 16)
                   )
                   (i32.shl
                    (i32.shr_u
                     (local.get $9)
                     (i32.const 31)
                    )
                    (i32.const 2)
                   )
                  )
                 )
                )
                (local.get $13)
               )
              )
             )
            )
            (if (result i32)
             (local.tee $25
              (i32.eqz
               (local.get $6)
              )
             )
             (block (result i32)
              (local.set $19
               (local.get $13)
              )
              (local.set $22
               (local.get $5)
              )
              (local.set $9
               (i32.const 86)
              )
              (local.get $0)
             )
             (block
              (local.set $20
               (local.get $13)
              )
              (local.set $9
               (i32.shl
                (local.get $9)
                (i32.xor
                 (local.get $25)
                 (i32.const 1)
                )
               )
              )
              (br $while-in14)
             )
            )
           )
          )
         )
         (block
          (local.set $10
           (local.get $0)
          )
          (local.set $9
           (i32.const 86)
          )
         )
        )
        (if
         (i32.eq
          (local.get $9)
          (i32.const 86)
         )
         (block
          (if
           (i32.eqz
            (i32.or
             (local.get $19)
             (local.get $22)
            )
           )
           (block
            (drop
             (br_if $do-once
              (local.get $8)
              (i32.eqz
               (local.tee $0
                (i32.and
                 (i32.or
                  (i32.sub
                   (i32.const 0)
                   (local.tee $0
                    (i32.shl
                     (i32.const 2)
                     (local.get $21)
                    )
                   )
                  )
                  (local.get $0)
                 )
                 (local.get $39)
                )
               )
              )
             )
            )
            (local.set $0
             (i32.and
              (i32.shr_u
               (local.tee $5
                (i32.add
                 (i32.and
                  (i32.sub
                   (i32.const 0)
                   (local.get $0)
                  )
                  (local.get $0)
                 )
                 (i32.const -1)
                )
               )
               (i32.const 12)
              )
              (i32.const 16)
             )
            )
            (local.set $5
             (i32.and
              (i32.shr_u
               (local.tee $6
                (i32.shr_u
                 (local.get $5)
                 (local.get $0)
                )
               )
               (i32.const 5)
              )
              (i32.const 8)
             )
            )
            (local.set $6
             (i32.and
              (i32.shr_u
               (local.tee $13
                (i32.shr_u
                 (local.get $6)
                 (local.get $5)
                )
               )
               (i32.const 2)
              )
              (i32.const 4)
             )
            )
            (local.set $13
             (i32.and
              (i32.shr_u
               (local.tee $19
                (i32.shr_u
                 (local.get $13)
                 (local.get $6)
                )
               )
               (i32.const 1)
              )
              (i32.const 2)
             )
            )
            (local.set $19
             (i32.load
              (i32.add
               (i32.shl
                (i32.add
                 (i32.or
                  (local.tee $20
                   (i32.and
                    (i32.shr_u
                     (local.tee $19
                      (i32.shr_u
                       (local.get $19)
                       (local.get $13)
                      )
                     )
                     (i32.const 1)
                    )
                    (i32.const 1)
                   )
                  )
                  (i32.or
                   (local.get $13)
                   (i32.or
                    (local.get $6)
                    (i32.or
                     (local.get $0)
                     (local.get $5)
                    )
                   )
                  )
                 )
                 (i32.shr_u
                  (local.get $19)
                  (local.get $20)
                 )
                )
                (i32.const 2)
               )
               (i32.const 1512)
              )
             )
            )
           )
          )
          (if
           (local.get $19)
           (block
            (local.set $4
             (local.get $10)
            )
            (local.set $12
             (local.get $19)
            )
            (local.set $2
             (local.get $22)
            )
            (local.set $9
             (i32.const 90)
            )
           )
           (block
            (local.set $15
             (local.get $10)
            )
            (local.set $11
             (local.get $22)
            )
           )
          )
         )
        )
        (if (result i32)
         (block (result i32)
          (if
           (i32.eq
            (local.get $9)
            (i32.const 90)
           )
           (local.set $11
            (loop $while-in16 (result i32)
             (local.set $9
              (i32.const 0)
             )
             (local.set $0
              (i32.lt_u
               (local.tee $5
                (i32.sub
                 (i32.and
                  (i32.load offset=4
                   (local.get $12)
                  )
                  (i32.const -8)
                 )
                 (local.get $8)
                )
               )
               (local.get $4)
              )
             )
             (local.set $4
              (select
               (local.get $5)
               (local.get $4)
               (local.get $0)
              )
             )
             (local.set $2
              (select
               (local.get $12)
               (local.get $2)
               (local.get $0)
              )
             )
             (if
              (local.tee $0
               (i32.load offset=16
                (local.get $12)
               )
              )
              (block
               (local.set $12
                (local.get $0)
               )
               (br $while-in16)
              )
             )
             (br_if $while-in16
              (local.tee $12
               (i32.load offset=20
                (local.get $12)
               )
              )
             )
             (local.set $15
              (local.get $4)
             )
             (local.get $2)
            )
           )
          )
          (local.get $11)
         )
         (if (result i32)
          (i32.lt_u
           (local.get $15)
           (i32.sub
            (i32.load
             (i32.const 1216)
            )
            (local.get $8)
           )
          )
          (block
           (if
            (i32.lt_u
             (local.get $11)
             (local.tee $7
              (i32.load
               (i32.const 1224)
              )
             )
            )
            (call $qa)
           )
           (if
            (i32.ge_u
             (local.get $11)
             (local.tee $2
              (i32.add
               (local.get $8)
               (local.get $11)
              )
             )
            )
            (call $qa)
           )
           (local.set $5
            (i32.load offset=24
             (local.get $11)
            )
           )
           (if
            (i32.eq
             (local.get $11)
             (local.tee $0
              (i32.load offset=12
               (local.get $11)
              )
             )
            )
            (block $do-once17
             (if
              (i32.eqz
               (local.tee $0
                (i32.load
                 (local.tee $1
                  (i32.add
                   (local.get $11)
                   (i32.const 20)
                  )
                 )
                )
               )
              )
              (br_if $do-once17
               (i32.eqz
                (local.tee $0
                 (i32.load
                  (local.tee $1
                   (i32.add
                    (local.get $11)
                    (i32.const 16)
                   )
                  )
                 )
                )
               )
              )
             )
             (loop $while-in20
              (if
               (local.tee $3
                (i32.load
                 (local.tee $4
                  (i32.add
                   (local.get $0)
                   (i32.const 20)
                  )
                 )
                )
               )
               (block
                (local.set $0
                 (local.get $3)
                )
                (local.set $1
                 (local.get $4)
                )
                (br $while-in20)
               )
              )
              (if
               (local.tee $3
                (i32.load
                 (local.tee $4
                  (i32.add
                   (local.get $0)
                   (i32.const 16)
                  )
                 )
                )
               )
               (block
                (local.set $0
                 (local.get $3)
                )
                (local.set $1
                 (local.get $4)
                )
                (br $while-in20)
               )
              )
             )
             (if
              (i32.lt_u
               (local.get $1)
               (local.get $7)
              )
              (call $qa)
              (block
               (i32.store
                (local.get $1)
                (i32.const 0)
               )
               (local.set $16
                (local.get $0)
               )
              )
             )
            )
            (block
             (if
              (i32.lt_u
               (local.tee $1
                (i32.load offset=8
                 (local.get $11)
                )
               )
               (local.get $7)
              )
              (call $qa)
             )
             (if
              (i32.ne
               (local.get $11)
               (i32.load offset=12
                (local.get $1)
               )
              )
              (call $qa)
             )
             (if
              (i32.eq
               (local.get $11)
               (i32.load offset=8
                (local.get $0)
               )
              )
              (block
               (i32.store offset=12
                (local.get $1)
                (local.get $0)
               )
               (i32.store offset=8
                (local.get $0)
                (local.get $1)
               )
               (local.set $16
                (local.get $0)
               )
              )
              (call $qa)
             )
            )
           )
           (if
            (local.get $5)
            (block $do-once21
             (if
              (i32.eq
               (i32.load
                (local.tee $1
                 (i32.add
                  (i32.shl
                   (local.tee $0
                    (i32.load offset=28
                     (local.get $11)
                    )
                   )
                   (i32.const 2)
                  )
                  (i32.const 1512)
                 )
                )
               )
               (local.get $11)
              )
              (block
               (i32.store
                (local.get $1)
                (local.get $16)
               )
               (if
                (i32.eqz
                 (local.get $16)
                )
                (block
                 (i32.store
                  (i32.const 1212)
                  (i32.and
                   (i32.load
                    (i32.const 1212)
                   )
                   (i32.xor
                    (i32.shl
                     (i32.const 1)
                     (local.get $0)
                    )
                    (i32.const -1)
                   )
                  )
                 )
                 (br $do-once21)
                )
               )
              )
              (block
               (if
                (i32.lt_u
                 (local.get $5)
                 (i32.load
                  (i32.const 1224)
                 )
                )
                (call $qa)
               )
               (if
                (i32.eq
                 (local.get $11)
                 (i32.load offset=16
                  (local.get $5)
                 )
                )
                (i32.store offset=16
                 (local.get $5)
                 (local.get $16)
                )
                (i32.store offset=20
                 (local.get $5)
                 (local.get $16)
                )
               )
               (br_if $do-once21
                (i32.eqz
                 (local.get $16)
                )
               )
              )
             )
             (if
              (i32.lt_u
               (local.get $16)
               (local.tee $1
                (i32.load
                 (i32.const 1224)
                )
               )
              )
              (call $qa)
             )
             (i32.store offset=24
              (local.get $16)
              (local.get $5)
             )
             (if
              (local.tee $0
               (i32.load offset=16
                (local.get $11)
               )
              )
              (if
               (i32.lt_u
                (local.get $0)
                (local.get $1)
               )
               (call $qa)
               (block
                (i32.store offset=16
                 (local.get $16)
                 (local.get $0)
                )
                (i32.store offset=24
                 (local.get $0)
                 (local.get $16)
                )
               )
              )
             )
             (if
              (local.tee $0
               (i32.load offset=20
                (local.get $11)
               )
              )
              (if
               (i32.lt_u
                (local.get $0)
                (i32.load
                 (i32.const 1224)
                )
               )
               (call $qa)
               (block
                (i32.store offset=20
                 (local.get $16)
                 (local.get $0)
                )
                (i32.store offset=24
                 (local.get $0)
                 (local.get $16)
                )
               )
              )
             )
            )
           )
           (if
            (i32.lt_u
             (local.get $15)
             (i32.const 16)
            )
            (block
             (i32.store offset=4
              (local.get $11)
              (i32.or
               (local.tee $0
                (i32.add
                 (local.get $8)
                 (local.get $15)
                )
               )
               (i32.const 3)
              )
             )
             (i32.store offset=4
              (local.tee $0
               (i32.add
                (local.get $0)
                (local.get $11)
               )
              )
              (i32.or
               (i32.load offset=4
                (local.get $0)
               )
               (i32.const 1)
              )
             )
            )
            (block $do-once25
             (i32.store offset=4
              (local.get $11)
              (i32.or
               (local.get $8)
               (i32.const 3)
              )
             )
             (i32.store offset=4
              (local.get $2)
              (i32.or
               (local.get $15)
               (i32.const 1)
              )
             )
             (i32.store
              (i32.add
               (local.get $2)
               (local.get $15)
              )
              (local.get $15)
             )
             (local.set $1
              (i32.shr_u
               (local.get $15)
               (i32.const 3)
              )
             )
             (if
              (i32.lt_u
               (local.get $15)
               (i32.const 256)
              )
              (block
               (local.set $0
                (i32.add
                 (i32.shl
                  (local.get $1)
                  (i32.const 3)
                 )
                 (i32.const 1248)
                )
               )
               (if
                (i32.and
                 (local.tee $4
                  (i32.load
                   (i32.const 1208)
                  )
                 )
                 (local.tee $1
                  (i32.shl
                   (i32.const 1)
                   (local.get $1)
                  )
                 )
                )
                (if
                 (i32.lt_u
                  (local.tee $4
                   (i32.load
                    (local.tee $1
                     (i32.add
                      (local.get $0)
                      (i32.const 8)
                     )
                    )
                   )
                  )
                  (i32.load
                   (i32.const 1224)
                  )
                 )
                 (call $qa)
                 (block
                  (local.set $29
                   (local.get $1)
                  )
                  (local.set $14
                   (local.get $4)
                  )
                 )
                )
                (block
                 (i32.store
                  (i32.const 1208)
                  (i32.or
                   (local.get $1)
                   (local.get $4)
                  )
                 )
                 (local.set $29
                  (i32.add
                   (local.get $0)
                   (i32.const 8)
                  )
                 )
                 (local.set $14
                  (local.get $0)
                 )
                )
               )
               (i32.store
                (local.get $29)
                (local.get $2)
               )
               (i32.store offset=12
                (local.get $14)
                (local.get $2)
               )
               (i32.store offset=8
                (local.get $2)
                (local.get $14)
               )
               (i32.store offset=12
                (local.get $2)
                (local.get $0)
               )
               (br $do-once25)
              )
             )
             (local.set $1
              (i32.add
               (i32.shl
                (local.tee $0
                 (if (result i32)
                  (local.tee $0
                   (i32.shr_u
                    (local.get $15)
                    (i32.const 8)
                   )
                  )
                  (if (result i32)
                   (i32.gt_u
                    (local.get $15)
                    (i32.const 16777215)
                   )
                   (i32.const 31)
                   (block (result i32)
                    (local.set $0
                     (i32.and
                      (i32.shr_u
                       (i32.add
                        (local.tee $4
                         (i32.shl
                          (local.get $0)
                          (local.tee $1
                           (i32.and
                            (i32.shr_u
                             (i32.add
                              (local.get $0)
                              (i32.const 1048320)
                             )
                             (i32.const 16)
                            )
                            (i32.const 8)
                           )
                          )
                         )
                        )
                        (i32.const 520192)
                       )
                       (i32.const 16)
                      )
                      (i32.const 4)
                     )
                    )
                    (i32.or
                     (i32.and
                      (i32.shr_u
                       (local.get $15)
                       (i32.add
                        (local.tee $0
                         (i32.add
                          (i32.sub
                           (i32.const 14)
                           (i32.or
                            (local.tee $3
                             (i32.and
                              (i32.shr_u
                               (i32.add
                                (local.tee $4
                                 (i32.shl
                                  (local.get $4)
                                  (local.get $0)
                                 )
                                )
                                (i32.const 245760)
                               )
                               (i32.const 16)
                              )
                              (i32.const 2)
                             )
                            )
                            (i32.or
                             (local.get $0)
                             (local.get $1)
                            )
                           )
                          )
                          (i32.shr_u
                           (i32.shl
                            (local.get $4)
                            (local.get $3)
                           )
                           (i32.const 15)
                          )
                         )
                        )
                        (i32.const 7)
                       )
                      )
                      (i32.const 1)
                     )
                     (i32.shl
                      (local.get $0)
                      (i32.const 1)
                     )
                    )
                   )
                  )
                  (i32.const 0)
                 )
                )
                (i32.const 2)
               )
               (i32.const 1512)
              )
             )
             (i32.store offset=28
              (local.get $2)
              (local.get $0)
             )
             (i32.store offset=20
              (local.get $2)
              (i32.const 0)
             )
             (i32.store offset=16
              (local.get $2)
              (i32.const 0)
             )
             (if
              (i32.eqz
               (i32.and
                (local.tee $4
                 (i32.load
                  (i32.const 1212)
                 )
                )
                (local.tee $3
                 (i32.shl
                  (i32.const 1)
                  (local.get $0)
                 )
                )
               )
              )
              (block
               (i32.store
                (i32.const 1212)
                (i32.or
                 (local.get $3)
                 (local.get $4)
                )
               )
               (i32.store
                (local.get $1)
                (local.get $2)
               )
               (i32.store offset=24
                (local.get $2)
                (local.get $1)
               )
               (i32.store offset=12
                (local.get $2)
                (local.get $2)
               )
               (i32.store offset=8
                (local.get $2)
                (local.get $2)
               )
               (br $do-once25)
              )
             )
             (local.set $3
              (i32.shl
               (local.get $15)
               (select
                (i32.const 0)
                (i32.sub
                 (i32.const 25)
                 (i32.shr_u
                  (local.get $0)
                  (i32.const 1)
                 )
                )
                (i32.eq
                 (local.get $0)
                 (i32.const 31)
                )
               )
              )
             )
             (local.set $0
              (i32.load
               (local.get $1)
              )
             )
             (if
              (i32.eq
               (local.tee $9
                (loop $while-in28 (result i32)
                 (block $while-out27 (result i32)
                  (if
                   (i32.eq
                    (local.get $15)
                    (i32.and
                     (i32.load offset=4
                      (local.get $0)
                     )
                     (i32.const -8)
                    )
                   )
                   (block
                    (local.set $30
                     (local.get $0)
                    )
                    (br $while-out27
                     (i32.const 148)
                    )
                   )
                  )
                  (if (result i32)
                   (local.tee $1
                    (i32.load
                     (local.tee $4
                      (i32.add
                       (i32.add
                        (local.get $0)
                        (i32.const 16)
                       )
                       (i32.shl
                        (i32.shr_u
                         (local.get $3)
                         (i32.const 31)
                        )
                        (i32.const 2)
                       )
                      )
                     )
                    )
                   )
                   (block
                    (local.set $3
                     (i32.shl
                      (local.get $3)
                      (i32.const 1)
                     )
                    )
                    (local.set $0
                     (local.get $1)
                    )
                    (br $while-in28)
                   )
                   (block (result i32)
                    (local.set $31
                     (local.get $4)
                    )
                    (local.set $40
                     (local.get $0)
                    )
                    (i32.const 145)
                   )
                  )
                 )
                )
               )
               (i32.const 145)
              )
              (if
               (i32.lt_u
                (local.get $31)
                (i32.load
                 (i32.const 1224)
                )
               )
               (call $qa)
               (block
                (i32.store
                 (local.get $31)
                 (local.get $2)
                )
                (i32.store offset=24
                 (local.get $2)
                 (local.get $40)
                )
                (i32.store offset=12
                 (local.get $2)
                 (local.get $2)
                )
                (i32.store offset=8
                 (local.get $2)
                 (local.get $2)
                )
               )
              )
              (if
               (i32.eq
                (local.get $9)
                (i32.const 148)
               )
               (if
                (i32.and
                 (i32.ge_u
                  (local.tee $1
                   (i32.load offset=8
                    (local.tee $0
                     (local.get $30)
                    )
                   )
                  )
                  (local.tee $4
                   (i32.load
                    (i32.const 1224)
                   )
                  )
                 )
                 (i32.ge_u
                  (local.get $0)
                  (local.get $4)
                 )
                )
                (block
                 (i32.store offset=12
                  (local.get $1)
                  (local.get $2)
                 )
                 (i32.store offset=8
                  (local.get $0)
                  (local.get $2)
                 )
                 (i32.store offset=8
                  (local.get $2)
                  (local.get $1)
                 )
                 (i32.store offset=12
                  (local.get $2)
                  (local.get $30)
                 )
                 (i32.store offset=24
                  (local.get $2)
                  (i32.const 0)
                 )
                )
                (call $qa)
               )
              )
             )
            )
           )
           (global.set $r
            (local.get $18)
           )
           (return
            (i32.add
             (local.get $11)
             (i32.const 8)
            )
           )
          )
          (local.get $8)
         )
         (local.get $8)
        )
       )
       (local.get $8)
      )
     )
    )
   )
  )
  (block $folding-inner1
   (if
    (i32.ge_u
     (local.tee $2
      (i32.load
       (i32.const 1216)
      )
     )
     (local.get $4)
    )
    (block
     (local.set $0
      (i32.load
       (i32.const 1228)
      )
     )
     (if
      (i32.gt_u
       (local.tee $1
        (i32.sub
         (local.get $2)
         (local.get $4)
        )
       )
       (i32.const 15)
      )
      (block
       (i32.store
        (i32.const 1228)
        (local.tee $3
         (i32.add
          (local.get $0)
          (local.get $4)
         )
        )
       )
       (i32.store
        (i32.const 1216)
        (local.get $1)
       )
       (i32.store offset=4
        (local.get $3)
        (i32.or
         (local.get $1)
         (i32.const 1)
        )
       )
       (i32.store
        (i32.add
         (local.get $1)
         (local.get $3)
        )
        (local.get $1)
       )
       (i32.store offset=4
        (local.get $0)
        (i32.or
         (local.get $4)
         (i32.const 3)
        )
       )
      )
      (block
       (i32.store
        (i32.const 1216)
        (i32.const 0)
       )
       (i32.store
        (i32.const 1228)
        (i32.const 0)
       )
       (i32.store offset=4
        (local.get $0)
        (i32.or
         (local.get $2)
         (i32.const 3)
        )
       )
       (i32.store offset=4
        (local.tee $1
         (i32.add
          (local.get $0)
          (local.get $2)
         )
        )
        (i32.or
         (i32.load offset=4
          (local.get $1)
         )
         (i32.const 1)
        )
       )
      )
     )
     (br $folding-inner1)
    )
   )
   (block $folding-inner0
    (br_if $folding-inner0
     (i32.gt_u
      (local.tee $0
       (i32.load
        (i32.const 1220)
       )
      )
      (local.get $4)
     )
    )
    (local.set $0
     (local.get $18)
    )
    (if
     (i32.eqz
      (i32.load
       (i32.const 1680)
      )
     )
     (block
      (i32.store
       (i32.const 1688)
       (i32.const 4096)
      )
      (i32.store
       (i32.const 1684)
       (i32.const 4096)
      )
      (i32.store
       (i32.const 1692)
       (i32.const -1)
      )
      (i32.store
       (i32.const 1696)
       (i32.const -1)
      )
      (i32.store
       (i32.const 1700)
       (i32.const 0)
      )
      (i32.store
       (i32.const 1652)
       (i32.const 0)
      )
      (i32.store
       (local.get $0)
       (local.tee $0
        (i32.xor
         (i32.and
          (local.get $0)
          (i32.const -16)
         )
         (i32.const 1431655768)
        )
       )
      )
      (i32.store
       (i32.const 1680)
       (local.get $0)
      )
     )
    )
    (if
     (i32.le_u
      (local.tee $5
       (i32.and
        (local.tee $10
         (i32.add
          (local.tee $0
           (i32.load
            (i32.const 1688)
           )
          )
          (local.tee $6
           (i32.add
            (local.get $4)
            (i32.const 47)
           )
          )
         )
        )
        (local.tee $12
         (i32.sub
          (i32.const 0)
          (local.get $0)
         )
        )
       )
      )
      (local.get $4)
     )
     (block
      (global.set $r
       (local.get $18)
      )
      (return
       (i32.const 0)
      )
     )
    )
    (if
     (local.tee $0
      (i32.load
       (i32.const 1648)
      )
     )
     (if
      (i32.or
       (i32.le_u
        (local.tee $8
         (i32.add
          (local.get $5)
          (local.tee $2
           (i32.load
            (i32.const 1640)
           )
          )
         )
        )
        (local.get $2)
       )
       (i32.gt_u
        (local.get $8)
        (local.get $0)
       )
      )
      (block
       (global.set $r
        (local.get $18)
       )
       (return
        (i32.const 0)
       )
      )
     )
    )
    (local.set $22
     (i32.add
      (local.get $4)
      (i32.const 48)
     )
    )
    (if
     (i32.eq
      (local.tee $9
       (if (result i32)
        (i32.and
         (i32.load
          (i32.const 1652)
         )
         (i32.const 4)
        )
        (i32.const 188)
        (block $label$break$b (result i32)
         (if
          (local.tee $2
           (i32.load
            (i32.const 1232)
           )
          )
          (block $label$break$c
           (local.set $14
            (i32.const 1656)
           )
           (loop $while-in32
            (block $while-out31
             (if
              (i32.le_u
               (local.tee $8
                (i32.load
                 (local.get $14)
                )
               )
               (local.get $2)
              )
              (if
               (i32.gt_u
                (i32.add
                 (i32.load
                  (local.tee $0
                   (i32.add
                    (local.get $14)
                    (i32.const 4)
                   )
                  )
                 )
                 (local.get $8)
                )
                (local.get $2)
               )
               (block
                (local.set $8
                 (local.get $0)
                )
                (br $while-out31)
               )
              )
             )
             (br_if $while-in32
              (local.tee $14
               (i32.load offset=8
                (local.get $14)
               )
              )
             )
             (local.set $9
              (i32.const 171)
             )
             (br $label$break$c)
            )
           )
           (if
            (i32.lt_u
             (local.tee $2
              (i32.and
               (local.get $12)
               (i32.sub
                (local.get $10)
                (i32.load
                 (i32.const 1220)
                )
               )
              )
             )
             (i32.const 2147483647)
            )
            (block
             (local.set $0
              (call $ta
               (local.get $2)
              )
             )
             (if
              (i32.eq
               (i32.add
                (i32.load
                 (local.get $14)
                )
                (i32.load
                 (local.get $8)
                )
               )
               (local.get $0)
              )
              (if
               (i32.ne
                (local.get $0)
                (i32.const -1)
               )
               (block
                (local.set $3
                 (local.get $0)
                )
                (local.set $7
                 (local.get $2)
                )
                (br $label$break$b
                 (i32.const 191)
                )
               )
              )
              (block
               (local.set $24
                (local.get $0)
               )
               (local.set $1
                (local.get $2)
               )
               (local.set $9
                (i32.const 181)
               )
              )
             )
            )
           )
          )
          (local.set $9
           (i32.const 171)
          )
         )
         (if
          (i32.eq
           (local.get $9)
           (i32.const 171)
          )
          (if
           (i32.ne
            (local.tee $2
             (call $ta
              (i32.const 0)
             )
            )
            (i32.const -1)
           )
           (block $do-once33
            (local.set $8
             (i32.add
              (local.tee $0
               (if (result i32)
                (i32.and
                 (local.tee $0
                  (local.get $2)
                 )
                 (local.tee $10
                  (i32.add
                   (local.tee $8
                    (i32.load
                     (i32.const 1684)
                    )
                   )
                   (i32.const -1)
                  )
                 )
                )
                (i32.add
                 (i32.sub
                  (local.get $5)
                  (local.get $0)
                 )
                 (i32.and
                  (i32.add
                   (local.get $0)
                   (local.get $10)
                  )
                  (i32.sub
                   (i32.const 0)
                   (local.get $8)
                  )
                 )
                )
                (local.get $5)
               )
              )
              (local.tee $10
               (i32.load
                (i32.const 1640)
               )
              )
             )
            )
            (if
             (i32.and
              (i32.lt_u
               (local.get $0)
               (i32.const 2147483647)
              )
              (i32.gt_u
               (local.get $0)
               (local.get $4)
              )
             )
             (block
              (br_if $do-once33
               (select
                (local.tee $12
                 (i32.load
                  (i32.const 1648)
                 )
                )
                (i32.const 0)
                (i32.or
                 (i32.le_u
                  (local.get $8)
                  (local.get $10)
                 )
                 (i32.gt_u
                  (local.get $8)
                  (local.get $12)
                 )
                )
               )
              )
              (local.set $1
               (if (result i32)
                (i32.eq
                 (local.get $2)
                 (local.tee $24
                  (call $ta
                   (local.get $0)
                  )
                 )
                )
                (block
                 (local.set $3
                  (local.get $2)
                 )
                 (local.set $7
                  (local.get $0)
                 )
                 (br $label$break$b
                  (i32.const 191)
                 )
                )
                (block (result i32)
                 (local.set $9
                  (i32.const 181)
                 )
                 (local.get $0)
                )
               )
              )
             )
            )
           )
          )
         )
         (if
          (i32.eq
           (local.get $9)
           (i32.const 181)
          )
          (block $label$break$d
           (local.set $2
            (i32.sub
             (i32.const 0)
             (local.get $1)
            )
           )
           (if
            (i32.and
             (i32.and
              (i32.ne
               (local.get $24)
               (i32.const -1)
              )
              (i32.lt_u
               (local.get $1)
               (i32.const 2147483647)
              )
             )
             (i32.gt_u
              (local.get $22)
              (local.get $1)
             )
            )
            (if
             (i32.lt_u
              (local.tee $0
               (i32.and
                (i32.add
                 (local.tee $0
                  (i32.load
                   (i32.const 1688)
                  )
                 )
                 (i32.sub
                  (local.get $6)
                  (local.get $1)
                 )
                )
                (i32.sub
                 (i32.const 0)
                 (local.get $0)
                )
               )
              )
              (i32.const 2147483647)
             )
             (local.set $1
              (if (result i32)
               (i32.eq
                (call $ta
                 (local.get $0)
                )
                (i32.const -1)
               )
               (block
                (drop
                 (call $ta
                  (local.get $2)
                 )
                )
                (br $label$break$d)
               )
               (i32.add
                (local.get $0)
                (local.get $1)
               )
              )
             )
            )
           )
           (if
            (i32.ne
             (local.get $24)
             (i32.const -1)
            )
            (block
             (local.set $3
              (local.get $24)
             )
             (local.set $7
              (local.get $1)
             )
             (br $label$break$b
              (i32.const 191)
             )
            )
           )
          )
         )
         (i32.store
          (i32.const 1652)
          (i32.or
           (i32.load
            (i32.const 1652)
           )
           (i32.const 4)
          )
         )
         (i32.const 188)
        )
       )
      )
      (i32.const 188)
     )
     (if
      (i32.lt_u
       (local.get $5)
       (i32.const 2147483647)
      )
      (if
       (i32.and
        (i32.and
         (i32.ne
          (local.tee $0
           (call $ta
            (local.get $5)
           )
          )
          (i32.const -1)
         )
         (i32.ne
          (local.tee $1
           (call $ta
            (i32.const 0)
           )
          )
          (i32.const -1)
         )
        )
        (i32.lt_u
         (local.get $0)
         (local.get $1)
        )
       )
       (if
        (i32.gt_u
         (local.tee $1
          (i32.sub
           (local.get $1)
           (local.get $0)
          )
         )
         (i32.add
          (local.get $4)
          (i32.const 40)
         )
        )
        (block
         (local.set $7
          (local.get $1)
         )
         (local.set $9
          (i32.const 191)
         )
         (local.set $3
          (local.get $0)
         )
        )
       )
      )
     )
    )
    (if
     (i32.eq
      (local.get $9)
      (i32.const 191)
     )
     (block
      (i32.store
       (i32.const 1640)
       (local.tee $0
        (i32.add
         (local.get $7)
         (i32.load
          (i32.const 1640)
         )
        )
       )
      )
      (if
       (i32.gt_u
        (local.get $0)
        (i32.load
         (i32.const 1644)
        )
       )
       (i32.store
        (i32.const 1644)
        (local.get $0)
       )
      )
      (if
       (local.tee $6
        (i32.load
         (i32.const 1232)
        )
       )
       (block $do-once38
        (local.set $1
         (i32.const 1656)
        )
        (loop $do-in41
         (block $do-out40
          (if
           (i32.eq
            (i32.add
             (local.tee $0
              (i32.load
               (local.get $1)
              )
             )
             (local.tee $5
              (i32.load
               (local.tee $2
                (i32.add
                 (local.get $1)
                 (i32.const 4)
                )
               )
              )
             )
            )
            (local.get $3)
           )
           (block
            (local.set $41
             (local.get $0)
            )
            (local.set $42
             (local.get $2)
            )
            (local.set $43
             (local.get $5)
            )
            (local.set $44
             (local.get $1)
            )
            (local.set $9
             (i32.const 201)
            )
            (br $do-out40)
           )
          )
          (br_if $do-in41
           (local.tee $1
            (i32.load offset=8
             (local.get $1)
            )
           )
          )
         )
        )
        (if
         (i32.eq
          (local.get $9)
          (i32.const 201)
         )
         (if
          (i32.eqz
           (i32.and
            (i32.load offset=12
             (local.get $44)
            )
            (i32.const 8)
           )
          )
          (if
           (i32.and
            (i32.lt_u
             (local.get $6)
             (local.get $3)
            )
            (i32.ge_u
             (local.get $6)
             (local.get $41)
            )
           )
           (block
            (i32.store
             (local.get $42)
             (i32.add
              (local.get $7)
              (local.get $43)
             )
            )
            (local.set $0
             (i32.add
              (local.get $6)
              (local.tee $1
               (select
                (i32.and
                 (i32.sub
                  (i32.const 0)
                  (local.tee $0
                   (i32.add
                    (local.get $6)
                    (i32.const 8)
                   )
                  )
                 )
                 (i32.const 7)
                )
                (i32.const 0)
                (i32.and
                 (local.get $0)
                 (i32.const 7)
                )
               )
              )
             )
            )
            (local.set $1
             (i32.add
              (i32.load
               (i32.const 1220)
              )
              (i32.sub
               (local.get $7)
               (local.get $1)
              )
             )
            )
            (i32.store
             (i32.const 1232)
             (local.get $0)
            )
            (i32.store
             (i32.const 1220)
             (local.get $1)
            )
            (i32.store offset=4
             (local.get $0)
             (i32.or
              (local.get $1)
              (i32.const 1)
             )
            )
            (i32.store offset=4
             (i32.add
              (local.get $0)
              (local.get $1)
             )
             (i32.const 40)
            )
            (i32.store
             (i32.const 1236)
             (i32.load
              (i32.const 1696)
             )
            )
            (br $do-once38)
           )
          )
         )
        )
        (if
         (i32.lt_u
          (local.get $3)
          (local.tee $2
           (i32.load
            (i32.const 1224)
           )
          )
         )
         (block
          (i32.store
           (i32.const 1224)
           (local.get $3)
          )
          (local.set $2
           (local.get $3)
          )
         )
        )
        (local.set $0
         (i32.add
          (local.get $3)
          (local.get $7)
         )
        )
        (local.set $1
         (i32.const 1656)
        )
        (loop $while-in43
         (block $while-out42
          (if
           (i32.eq
            (local.get $0)
            (i32.load
             (local.get $1)
            )
           )
           (block
            (local.set $45
             (local.get $1)
            )
            (local.set $26
             (local.get $1)
            )
            (local.set $9
             (i32.const 209)
            )
            (br $while-out42)
           )
          )
          (br_if $while-in43
           (local.tee $1
            (i32.load offset=8
             (local.get $1)
            )
           )
          )
          (local.set $23
           (i32.const 1656)
          )
         )
        )
        (if
         (i32.eq
          (local.get $9)
          (i32.const 209)
         )
         (local.set $23
          (if (result i32)
           (i32.and
            (i32.load offset=12
             (local.get $26)
            )
            (i32.const 8)
           )
           (i32.const 1656)
           (block
            (i32.store
             (local.get $45)
             (local.get $3)
            )
            (i32.store offset=4
             (local.get $26)
             (i32.add
              (local.get $7)
              (i32.load offset=4
               (local.get $26)
              )
             )
            )
            (local.set $7
             (i32.add
              (local.get $4)
              (local.tee $10
               (i32.add
                (select
                 (i32.and
                  (i32.sub
                   (i32.const 0)
                   (local.tee $1
                    (i32.add
                     (local.get $3)
                     (i32.const 8)
                    )
                   )
                  )
                  (i32.const 7)
                 )
                 (i32.const 0)
                 (i32.and
                  (local.get $1)
                  (i32.const 7)
                 )
                )
                (local.get $3)
               )
              )
             )
            )
            (local.set $8
             (i32.sub
              (i32.sub
               (local.tee $5
                (i32.add
                 (select
                  (i32.and
                   (i32.sub
                    (i32.const 0)
                    (local.tee $1
                     (i32.add
                      (local.get $0)
                      (i32.const 8)
                     )
                    )
                   )
                   (i32.const 7)
                  )
                  (i32.const 0)
                  (i32.and
                   (local.get $1)
                   (i32.const 7)
                  )
                 )
                 (local.get $0)
                )
               )
               (local.get $10)
              )
              (local.get $4)
             )
            )
            (i32.store offset=4
             (local.get $10)
             (i32.or
              (local.get $4)
              (i32.const 3)
             )
            )
            (if
             (i32.eq
              (local.get $5)
              (local.get $6)
             )
             (block
              (i32.store
               (i32.const 1220)
               (local.tee $0
                (i32.add
                 (local.get $8)
                 (i32.load
                  (i32.const 1220)
                 )
                )
               )
              )
              (i32.store
               (i32.const 1232)
               (local.get $7)
              )
              (i32.store offset=4
               (local.get $7)
               (i32.or
                (local.get $0)
                (i32.const 1)
               )
              )
             )
             (block $do-once44
              (if
               (i32.eq
                (i32.load
                 (i32.const 1228)
                )
                (local.get $5)
               )
               (block
                (i32.store
                 (i32.const 1216)
                 (local.tee $0
                  (i32.add
                   (local.get $8)
                   (i32.load
                    (i32.const 1216)
                   )
                  )
                 )
                )
                (i32.store
                 (i32.const 1228)
                 (local.get $7)
                )
                (i32.store offset=4
                 (local.get $7)
                 (i32.or
                  (local.get $0)
                  (i32.const 1)
                 )
                )
                (i32.store
                 (i32.add
                  (local.get $0)
                  (local.get $7)
                 )
                 (local.get $0)
                )
                (br $do-once44)
               )
              )
              (local.set $4
               (if (result i32)
                (i32.eq
                 (i32.and
                  (local.tee $0
                   (i32.load offset=4
                    (local.get $5)
                   )
                  )
                  (i32.const 3)
                 )
                 (i32.const 1)
                )
                (block (result i32)
                 (local.set $12
                  (i32.and
                   (local.get $0)
                   (i32.const -8)
                  )
                 )
                 (local.set $3
                  (i32.shr_u
                   (local.get $0)
                   (i32.const 3)
                  )
                 )
                 (block $label$break$e
                  (if
                   (i32.lt_u
                    (local.get $0)
                    (i32.const 256)
                   )
                   (block
                    (local.set $1
                     (i32.load offset=12
                      (local.get $5)
                     )
                    )
                    (if
                     (i32.ne
                      (local.tee $4
                       (i32.load offset=8
                        (local.get $5)
                       )
                      )
                      (local.tee $0
                       (i32.add
                        (i32.shl
                         (local.get $3)
                         (i32.const 3)
                        )
                        (i32.const 1248)
                       )
                      )
                     )
                     (block $do-once47
                      (if
                       (i32.lt_u
                        (local.get $4)
                        (local.get $2)
                       )
                       (call $qa)
                      )
                      (br_if $do-once47
                       (i32.eq
                        (local.get $5)
                        (i32.load offset=12
                         (local.get $4)
                        )
                       )
                      )
                      (call $qa)
                     )
                    )
                    (if
                     (i32.eq
                      (local.get $1)
                      (local.get $4)
                     )
                     (block
                      (i32.store
                       (i32.const 1208)
                       (i32.and
                        (i32.load
                         (i32.const 1208)
                        )
                        (i32.xor
                         (i32.shl
                          (i32.const 1)
                          (local.get $3)
                         )
                         (i32.const -1)
                        )
                       )
                      )
                      (br $label$break$e)
                     )
                    )
                    (if
                     (i32.eq
                      (local.get $0)
                      (local.get $1)
                     )
                     (local.set $32
                      (i32.add
                       (local.get $1)
                       (i32.const 8)
                      )
                     )
                     (block $do-once49
                      (if
                       (i32.lt_u
                        (local.get $1)
                        (local.get $2)
                       )
                       (call $qa)
                      )
                      (if
                       (i32.eq
                        (local.get $5)
                        (i32.load
                         (local.tee $0
                          (i32.add
                           (local.get $1)
                           (i32.const 8)
                          )
                         )
                        )
                       )
                       (block
                        (local.set $32
                         (local.get $0)
                        )
                        (br $do-once49)
                       )
                      )
                      (call $qa)
                     )
                    )
                    (i32.store offset=12
                     (local.get $4)
                     (local.get $1)
                    )
                    (i32.store
                     (local.get $32)
                     (local.get $4)
                    )
                   )
                   (block
                    (local.set $6
                     (i32.load offset=24
                      (local.get $5)
                     )
                    )
                    (if
                     (i32.eq
                      (local.get $5)
                      (local.tee $0
                       (i32.load offset=12
                        (local.get $5)
                       )
                      )
                     )
                     (block $do-once51
                      (if
                       (local.tee $0
                        (i32.load
                         (local.tee $4
                          (i32.add
                           (local.tee $1
                            (i32.add
                             (local.get $5)
                             (i32.const 16)
                            )
                           )
                           (i32.const 4)
                          )
                         )
                        )
                       )
                       (local.set $1
                        (local.get $4)
                       )
                       (br_if $do-once51
                        (i32.eqz
                         (local.tee $0
                          (i32.load
                           (local.get $1)
                          )
                         )
                        )
                       )
                      )
                      (loop $while-in54
                       (if
                        (local.tee $3
                         (i32.load
                          (local.tee $4
                           (i32.add
                            (local.get $0)
                            (i32.const 20)
                           )
                          )
                         )
                        )
                        (block
                         (local.set $0
                          (local.get $3)
                         )
                         (local.set $1
                          (local.get $4)
                         )
                         (br $while-in54)
                        )
                       )
                       (if
                        (local.tee $3
                         (i32.load
                          (local.tee $4
                           (i32.add
                            (local.get $0)
                            (i32.const 16)
                           )
                          )
                         )
                        )
                        (block
                         (local.set $0
                          (local.get $3)
                         )
                         (local.set $1
                          (local.get $4)
                         )
                         (br $while-in54)
                        )
                       )
                      )
                      (if
                       (i32.lt_u
                        (local.get $1)
                        (local.get $2)
                       )
                       (call $qa)
                       (block
                        (i32.store
                         (local.get $1)
                         (i32.const 0)
                        )
                        (local.set $17
                         (local.get $0)
                        )
                       )
                      )
                     )
                     (block
                      (if
                       (i32.lt_u
                        (local.tee $1
                         (i32.load offset=8
                          (local.get $5)
                         )
                        )
                        (local.get $2)
                       )
                       (call $qa)
                      )
                      (if
                       (i32.ne
                        (local.get $5)
                        (i32.load offset=12
                         (local.get $1)
                        )
                       )
                       (call $qa)
                      )
                      (if
                       (i32.eq
                        (local.get $5)
                        (i32.load offset=8
                         (local.get $0)
                        )
                       )
                       (block
                        (i32.store offset=12
                         (local.get $1)
                         (local.get $0)
                        )
                        (i32.store offset=8
                         (local.get $0)
                         (local.get $1)
                        )
                        (local.set $17
                         (local.get $0)
                        )
                       )
                       (call $qa)
                      )
                     )
                    )
                    (br_if $label$break$e
                     (i32.eqz
                      (local.get $6)
                     )
                    )
                    (if
                     (i32.eq
                      (i32.load
                       (local.tee $1
                        (i32.add
                         (i32.shl
                          (local.tee $0
                           (i32.load offset=28
                            (local.get $5)
                           )
                          )
                          (i32.const 2)
                         )
                         (i32.const 1512)
                        )
                       )
                      )
                      (local.get $5)
                     )
                     (block $do-once55
                      (i32.store
                       (local.get $1)
                       (local.get $17)
                      )
                      (br_if $do-once55
                       (local.get $17)
                      )
                      (i32.store
                       (i32.const 1212)
                       (i32.and
                        (i32.load
                         (i32.const 1212)
                        )
                        (i32.xor
                         (i32.shl
                          (i32.const 1)
                          (local.get $0)
                         )
                         (i32.const -1)
                        )
                       )
                      )
                      (br $label$break$e)
                     )
                     (block
                      (if
                       (i32.lt_u
                        (local.get $6)
                        (i32.load
                         (i32.const 1224)
                        )
                       )
                       (call $qa)
                      )
                      (if
                       (i32.eq
                        (local.get $5)
                        (i32.load offset=16
                         (local.get $6)
                        )
                       )
                       (i32.store offset=16
                        (local.get $6)
                        (local.get $17)
                       )
                       (i32.store offset=20
                        (local.get $6)
                        (local.get $17)
                       )
                      )
                      (br_if $label$break$e
                       (i32.eqz
                        (local.get $17)
                       )
                      )
                     )
                    )
                    (if
                     (i32.lt_u
                      (local.get $17)
                      (local.tee $1
                       (i32.load
                        (i32.const 1224)
                       )
                      )
                     )
                     (call $qa)
                    )
                    (i32.store offset=24
                     (local.get $17)
                     (local.get $6)
                    )
                    (if
                     (local.tee $0
                      (i32.load offset=16
                       (local.get $5)
                      )
                     )
                     (if
                      (i32.lt_u
                       (local.get $0)
                       (local.get $1)
                      )
                      (call $qa)
                      (block
                       (i32.store offset=16
                        (local.get $17)
                        (local.get $0)
                       )
                       (i32.store offset=24
                        (local.get $0)
                        (local.get $17)
                       )
                      )
                     )
                    )
                    (br_if $label$break$e
                     (i32.eqz
                      (local.tee $0
                       (i32.load offset=20
                        (local.get $5)
                       )
                      )
                     )
                    )
                    (if
                     (i32.lt_u
                      (local.get $0)
                      (i32.load
                       (i32.const 1224)
                      )
                     )
                     (call $qa)
                     (block
                      (i32.store offset=20
                       (local.get $17)
                       (local.get $0)
                      )
                      (i32.store offset=24
                       (local.get $0)
                       (local.get $17)
                      )
                     )
                    )
                   )
                  )
                 )
                 (local.set $5
                  (i32.add
                   (local.get $5)
                   (local.get $12)
                  )
                 )
                 (i32.add
                  (local.get $8)
                  (local.get $12)
                 )
                )
                (local.get $8)
               )
              )
              (i32.store offset=4
               (local.get $5)
               (i32.and
                (i32.load offset=4
                 (local.get $5)
                )
                (i32.const -2)
               )
              )
              (i32.store offset=4
               (local.get $7)
               (i32.or
                (local.get $4)
                (i32.const 1)
               )
              )
              (i32.store
               (i32.add
                (local.get $4)
                (local.get $7)
               )
               (local.get $4)
              )
              (local.set $1
               (i32.shr_u
                (local.get $4)
                (i32.const 3)
               )
              )
              (if
               (i32.lt_u
                (local.get $4)
                (i32.const 256)
               )
               (block
                (local.set $0
                 (i32.add
                  (i32.shl
                   (local.get $1)
                   (i32.const 3)
                  )
                  (i32.const 1248)
                 )
                )
                (if
                 (i32.and
                  (local.tee $4
                   (i32.load
                    (i32.const 1208)
                   )
                  )
                  (local.tee $1
                   (i32.shl
                    (i32.const 1)
                    (local.get $1)
                   )
                  )
                 )
                 (block $do-once59
                  (if
                   (i32.ge_u
                    (local.tee $4
                     (i32.load
                      (local.tee $1
                       (i32.add
                        (local.get $0)
                        (i32.const 8)
                       )
                      )
                     )
                    )
                    (i32.load
                     (i32.const 1224)
                    )
                   )
                   (block
                    (local.set $33
                     (local.get $1)
                    )
                    (local.set $27
                     (local.get $4)
                    )
                    (br $do-once59)
                   )
                  )
                  (call $qa)
                 )
                 (block
                  (i32.store
                   (i32.const 1208)
                   (i32.or
                    (local.get $1)
                    (local.get $4)
                   )
                  )
                  (local.set $33
                   (i32.add
                    (local.get $0)
                    (i32.const 8)
                   )
                  )
                  (local.set $27
                   (local.get $0)
                  )
                 )
                )
                (i32.store
                 (local.get $33)
                 (local.get $7)
                )
                (i32.store offset=12
                 (local.get $27)
                 (local.get $7)
                )
                (i32.store offset=8
                 (local.get $7)
                 (local.get $27)
                )
                (i32.store offset=12
                 (local.get $7)
                 (local.get $0)
                )
                (br $do-once44)
               )
              )
              (local.set $1
               (i32.add
                (i32.shl
                 (local.tee $0
                  (if (result i32)
                   (local.tee $0
                    (i32.shr_u
                     (local.get $4)
                     (i32.const 8)
                    )
                   )
                   (if (result i32)
                    (i32.gt_u
                     (local.get $4)
                     (i32.const 16777215)
                    )
                    (i32.const 31)
                    (block (result i32)
                     (local.set $0
                      (i32.and
                       (i32.shr_u
                        (i32.add
                         (local.tee $3
                          (i32.shl
                           (local.get $0)
                           (local.tee $1
                            (i32.and
                             (i32.shr_u
                              (i32.add
                               (local.get $0)
                               (i32.const 1048320)
                              )
                              (i32.const 16)
                             )
                             (i32.const 8)
                            )
                           )
                          )
                         )
                         (i32.const 520192)
                        )
                        (i32.const 16)
                       )
                       (i32.const 4)
                      )
                     )
                     (i32.or
                      (i32.and
                       (i32.shr_u
                        (local.get $4)
                        (i32.add
                         (local.tee $0
                          (i32.add
                           (i32.sub
                            (i32.const 14)
                            (i32.or
                             (local.tee $2
                              (i32.and
                               (i32.shr_u
                                (i32.add
                                 (local.tee $3
                                  (i32.shl
                                   (local.get $3)
                                   (local.get $0)
                                  )
                                 )
                                 (i32.const 245760)
                                )
                                (i32.const 16)
                               )
                               (i32.const 2)
                              )
                             )
                             (i32.or
                              (local.get $0)
                              (local.get $1)
                             )
                            )
                           )
                           (i32.shr_u
                            (i32.shl
                             (local.get $3)
                             (local.get $2)
                            )
                            (i32.const 15)
                           )
                          )
                         )
                         (i32.const 7)
                        )
                       )
                       (i32.const 1)
                      )
                      (i32.shl
                       (local.get $0)
                       (i32.const 1)
                      )
                     )
                    )
                   )
                   (i32.const 0)
                  )
                 )
                 (i32.const 2)
                )
                (i32.const 1512)
               )
              )
              (i32.store offset=28
               (local.get $7)
               (local.get $0)
              )
              (i32.store offset=20
               (local.get $7)
               (i32.const 0)
              )
              (i32.store offset=16
               (local.get $7)
               (i32.const 0)
              )
              (if
               (i32.eqz
                (i32.and
                 (local.tee $3
                  (i32.load
                   (i32.const 1212)
                  )
                 )
                 (local.tee $2
                  (i32.shl
                   (i32.const 1)
                   (local.get $0)
                  )
                 )
                )
               )
               (block
                (i32.store
                 (i32.const 1212)
                 (i32.or
                  (local.get $2)
                  (local.get $3)
                 )
                )
                (i32.store
                 (local.get $1)
                 (local.get $7)
                )
                (i32.store offset=24
                 (local.get $7)
                 (local.get $1)
                )
                (i32.store offset=12
                 (local.get $7)
                 (local.get $7)
                )
                (i32.store offset=8
                 (local.get $7)
                 (local.get $7)
                )
                (br $do-once44)
               )
              )
              (local.set $14
               (i32.shl
                (local.get $4)
                (select
                 (i32.const 0)
                 (i32.sub
                  (i32.const 25)
                  (i32.shr_u
                   (local.get $0)
                   (i32.const 1)
                  )
                 )
                 (i32.eq
                  (local.get $0)
                  (i32.const 31)
                 )
                )
               )
              )
              (local.set $0
               (i32.load
                (local.get $1)
               )
              )
              (if
               (i32.eq
                (local.tee $9
                 (loop $while-in64 (result i32)
                  (block $while-out63 (result i32)
                   (if
                    (i32.eq
                     (local.get $4)
                     (i32.and
                      (i32.load offset=4
                       (local.get $0)
                      )
                      (i32.const -8)
                     )
                    )
                    (block
                     (local.set $34
                      (local.get $0)
                     )
                     (br $while-out63
                      (i32.const 279)
                     )
                    )
                   )
                   (if (result i32)
                    (local.tee $1
                     (i32.load
                      (local.tee $3
                       (i32.add
                        (i32.add
                         (local.get $0)
                         (i32.const 16)
                        )
                        (i32.shl
                         (i32.shr_u
                          (local.get $14)
                          (i32.const 31)
                         )
                         (i32.const 2)
                        )
                       )
                      )
                     )
                    )
                    (block
                     (local.set $14
                      (i32.shl
                       (local.get $14)
                       (i32.const 1)
                      )
                     )
                     (local.set $0
                      (local.get $1)
                     )
                     (br $while-in64)
                    )
                    (block (result i32)
                     (local.set $35
                      (local.get $3)
                     )
                     (local.set $46
                      (local.get $0)
                     )
                     (i32.const 276)
                    )
                   )
                  )
                 )
                )
                (i32.const 276)
               )
               (if
                (i32.lt_u
                 (local.get $35)
                 (i32.load
                  (i32.const 1224)
                 )
                )
                (call $qa)
                (block
                 (i32.store
                  (local.get $35)
                  (local.get $7)
                 )
                 (i32.store offset=24
                  (local.get $7)
                  (local.get $46)
                 )
                 (i32.store offset=12
                  (local.get $7)
                  (local.get $7)
                 )
                 (i32.store offset=8
                  (local.get $7)
                  (local.get $7)
                 )
                )
               )
               (if
                (i32.eq
                 (local.get $9)
                 (i32.const 279)
                )
                (if
                 (i32.and
                  (i32.ge_u
                   (local.tee $1
                    (i32.load offset=8
                     (local.tee $0
                      (local.get $34)
                     )
                    )
                   )
                   (local.tee $4
                    (i32.load
                     (i32.const 1224)
                    )
                   )
                  )
                  (i32.ge_u
                   (local.get $0)
                   (local.get $4)
                  )
                 )
                 (block
                  (i32.store offset=12
                   (local.get $1)
                   (local.get $7)
                  )
                  (i32.store offset=8
                   (local.get $0)
                   (local.get $7)
                  )
                  (i32.store offset=8
                   (local.get $7)
                   (local.get $1)
                  )
                  (i32.store offset=12
                   (local.get $7)
                   (local.get $34)
                  )
                  (i32.store offset=24
                   (local.get $7)
                   (i32.const 0)
                  )
                 )
                 (call $qa)
                )
               )
              )
             )
            )
            (global.set $r
             (local.get $18)
            )
            (return
             (i32.add
              (local.get $10)
              (i32.const 8)
             )
            )
           )
          )
         )
        )
        (loop $while-in66
         (block $while-out65
          (if
           (i32.le_u
            (local.tee $0
             (i32.load
              (local.get $23)
             )
            )
            (local.get $6)
           )
           (br_if $while-out65
            (i32.gt_u
             (local.tee $0
              (i32.add
               (i32.load offset=4
                (local.get $23)
               )
               (local.get $0)
              )
             )
             (local.get $6)
            )
           )
          )
          (local.set $23
           (i32.load offset=8
            (local.get $23)
           )
          )
          (br $while-in66)
         )
        )
        (i32.store
         (i32.const 1232)
         (local.tee $1
          (i32.add
           (local.get $3)
           (local.tee $2
            (select
             (i32.and
              (i32.sub
               (i32.const 0)
               (local.tee $1
                (i32.add
                 (local.get $3)
                 (i32.const 8)
                )
               )
              )
              (i32.const 7)
             )
             (i32.const 0)
             (i32.and
              (local.get $1)
              (i32.const 7)
             )
            )
           )
          )
         )
        )
        (i32.store
         (i32.const 1220)
         (local.tee $2
          (i32.sub
           (i32.add
            (local.get $7)
            (i32.const -40)
           )
           (local.get $2)
          )
         )
        )
        (i32.store offset=4
         (local.get $1)
         (i32.or
          (local.get $2)
          (i32.const 1)
         )
        )
        (i32.store offset=4
         (i32.add
          (local.get $1)
          (local.get $2)
         )
         (i32.const 40)
        )
        (i32.store
         (i32.const 1236)
         (i32.load
          (i32.const 1696)
         )
        )
        (i32.store offset=4
         (local.tee $2
          (select
           (local.get $6)
           (local.tee $1
            (i32.add
             (select
              (i32.and
               (i32.sub
                (i32.const 0)
                (local.tee $2
                 (i32.add
                  (local.tee $1
                   (i32.add
                    (local.get $0)
                    (i32.const -47)
                   )
                  )
                  (i32.const 8)
                 )
                )
               )
               (i32.const 7)
              )
              (i32.const 0)
              (i32.and
               (local.get $2)
               (i32.const 7)
              )
             )
             (local.get $1)
            )
           )
           (i32.lt_u
            (local.get $1)
            (local.tee $8
             (i32.add
              (local.get $6)
              (i32.const 16)
             )
            )
           )
          )
         )
         (i32.const 27)
        )
        (i32.store offset=8
         (local.get $2)
         (i32.load
          (i32.const 1656)
         )
        )
        (i32.store offset=12
         (local.get $2)
         (i32.load
          (i32.const 1660)
         )
        )
        (i32.store offset=16
         (local.get $2)
         (i32.load
          (i32.const 1664)
         )
        )
        (i32.store offset=20
         (local.get $2)
         (i32.load
          (i32.const 1668)
         )
        )
        (i32.store
         (i32.const 1656)
         (local.get $3)
        )
        (i32.store
         (i32.const 1660)
         (local.get $7)
        )
        (i32.store
         (i32.const 1668)
         (i32.const 0)
        )
        (i32.store
         (i32.const 1664)
         (i32.add
          (local.get $2)
          (i32.const 8)
         )
        )
        (local.set $1
         (i32.add
          (local.get $2)
          (i32.const 24)
         )
        )
        (loop $do-in68
         (i32.store
          (local.tee $1
           (i32.add
            (local.get $1)
            (i32.const 4)
           )
          )
          (i32.const 7)
         )
         (br_if $do-in68
          (i32.lt_u
           (i32.add
            (local.get $1)
            (i32.const 4)
           )
           (local.get $0)
          )
         )
        )
        (if
         (i32.ne
          (local.get $2)
          (local.get $6)
         )
         (block
          (i32.store offset=4
           (local.get $2)
           (i32.and
            (i32.load offset=4
             (local.get $2)
            )
            (i32.const -2)
           )
          )
          (i32.store offset=4
           (local.get $6)
           (i32.or
            (local.tee $5
             (i32.sub
              (local.get $2)
              (local.get $6)
             )
            )
            (i32.const 1)
           )
          )
          (i32.store
           (local.get $2)
           (local.get $5)
          )
          (local.set $1
           (i32.shr_u
            (local.get $5)
            (i32.const 3)
           )
          )
          (if
           (i32.lt_u
            (local.get $5)
            (i32.const 256)
           )
           (block
            (local.set $0
             (i32.add
              (i32.shl
               (local.get $1)
               (i32.const 3)
              )
              (i32.const 1248)
             )
            )
            (if
             (i32.and
              (local.tee $3
               (i32.load
                (i32.const 1208)
               )
              )
              (local.tee $1
               (i32.shl
                (i32.const 1)
                (local.get $1)
               )
              )
             )
             (if
              (i32.lt_u
               (local.tee $3
                (i32.load
                 (local.tee $1
                  (i32.add
                   (local.get $0)
                   (i32.const 8)
                  )
                 )
                )
               )
               (i32.load
                (i32.const 1224)
               )
              )
              (call $qa)
              (block
               (local.set $36
                (local.get $1)
               )
               (local.set $28
                (local.get $3)
               )
              )
             )
             (block
              (i32.store
               (i32.const 1208)
               (i32.or
                (local.get $1)
                (local.get $3)
               )
              )
              (local.set $36
               (i32.add
                (local.get $0)
                (i32.const 8)
               )
              )
              (local.set $28
               (local.get $0)
              )
             )
            )
            (i32.store
             (local.get $36)
             (local.get $6)
            )
            (i32.store offset=12
             (local.get $28)
             (local.get $6)
            )
            (i32.store offset=8
             (local.get $6)
             (local.get $28)
            )
            (i32.store offset=12
             (local.get $6)
             (local.get $0)
            )
            (br $do-once38)
           )
          )
          (local.set $3
           (i32.add
            (i32.shl
             (local.tee $0
              (if (result i32)
               (local.tee $0
                (i32.shr_u
                 (local.get $5)
                 (i32.const 8)
                )
               )
               (if (result i32)
                (i32.gt_u
                 (local.get $5)
                 (i32.const 16777215)
                )
                (i32.const 31)
                (block (result i32)
                 (local.set $0
                  (i32.and
                   (i32.shr_u
                    (i32.add
                     (local.tee $3
                      (i32.shl
                       (local.get $0)
                       (local.tee $1
                        (i32.and
                         (i32.shr_u
                          (i32.add
                           (local.get $0)
                           (i32.const 1048320)
                          )
                          (i32.const 16)
                         )
                         (i32.const 8)
                        )
                       )
                      )
                     )
                     (i32.const 520192)
                    )
                    (i32.const 16)
                   )
                   (i32.const 4)
                  )
                 )
                 (i32.or
                  (i32.and
                   (i32.shr_u
                    (local.get $5)
                    (i32.add
                     (local.tee $0
                      (i32.add
                       (i32.sub
                        (i32.const 14)
                        (i32.or
                         (local.tee $2
                          (i32.and
                           (i32.shr_u
                            (i32.add
                             (local.tee $3
                              (i32.shl
                               (local.get $3)
                               (local.get $0)
                              )
                             )
                             (i32.const 245760)
                            )
                            (i32.const 16)
                           )
                           (i32.const 2)
                          )
                         )
                         (i32.or
                          (local.get $0)
                          (local.get $1)
                         )
                        )
                       )
                       (i32.shr_u
                        (i32.shl
                         (local.get $3)
                         (local.get $2)
                        )
                        (i32.const 15)
                       )
                      )
                     )
                     (i32.const 7)
                    )
                   )
                   (i32.const 1)
                  )
                  (i32.shl
                   (local.get $0)
                   (i32.const 1)
                  )
                 )
                )
               )
               (i32.const 0)
              )
             )
             (i32.const 2)
            )
            (i32.const 1512)
           )
          )
          (i32.store offset=28
           (local.get $6)
           (local.get $0)
          )
          (i32.store offset=20
           (local.get $6)
           (i32.const 0)
          )
          (i32.store
           (local.get $8)
           (i32.const 0)
          )
          (if
           (i32.eqz
            (i32.and
             (local.tee $1
              (i32.load
               (i32.const 1212)
              )
             )
             (local.tee $2
              (i32.shl
               (i32.const 1)
               (local.get $0)
              )
             )
            )
           )
           (block
            (i32.store
             (i32.const 1212)
             (i32.or
              (local.get $1)
              (local.get $2)
             )
            )
            (i32.store
             (local.get $3)
             (local.get $6)
            )
            (i32.store offset=24
             (local.get $6)
             (local.get $3)
            )
            (i32.store offset=12
             (local.get $6)
             (local.get $6)
            )
            (i32.store offset=8
             (local.get $6)
             (local.get $6)
            )
            (br $do-once38)
           )
          )
          (local.set $1
           (i32.shl
            (local.get $5)
            (select
             (i32.const 0)
             (i32.sub
              (i32.const 25)
              (i32.shr_u
               (local.get $0)
               (i32.const 1)
              )
             )
             (i32.eq
              (local.get $0)
              (i32.const 31)
             )
            )
           )
          )
          (local.set $0
           (i32.load
            (local.get $3)
           )
          )
          (if
           (i32.eq
            (local.tee $9
             (loop $while-in70 (result i32)
              (block $while-out69 (result i32)
               (if
                (i32.eq
                 (local.get $5)
                 (i32.and
                  (i32.load offset=4
                   (local.get $0)
                  )
                  (i32.const -8)
                 )
                )
                (block
                 (local.set $37
                  (local.get $0)
                 )
                 (br $while-out69
                  (i32.const 305)
                 )
                )
               )
               (if (result i32)
                (local.tee $3
                 (i32.load
                  (local.tee $2
                   (i32.add
                    (i32.add
                     (local.get $0)
                     (i32.const 16)
                    )
                    (i32.shl
                     (i32.shr_u
                      (local.get $1)
                      (i32.const 31)
                     )
                     (i32.const 2)
                    )
                   )
                  )
                 )
                )
                (block
                 (local.set $1
                  (i32.shl
                   (local.get $1)
                   (i32.const 1)
                  )
                 )
                 (local.set $0
                  (local.get $3)
                 )
                 (br $while-in70)
                )
                (block (result i32)
                 (local.set $38
                  (local.get $2)
                 )
                 (local.set $47
                  (local.get $0)
                 )
                 (i32.const 302)
                )
               )
              )
             )
            )
            (i32.const 302)
           )
           (if
            (i32.lt_u
             (local.get $38)
             (i32.load
              (i32.const 1224)
             )
            )
            (call $qa)
            (block
             (i32.store
              (local.get $38)
              (local.get $6)
             )
             (i32.store offset=24
              (local.get $6)
              (local.get $47)
             )
             (i32.store offset=12
              (local.get $6)
              (local.get $6)
             )
             (i32.store offset=8
              (local.get $6)
              (local.get $6)
             )
            )
           )
           (if
            (i32.eq
             (local.get $9)
             (i32.const 305)
            )
            (if
             (i32.and
              (i32.ge_u
               (local.tee $1
                (i32.load offset=8
                 (local.tee $0
                  (local.get $37)
                 )
                )
               )
               (local.tee $3
                (i32.load
                 (i32.const 1224)
                )
               )
              )
              (i32.ge_u
               (local.get $0)
               (local.get $3)
              )
             )
             (block
              (i32.store offset=12
               (local.get $1)
               (local.get $6)
              )
              (i32.store offset=8
               (local.get $0)
               (local.get $6)
              )
              (i32.store offset=8
               (local.get $6)
               (local.get $1)
              )
              (i32.store offset=12
               (local.get $6)
               (local.get $37)
              )
              (i32.store offset=24
               (local.get $6)
               (i32.const 0)
              )
             )
             (call $qa)
            )
           )
          )
         )
        )
       )
       (block
        (if
         (i32.or
          (i32.eqz
           (local.tee $0
            (i32.load
             (i32.const 1224)
            )
           )
          )
          (i32.lt_u
           (local.get $3)
           (local.get $0)
          )
         )
         (i32.store
          (i32.const 1224)
          (local.get $3)
         )
        )
        (i32.store
         (i32.const 1656)
         (local.get $3)
        )
        (i32.store
         (i32.const 1660)
         (local.get $7)
        )
        (i32.store
         (i32.const 1668)
         (i32.const 0)
        )
        (i32.store
         (i32.const 1244)
         (i32.load
          (i32.const 1680)
         )
        )
        (i32.store
         (i32.const 1240)
         (i32.const -1)
        )
        (local.set $1
         (i32.const 0)
        )
        (loop $do-in
         (i32.store offset=12
          (local.tee $0
           (i32.add
            (i32.shl
             (local.get $1)
             (i32.const 3)
            )
            (i32.const 1248)
           )
          )
          (local.get $0)
         )
         (i32.store offset=8
          (local.get $0)
          (local.get $0)
         )
         (br_if $do-in
          (i32.ne
           (local.tee $1
            (i32.add
             (local.get $1)
             (i32.const 1)
            )
           )
           (i32.const 32)
          )
         )
        )
        (i32.store
         (i32.const 1232)
         (local.tee $0
          (i32.add
           (local.get $3)
           (local.tee $1
            (select
             (i32.and
              (i32.sub
               (i32.const 0)
               (local.tee $0
                (i32.add
                 (local.get $3)
                 (i32.const 8)
                )
               )
              )
              (i32.const 7)
             )
             (i32.const 0)
             (i32.and
              (local.get $0)
              (i32.const 7)
             )
            )
           )
          )
         )
        )
        (i32.store
         (i32.const 1220)
         (local.tee $1
          (i32.sub
           (i32.add
            (local.get $7)
            (i32.const -40)
           )
           (local.get $1)
          )
         )
        )
        (i32.store offset=4
         (local.get $0)
         (i32.or
          (local.get $1)
          (i32.const 1)
         )
        )
        (i32.store offset=4
         (i32.add
          (local.get $0)
          (local.get $1)
         )
         (i32.const 40)
        )
        (i32.store
         (i32.const 1236)
         (i32.load
          (i32.const 1696)
         )
        )
       )
      )
      (br_if $folding-inner0
       (i32.gt_u
        (local.tee $0
         (i32.load
          (i32.const 1220)
         )
        )
        (local.get $4)
       )
      )
     )
    )
    (i32.store
     (call $Qa)
     (i32.const 12)
    )
    (global.set $r
     (local.get $18)
    )
    (return
     (i32.const 0)
    )
   )
   (i32.store
    (i32.const 1220)
    (local.tee $1
     (i32.sub
      (local.get $0)
      (local.get $4)
     )
    )
   )
   (i32.store
    (i32.const 1232)
    (local.tee $3
     (i32.add
      (local.get $4)
      (local.tee $0
       (i32.load
        (i32.const 1232)
       )
      )
     )
    )
   )
   (i32.store offset=4
    (local.get $3)
    (i32.or
     (local.get $1)
     (i32.const 1)
    )
   )
   (i32.store offset=4
    (local.get $0)
    (i32.or
     (local.get $4)
     (i32.const 3)
    )
   )
  )
  (global.set $r
   (local.get $18)
  )
  (i32.add
   (local.get $0)
   (i32.const 8)
  )
 )
 (func $fb (; 14 ;) (; has Stack IR ;) (param $0 i32)
  (local $1 i32)
  (local $2 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 $15 i32)
  (local $16 i32)
  (local $17 i32)
  (local $18 i32)
  (if
   (i32.eqz
    (local.get $0)
   )
   (return)
  )
  (if
   (i32.lt_u
    (local.tee $3
     (i32.add
      (local.get $0)
      (i32.const -8)
     )
    )
    (local.tee $13
     (i32.load
      (i32.const 1224)
     )
    )
   )
   (call $qa)
  )
  (if
   (i32.eq
    (local.tee $9
     (i32.and
      (local.tee $0
       (i32.load
        (i32.add
         (local.get $0)
         (i32.const -4)
        )
       )
      )
      (i32.const 3)
     )
    )
    (i32.const 1)
   )
   (call $qa)
  )
  (local.set $6
   (i32.add
    (local.get $3)
    (local.tee $4
     (i32.and
      (local.get $0)
      (i32.const -8)
     )
    )
   )
  )
  (if
   (i32.and
    (local.get $0)
    (i32.const 1)
   )
   (block
    (local.set $2
     (local.get $3)
    )
    (local.set $1
     (local.get $4)
    )
   )
   (block $do-once
    (if
     (i32.eqz
      (local.get $9)
     )
     (return)
    )
    (if
     (i32.lt_u
      (local.tee $0
       (i32.sub
        (local.get $3)
        (local.tee $9
         (i32.load
          (local.get $3)
         )
        )
       )
      )
      (local.get $13)
     )
     (call $qa)
    )
    (local.set $3
     (i32.add
      (local.get $4)
      (local.get $9)
     )
    )
    (if
     (i32.eq
      (i32.load
       (i32.const 1228)
      )
      (local.get $0)
     )
     (block
      (if
       (i32.ne
        (i32.and
         (local.tee $1
          (i32.load offset=4
           (local.get $6)
          )
         )
         (i32.const 3)
        )
        (i32.const 3)
       )
       (block
        (local.set $2
         (local.get $0)
        )
        (local.set $1
         (local.get $3)
        )
        (br $do-once)
       )
      )
      (i32.store
       (i32.const 1216)
       (local.get $3)
      )
      (i32.store offset=4
       (local.get $6)
       (i32.and
        (local.get $1)
        (i32.const -2)
       )
      )
      (i32.store offset=4
       (local.get $0)
       (i32.or
        (local.get $3)
        (i32.const 1)
       )
      )
      (i32.store
       (i32.add
        (local.get $0)
        (local.get $3)
       )
       (local.get $3)
      )
      (return)
     )
    )
    (local.set $11
     (i32.shr_u
      (local.get $9)
      (i32.const 3)
     )
    )
    (if
     (i32.lt_u
      (local.get $9)
      (i32.const 256)
     )
     (block
      (local.set $2
       (i32.load offset=12
        (local.get $0)
       )
      )
      (if
       (i32.ne
        (local.tee $4
         (i32.load offset=8
          (local.get $0)
         )
        )
        (local.tee $1
         (i32.add
          (i32.shl
           (local.get $11)
           (i32.const 3)
          )
          (i32.const 1248)
         )
        )
       )
       (block
        (if
         (i32.lt_u
          (local.get $4)
          (local.get $13)
         )
         (call $qa)
        )
        (if
         (i32.ne
          (local.get $0)
          (i32.load offset=12
           (local.get $4)
          )
         )
         (call $qa)
        )
       )
      )
      (if
       (i32.eq
        (local.get $2)
        (local.get $4)
       )
       (block
        (i32.store
         (i32.const 1208)
         (i32.and
          (i32.load
           (i32.const 1208)
          )
          (i32.xor
           (i32.shl
            (i32.const 1)
            (local.get $11)
           )
           (i32.const -1)
          )
         )
        )
        (local.set $2
         (local.get $0)
        )
        (local.set $1
         (local.get $3)
        )
        (br $do-once)
       )
      )
      (if
       (i32.eq
        (local.get $1)
        (local.get $2)
       )
       (local.set $5
        (i32.add
         (local.get $2)
         (i32.const 8)
        )
       )
       (block
        (if
         (i32.lt_u
          (local.get $2)
          (local.get $13)
         )
         (call $qa)
        )
        (if
         (i32.eq
          (local.get $0)
          (i32.load
           (local.tee $1
            (i32.add
             (local.get $2)
             (i32.const 8)
            )
           )
          )
         )
         (local.set $5
          (local.get $1)
         )
         (call $qa)
        )
       )
      )
      (i32.store offset=12
       (local.get $4)
       (local.get $2)
      )
      (i32.store
       (local.get $5)
       (local.get $4)
      )
      (local.set $2
       (local.get $0)
      )
      (local.set $1
       (local.get $3)
      )
      (br $do-once)
     )
    )
    (local.set $12
     (i32.load offset=24
      (local.get $0)
     )
    )
    (if
     (i32.eq
      (local.get $0)
      (local.tee $4
       (i32.load offset=12
        (local.get $0)
       )
      )
     )
     (block $do-once0
      (if
       (local.tee $4
        (i32.load
         (local.tee $9
          (i32.add
           (local.tee $5
            (i32.add
             (local.get $0)
             (i32.const 16)
            )
           )
           (i32.const 4)
          )
         )
        )
       )
       (local.set $5
        (local.get $9)
       )
       (br_if $do-once0
        (i32.eqz
         (local.tee $4
          (i32.load
           (local.get $5)
          )
         )
        )
       )
      )
      (loop $while-in
       (if
        (local.tee $11
         (i32.load
          (local.tee $9
           (i32.add
            (local.get $4)
            (i32.const 20)
           )
          )
         )
        )
        (block
         (local.set $4
          (local.get $11)
         )
         (local.set $5
          (local.get $9)
         )
         (br $while-in)
        )
       )
       (if
        (local.tee $11
         (i32.load
          (local.tee $9
           (i32.add
            (local.get $4)
            (i32.const 16)
           )
          )
         )
        )
        (block
         (local.set $4
          (local.get $11)
         )
         (local.set $5
          (local.get $9)
         )
         (br $while-in)
        )
       )
      )
      (if
       (i32.lt_u
        (local.get $5)
        (local.get $13)
       )
       (call $qa)
       (block
        (i32.store
         (local.get $5)
         (i32.const 0)
        )
        (local.set $7
         (local.get $4)
        )
       )
      )
     )
     (block
      (if
       (i32.lt_u
        (local.tee $5
         (i32.load offset=8
          (local.get $0)
         )
        )
        (local.get $13)
       )
       (call $qa)
      )
      (if
       (i32.ne
        (local.get $0)
        (i32.load offset=12
         (local.get $5)
        )
       )
       (call $qa)
      )
      (if
       (i32.eq
        (local.get $0)
        (i32.load offset=8
         (local.get $4)
        )
       )
       (block
        (i32.store offset=12
         (local.get $5)
         (local.get $4)
        )
        (i32.store offset=8
         (local.get $4)
         (local.get $5)
        )
        (local.set $7
         (local.get $4)
        )
       )
       (call $qa)
      )
     )
    )
    (if
     (local.get $12)
     (block
      (if
       (i32.eq
        (i32.load
         (local.tee $5
          (i32.add
           (i32.shl
            (local.tee $4
             (i32.load offset=28
              (local.get $0)
             )
            )
            (i32.const 2)
           )
           (i32.const 1512)
          )
         )
        )
        (local.get $0)
       )
       (block
        (i32.store
         (local.get $5)
         (local.get $7)
        )
        (if
         (i32.eqz
          (local.get $7)
         )
         (block
          (i32.store
           (i32.const 1212)
           (i32.and
            (i32.load
             (i32.const 1212)
            )
            (i32.xor
             (i32.shl
              (i32.const 1)
              (local.get $4)
             )
             (i32.const -1)
            )
           )
          )
          (local.set $2
           (local.get $0)
          )
          (local.set $1
           (local.get $3)
          )
          (br $do-once)
         )
        )
       )
       (block
        (if
         (i32.lt_u
          (local.get $12)
          (i32.load
           (i32.const 1224)
          )
         )
         (call $qa)
        )
        (if
         (i32.eq
          (local.get $0)
          (i32.load offset=16
           (local.get $12)
          )
         )
         (i32.store offset=16
          (local.get $12)
          (local.get $7)
         )
         (i32.store offset=20
          (local.get $12)
          (local.get $7)
         )
        )
        (if
         (i32.eqz
          (local.get $7)
         )
         (block
          (local.set $2
           (local.get $0)
          )
          (local.set $1
           (local.get $3)
          )
          (br $do-once)
         )
        )
       )
      )
      (if
       (i32.lt_u
        (local.get $7)
        (local.tee $5
         (i32.load
          (i32.const 1224)
         )
        )
       )
       (call $qa)
      )
      (i32.store offset=24
       (local.get $7)
       (local.get $12)
      )
      (if
       (local.tee $4
        (i32.load offset=16
         (local.get $0)
        )
       )
       (if
        (i32.lt_u
         (local.get $4)
         (local.get $5)
        )
        (call $qa)
        (block
         (i32.store offset=16
          (local.get $7)
          (local.get $4)
         )
         (i32.store offset=24
          (local.get $4)
          (local.get $7)
         )
        )
       )
      )
      (if
       (local.tee $4
        (i32.load offset=20
         (local.get $0)
        )
       )
       (if
        (i32.lt_u
         (local.get $4)
         (i32.load
          (i32.const 1224)
         )
        )
        (call $qa)
        (block
         (i32.store offset=20
          (local.get $7)
          (local.get $4)
         )
         (i32.store offset=24
          (local.get $4)
          (local.get $7)
         )
         (local.set $2
          (local.get $0)
         )
         (local.set $1
          (local.get $3)
         )
        )
       )
       (block
        (local.set $2
         (local.get $0)
        )
        (local.set $1
         (local.get $3)
        )
       )
      )
     )
     (block
      (local.set $2
       (local.get $0)
      )
      (local.set $1
       (local.get $3)
      )
     )
    )
   )
  )
  (if
   (i32.ge_u
    (local.get $2)
    (local.get $6)
   )
   (call $qa)
  )
  (if
   (i32.eqz
    (i32.and
     (local.tee $0
      (i32.load offset=4
       (local.get $6)
      )
     )
     (i32.const 1)
    )
   )
   (call $qa)
  )
  (if
   (i32.and
    (local.get $0)
    (i32.const 2)
   )
   (block
    (i32.store offset=4
     (local.get $6)
     (i32.and
      (local.get $0)
      (i32.const -2)
     )
    )
    (i32.store offset=4
     (local.get $2)
     (i32.or
      (local.get $1)
      (i32.const 1)
     )
    )
    (i32.store
     (i32.add
      (local.get $1)
      (local.get $2)
     )
     (local.get $1)
    )
   )
   (block
    (if
     (i32.eq
      (i32.load
       (i32.const 1232)
      )
      (local.get $6)
     )
     (block
      (i32.store
       (i32.const 1220)
       (local.tee $0
        (i32.add
         (local.get $1)
         (i32.load
          (i32.const 1220)
         )
        )
       )
      )
      (i32.store
       (i32.const 1232)
       (local.get $2)
      )
      (i32.store offset=4
       (local.get $2)
       (i32.or
        (local.get $0)
        (i32.const 1)
       )
      )
      (if
       (i32.ne
        (i32.load
         (i32.const 1228)
        )
        (local.get $2)
       )
       (return)
      )
      (i32.store
       (i32.const 1228)
       (i32.const 0)
      )
      (i32.store
       (i32.const 1216)
       (i32.const 0)
      )
      (return)
     )
    )
    (if
     (i32.eq
      (i32.load
       (i32.const 1228)
      )
      (local.get $6)
     )
     (block
      (i32.store
       (i32.const 1216)
       (local.tee $0
        (i32.add
         (local.get $1)
         (i32.load
          (i32.const 1216)
         )
        )
       )
      )
      (i32.store
       (i32.const 1228)
       (local.get $2)
      )
      (i32.store offset=4
       (local.get $2)
       (i32.or
        (local.get $0)
        (i32.const 1)
       )
      )
      (i32.store
       (i32.add
        (local.get $0)
        (local.get $2)
       )
       (local.get $0)
      )
      (return)
     )
    )
    (local.set $5
     (i32.add
      (local.get $1)
      (i32.and
       (local.get $0)
       (i32.const -8)
      )
     )
    )
    (local.set $4
     (i32.shr_u
      (local.get $0)
      (i32.const 3)
     )
    )
    (block $do-once4
     (if
      (i32.lt_u
       (local.get $0)
       (i32.const 256)
      )
      (block
       (local.set $1
        (i32.load offset=12
         (local.get $6)
        )
       )
       (if
        (i32.ne
         (local.tee $3
          (i32.load offset=8
           (local.get $6)
          )
         )
         (local.tee $0
          (i32.add
           (i32.shl
            (local.get $4)
            (i32.const 3)
           )
           (i32.const 1248)
          )
         )
        )
        (block
         (if
          (i32.lt_u
           (local.get $3)
           (i32.load
            (i32.const 1224)
           )
          )
          (call $qa)
         )
         (if
          (i32.ne
           (local.get $6)
           (i32.load offset=12
            (local.get $3)
           )
          )
          (call $qa)
         )
        )
       )
       (if
        (i32.eq
         (local.get $1)
         (local.get $3)
        )
        (block
         (i32.store
          (i32.const 1208)
          (i32.and
           (i32.load
            (i32.const 1208)
           )
           (i32.xor
            (i32.shl
             (i32.const 1)
             (local.get $4)
            )
            (i32.const -1)
           )
          )
         )
         (br $do-once4)
        )
       )
       (if
        (i32.eq
         (local.get $0)
         (local.get $1)
        )
        (local.set $14
         (i32.add
          (local.get $1)
          (i32.const 8)
         )
        )
        (block
         (if
          (i32.lt_u
           (local.get $1)
           (i32.load
            (i32.const 1224)
           )
          )
          (call $qa)
         )
         (if
          (i32.eq
           (local.get $6)
           (i32.load
            (local.tee $0
             (i32.add
              (local.get $1)
              (i32.const 8)
             )
            )
           )
          )
          (local.set $14
           (local.get $0)
          )
          (call $qa)
         )
        )
       )
       (i32.store offset=12
        (local.get $3)
        (local.get $1)
       )
       (i32.store
        (local.get $14)
        (local.get $3)
       )
      )
      (block
       (local.set $7
        (i32.load offset=24
         (local.get $6)
        )
       )
       (if
        (i32.eq
         (local.get $6)
         (local.tee $0
          (i32.load offset=12
           (local.get $6)
          )
         )
        )
        (block $do-once6
         (if
          (local.tee $0
           (i32.load
            (local.tee $3
             (i32.add
              (local.tee $1
               (i32.add
                (local.get $6)
                (i32.const 16)
               )
              )
              (i32.const 4)
             )
            )
           )
          )
          (local.set $1
           (local.get $3)
          )
          (br_if $do-once6
           (i32.eqz
            (local.tee $0
             (i32.load
              (local.get $1)
             )
            )
           )
          )
         )
         (loop $while-in9
          (if
           (local.tee $4
            (i32.load
             (local.tee $3
              (i32.add
               (local.get $0)
               (i32.const 20)
              )
             )
            )
           )
           (block
            (local.set $0
             (local.get $4)
            )
            (local.set $1
             (local.get $3)
            )
            (br $while-in9)
           )
          )
          (if
           (local.tee $4
            (i32.load
             (local.tee $3
              (i32.add
               (local.get $0)
               (i32.const 16)
              )
             )
            )
           )
           (block
            (local.set $0
             (local.get $4)
            )
            (local.set $1
             (local.get $3)
            )
            (br $while-in9)
           )
          )
         )
         (if
          (i32.lt_u
           (local.get $1)
           (i32.load
            (i32.const 1224)
           )
          )
          (call $qa)
          (block
           (i32.store
            (local.get $1)
            (i32.const 0)
           )
           (local.set $8
            (local.get $0)
           )
          )
         )
        )
        (block
         (if
          (i32.lt_u
           (local.tee $1
            (i32.load offset=8
             (local.get $6)
            )
           )
           (i32.load
            (i32.const 1224)
           )
          )
          (call $qa)
         )
         (if
          (i32.ne
           (local.get $6)
           (i32.load offset=12
            (local.get $1)
           )
          )
          (call $qa)
         )
         (if
          (i32.eq
           (local.get $6)
           (i32.load offset=8
            (local.get $0)
           )
          )
          (block
           (i32.store offset=12
            (local.get $1)
            (local.get $0)
           )
           (i32.store offset=8
            (local.get $0)
            (local.get $1)
           )
           (local.set $8
            (local.get $0)
           )
          )
          (call $qa)
         )
        )
       )
       (if
        (local.get $7)
        (block
         (if
          (i32.eq
           (i32.load
            (local.tee $1
             (i32.add
              (i32.shl
               (local.tee $0
                (i32.load offset=28
                 (local.get $6)
                )
               )
               (i32.const 2)
              )
              (i32.const 1512)
             )
            )
           )
           (local.get $6)
          )
          (block
           (i32.store
            (local.get $1)
            (local.get $8)
           )
           (if
            (i32.eqz
             (local.get $8)
            )
            (block
             (i32.store
              (i32.const 1212)
              (i32.and
               (i32.load
                (i32.const 1212)
               )
               (i32.xor
                (i32.shl
                 (i32.const 1)
                 (local.get $0)
                )
                (i32.const -1)
               )
              )
             )
             (br $do-once4)
            )
           )
          )
          (block
           (if
            (i32.lt_u
             (local.get $7)
             (i32.load
              (i32.const 1224)
             )
            )
            (call $qa)
           )
           (if
            (i32.eq
             (local.get $6)
             (i32.load offset=16
              (local.get $7)
             )
            )
            (i32.store offset=16
             (local.get $7)
             (local.get $8)
            )
            (i32.store offset=20
             (local.get $7)
             (local.get $8)
            )
           )
           (br_if $do-once4
            (i32.eqz
             (local.get $8)
            )
           )
          )
         )
         (if
          (i32.lt_u
           (local.get $8)
           (local.tee $1
            (i32.load
             (i32.const 1224)
            )
           )
          )
          (call $qa)
         )
         (i32.store offset=24
          (local.get $8)
          (local.get $7)
         )
         (if
          (local.tee $0
           (i32.load offset=16
            (local.get $6)
           )
          )
          (if
           (i32.lt_u
            (local.get $0)
            (local.get $1)
           )
           (call $qa)
           (block
            (i32.store offset=16
             (local.get $8)
             (local.get $0)
            )
            (i32.store offset=24
             (local.get $0)
             (local.get $8)
            )
           )
          )
         )
         (if
          (local.tee $0
           (i32.load offset=20
            (local.get $6)
           )
          )
          (if
           (i32.lt_u
            (local.get $0)
            (i32.load
             (i32.const 1224)
            )
           )
           (call $qa)
           (block
            (i32.store offset=20
             (local.get $8)
             (local.get $0)
            )
            (i32.store offset=24
             (local.get $0)
             (local.get $8)
            )
           )
          )
         )
        )
       )
      )
     )
    )
    (i32.store offset=4
     (local.get $2)
     (i32.or
      (local.get $5)
      (i32.const 1)
     )
    )
    (i32.store
     (i32.add
      (local.get $2)
      (local.get $5)
     )
     (local.get $5)
    )
    (local.set $1
     (if (result i32)
      (i32.eq
       (i32.load
        (i32.const 1228)
       )
       (local.get $2)
      )
      (block
       (i32.store
        (i32.const 1216)
        (local.get $5)
       )
       (return)
      )
      (local.get $5)
     )
    )
   )
  )
  (local.set $3
   (i32.shr_u
    (local.get $1)
    (i32.const 3)
   )
  )
  (if
   (i32.lt_u
    (local.get $1)
    (i32.const 256)
   )
   (block
    (local.set $0
     (i32.add
      (i32.shl
       (local.get $3)
       (i32.const 3)
      )
      (i32.const 1248)
     )
    )
    (if
     (i32.and
      (local.tee $1
       (i32.load
        (i32.const 1208)
       )
      )
      (local.tee $3
       (i32.shl
        (i32.const 1)
        (local.get $3)
       )
      )
     )
     (if
      (i32.lt_u
       (local.tee $3
        (i32.load
         (local.tee $1
          (i32.add
           (local.get $0)
           (i32.const 8)
          )
         )
        )
       )
       (i32.load
        (i32.const 1224)
       )
      )
      (call $qa)
      (block
       (local.set $15
        (local.get $1)
       )
       (local.set $10
        (local.get $3)
       )
      )
     )
     (block
      (i32.store
       (i32.const 1208)
       (i32.or
        (local.get $1)
        (local.get $3)
       )
      )
      (local.set $15
       (i32.add
        (local.get $0)
        (i32.const 8)
       )
      )
      (local.set $10
       (local.get $0)
      )
     )
    )
    (i32.store
     (local.get $15)
     (local.get $2)
    )
    (i32.store offset=12
     (local.get $10)
     (local.get $2)
    )
    (i32.store offset=8
     (local.get $2)
     (local.get $10)
    )
    (i32.store offset=12
     (local.get $2)
     (local.get $0)
    )
    (return)
   )
  )
  (local.set $3
   (i32.add
    (i32.shl
     (local.tee $0
      (if (result i32)
       (local.tee $0
        (i32.shr_u
         (local.get $1)
         (i32.const 8)
        )
       )
       (if (result i32)
        (i32.gt_u
         (local.get $1)
         (i32.const 16777215)
        )
        (i32.const 31)
        (block (result i32)
         (local.set $0
          (i32.and
           (i32.shr_u
            (i32.add
             (local.tee $4
              (i32.shl
               (local.get $0)
               (local.tee $3
                (i32.and
                 (i32.shr_u
                  (i32.add
                   (local.get $0)
                   (i32.const 1048320)
                  )
                  (i32.const 16)
                 )
                 (i32.const 8)
                )
               )
              )
             )
             (i32.const 520192)
            )
            (i32.const 16)
           )
           (i32.const 4)
          )
         )
         (i32.or
          (i32.and
           (i32.shr_u
            (local.get $1)
            (i32.add
             (local.tee $0
              (i32.add
               (i32.sub
                (i32.const 14)
                (i32.or
                 (local.tee $5
                  (i32.and
                   (i32.shr_u
                    (i32.add
                     (local.tee $4
                      (i32.shl
                       (local.get $4)
                       (local.get $0)
                      )
                     )
                     (i32.const 245760)
                    )
                    (i32.const 16)
                   )
                   (i32.const 2)
                  )
                 )
                 (i32.or
                  (local.get $0)
                  (local.get $3)
                 )
                )
               )
               (i32.shr_u
                (i32.shl
                 (local.get $4)
                 (local.get $5)
                )
                (i32.const 15)
               )
              )
             )
             (i32.const 7)
            )
           )
           (i32.const 1)
          )
          (i32.shl
           (local.get $0)
           (i32.const 1)
          )
         )
        )
       )
       (i32.const 0)
      )
     )
     (i32.const 2)
    )
    (i32.const 1512)
   )
  )
  (i32.store offset=28
   (local.get $2)
   (local.get $0)
  )
  (i32.store offset=20
   (local.get $2)
   (i32.const 0)
  )
  (i32.store offset=16
   (local.get $2)
   (i32.const 0)
  )
  (if
   (i32.and
    (local.tee $4
     (i32.load
      (i32.const 1212)
     )
    )
    (local.tee $5
     (i32.shl
      (i32.const 1)
      (local.get $0)
     )
    )
   )
   (block
    (local.set $10
     (i32.shl
      (local.get $1)
      (select
       (i32.const 0)
       (i32.sub
        (i32.const 25)
        (i32.shr_u
         (local.get $0)
         (i32.const 1)
        )
       )
       (i32.eq
        (local.get $0)
        (i32.const 31)
       )
      )
     )
    )
    (local.set $0
     (i32.load
      (local.get $3)
     )
    )
    (if
     (i32.eq
      (local.tee $0
       (loop $while-in15 (result i32)
        (block $while-out14 (result i32)
         (if
          (i32.eq
           (local.get $1)
           (i32.and
            (i32.load offset=4
             (local.get $0)
            )
            (i32.const -8)
           )
          )
          (block
           (local.set $16
            (local.get $0)
           )
           (br $while-out14
            (i32.const 130)
           )
          )
         )
         (if (result i32)
          (local.tee $3
           (i32.load
            (local.tee $4
             (i32.add
              (i32.add
               (local.get $0)
               (i32.const 16)
              )
              (i32.shl
               (i32.shr_u
                (local.get $10)
                (i32.const 31)
               )
               (i32.const 2)
              )
             )
            )
           )
          )
          (block
           (local.set $10
            (i32.shl
             (local.get $10)
             (i32.const 1)
            )
           )
           (local.set $0
            (local.get $3)
           )
           (br $while-in15)
          )
          (block (result i32)
           (local.set $17
            (local.get $4)
           )
           (local.set $18
            (local.get $0)
           )
           (i32.const 127)
          )
         )
        )
       )
      )
      (i32.const 127)
     )
     (if
      (i32.lt_u
       (local.get $17)
       (i32.load
        (i32.const 1224)
       )
      )
      (call $qa)
      (block
       (i32.store
        (local.get $17)
        (local.get $2)
       )
       (i32.store offset=24
        (local.get $2)
        (local.get $18)
       )
       (i32.store offset=12
        (local.get $2)
        (local.get $2)
       )
       (i32.store offset=8
        (local.get $2)
        (local.get $2)
       )
      )
     )
     (if
      (i32.eq
       (local.get $0)
       (i32.const 130)
      )
      (if
       (i32.and
        (i32.ge_u
         (local.tee $1
          (i32.load offset=8
           (local.tee $0
            (local.get $16)
           )
          )
         )
         (local.tee $3
          (i32.load
           (i32.const 1224)
          )
         )
        )
        (i32.ge_u
         (local.get $0)
         (local.get $3)
        )
       )
       (block
        (i32.store offset=12
         (local.get $1)
         (local.get $2)
        )
        (i32.store offset=8
         (local.get $0)
         (local.get $2)
        )
        (i32.store offset=8
         (local.get $2)
         (local.get $1)
        )
        (i32.store offset=12
         (local.get $2)
         (local.get $16)
        )
        (i32.store offset=24
         (local.get $2)
         (i32.const 0)
        )
       )
       (call $qa)
      )
     )
    )
   )
   (block
    (i32.store
     (i32.const 1212)
     (i32.or
      (local.get $4)
      (local.get $5)
     )
    )
    (i32.store
     (local.get $3)
     (local.get $2)
    )
    (i32.store offset=24
     (local.get $2)
     (local.get $3)
    )
    (i32.store offset=12
     (local.get $2)
     (local.get $2)
    )
    (i32.store offset=8
     (local.get $2)
     (local.get $2)
    )
   )
  )
  (i32.store
   (i32.const 1240)
   (local.tee $0
    (i32.add
     (i32.load
      (i32.const 1240)
     )
     (i32.const -1)
    )
   )
  )
  (local.set $0
   (if (result i32)
    (local.get $0)
    (return)
    (i32.const 1664)
   )
  )
  (loop $while-in17
   (if
    (local.tee $0
     (i32.load
      (local.get $0)
     )
    )
    (block
     (local.set $0
      (i32.add
       (local.get $0)
       (i32.const 8)
      )
     )
     (br $while-in17)
    )
   )
  )
  (i32.store
   (i32.const 1240)
   (i32.const -1)
  )
 )
 (func $Ra (; 15 ;) (; has Stack IR ;) (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.set $9
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (global.get $r)
    (i32.const 48)
   )
  )
  (local.set $7
   (i32.add
    (local.get $9)
    (i32.const 16)
   )
  )
  (i32.store
   (local.tee $4
    (i32.add
     (local.tee $8
      (local.get $9)
     )
     (i32.const 32)
    )
   )
   (local.tee $3
    (i32.load offset=28
     (local.get $0)
    )
   )
  )
  (i32.store offset=4
   (local.get $4)
   (local.tee $3
    (i32.sub
     (i32.load offset=20
      (local.get $0)
     )
     (local.get $3)
    )
   )
  )
  (i32.store offset=8
   (local.get $4)
   (local.get $1)
  )
  (i32.store offset=12
   (local.get $4)
   (local.get $2)
  )
  (local.set $1
   (local.get $4)
  )
  (local.set $4
   (i32.const 2)
  )
  (local.set $10
   (i32.add
    (local.get $2)
    (local.get $3)
   )
  )
  (loop $while-in
   (block $while-out
    (if
     (i32.load
      (i32.const 1160)
     )
     (block
      (call $ra
       (i32.const 1)
       (local.get $0)
      )
      (i32.store
       (local.get $8)
       (i32.load offset=60
        (local.get $0)
       )
      )
      (i32.store offset=4
       (local.get $8)
       (local.get $1)
      )
      (i32.store offset=8
       (local.get $8)
       (local.get $4)
      )
      (local.set $3
       (call $Pa
        (call $ya
         (i32.const 146)
         (local.get $8)
        )
       )
      )
      (call $oa
       (i32.const 0)
      )
     )
     (block
      (i32.store
       (local.get $7)
       (i32.load offset=60
        (local.get $0)
       )
      )
      (i32.store offset=4
       (local.get $7)
       (local.get $1)
      )
      (i32.store offset=8
       (local.get $7)
       (local.get $4)
      )
      (local.set $3
       (call $Pa
        (call $ya
         (i32.const 146)
         (local.get $7)
        )
       )
      )
     )
    )
    (if
     (i32.eq
      (local.get $3)
      (local.get $10)
     )
     (block
      (local.set $1
       (i32.const 6)
      )
      (br $while-out)
     )
    )
    (if
     (i32.lt_s
      (local.get $3)
      (i32.const 0)
     )
     (block
      (local.set $11
       (local.get $1)
      )
      (local.set $12
       (local.get $4)
      )
      (local.set $1
       (i32.const 8)
      )
     )
     (block
      (local.set $5
       (if (result i32)
        (i32.gt_u
         (local.get $3)
         (local.tee $5
          (i32.load offset=4
           (local.get $1)
          )
         )
        )
        (block (result i32)
         (i32.store offset=28
          (local.get $0)
          (local.tee $6
           (i32.load offset=44
            (local.get $0)
           )
          )
         )
         (i32.store offset=20
          (local.get $0)
          (local.get $6)
         )
         (local.set $6
          (i32.load offset=12
           (local.get $1)
          )
         )
         (local.set $1
          (i32.add
           (local.get $1)
           (i32.const 8)
          )
         )
         (local.set $4
          (i32.add
           (local.get $4)
           (i32.const -1)
          )
         )
         (i32.sub
          (local.get $3)
          (local.get $5)
         )
        )
        (block (result i32)
         (if
          (i32.eq
           (local.get $4)
           (i32.const 2)
          )
          (block
           (i32.store offset=28
            (local.get $0)
            (i32.add
             (local.get $3)
             (i32.load offset=28
              (local.get $0)
             )
            )
           )
           (local.set $6
            (local.get $5)
           )
           (local.set $4
            (i32.const 2)
           )
          )
          (local.set $6
           (local.get $5)
          )
         )
         (local.get $3)
        )
       )
      )
      (i32.store
       (local.get $1)
       (i32.add
        (local.get $5)
        (i32.load
         (local.get $1)
        )
       )
      )
      (i32.store offset=4
       (local.get $1)
       (i32.sub
        (local.get $6)
        (local.get $5)
       )
      )
      (local.set $10
       (i32.sub
        (local.get $10)
        (local.get $3)
       )
      )
      (br $while-in)
     )
    )
   )
  )
  (global.set $r
   (local.get $9)
  )
  (if (result i32)
   (i32.eq
    (local.get $1)
    (i32.const 6)
   )
   (block (result i32)
    (i32.store offset=16
     (local.get $0)
     (i32.add
      (local.tee $1
       (i32.load offset=44
        (local.get $0)
       )
      )
      (i32.load offset=48
       (local.get $0)
      )
     )
    )
    (i32.store offset=28
     (local.get $0)
     (local.get $1)
    )
    (i32.store offset=20
     (local.get $0)
     (local.get $1)
    )
    (local.get $2)
   )
   (if (result i32)
    (i32.eq
     (local.get $1)
     (i32.const 8)
    )
    (block (result i32)
     (i32.store offset=16
      (local.get $0)
      (i32.const 0)
     )
     (i32.store offset=28
      (local.get $0)
      (i32.const 0)
     )
     (i32.store offset=20
      (local.get $0)
      (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 $11)
       )
      )
      (i32.eq
       (local.get $12)
       (i32.const 2)
      )
     )
    )
    (local.get $13)
   )
  )
 )
 (func $Wa (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local.set $5
   (i32.const 1144)
  )
  (local.set $3
   (if (result i32)
    (local.tee $4
     (i32.load offset=16
      (local.get $1)
     )
    )
    (block (result i32)
     (local.set $6
      (i32.const 5)
     )
     (local.get $4)
    )
    (if (result i32)
     (call $Xa
      (local.get $1)
     )
     (local.get $3)
     (block (result i32)
      (local.set $6
       (i32.const 5)
      )
      (i32.load offset=16
       (local.get $1)
      )
     )
    )
   )
  )
  (if
   (i32.eq
    (local.get $6)
    (i32.const 5)
   )
   (block $label$break$a
    (if
     (i32.lt_u
      (i32.sub
       (local.get $3)
       (local.tee $3
        (i32.load offset=20
         (local.get $1)
        )
       )
      )
      (local.get $0)
     )
     (block
      (local.set $2
       (call_indirect (type $FUNCSIG$iiii)
        (local.get $1)
        (i32.const 1144)
        (local.get $0)
        (i32.add
         (i32.and
          (i32.load offset=36
           (local.get $1)
          )
          (i32.const 3)
         )
         (i32.const 2)
        )
       )
      )
      (br $label$break$a)
     )
    )
    (if
     (i32.gt_s
      (i32.load8_s offset=75
       (local.get $1)
      )
      (i32.const -1)
     )
     (block $label$break$b
      (local.set $2
       (local.get $0)
      )
      (loop $while-in
       (if
        (i32.eqz
         (local.get $2)
        )
        (block
         (local.set $2
          (i32.const 0)
         )
         (br $label$break$b)
        )
       )
       (if
        (i32.ne
         (i32.load8_s
          (i32.add
           (local.tee $4
            (i32.add
             (local.get $2)
             (i32.const -1)
            )
           )
           (i32.const 1144)
          )
         )
         (i32.const 10)
        )
        (block
         (local.set $2
          (local.get $4)
         )
         (br $while-in)
        )
       )
      )
      (br_if $label$break$a
       (i32.lt_u
        (call_indirect (type $FUNCSIG$iiii)
         (local.get $1)
         (i32.const 1144)
         (local.get $2)
         (i32.add
          (i32.and
           (i32.load offset=36
            (local.get $1)
           )
           (i32.const 3)
          )
          (i32.const 2)
         )
        )
        (local.get $2)
       )
      )
      (local.set $0
       (i32.sub
        (local.get $0)
        (local.get $2)
       )
      )
      (local.set $5
       (i32.add
        (local.get $2)
        (i32.const 1144)
       )
      )
      (local.set $3
       (i32.load offset=20
        (local.get $1)
       )
      )
     )
    )
    (drop
     (call $jb
      (local.get $3)
      (local.get $5)
      (local.get $0)
     )
    )
    (i32.store offset=20
     (local.get $1)
     (i32.add
      (local.get $0)
      (i32.load offset=20
       (local.get $1)
      )
     )
    )
    (local.set $2
     (i32.add
      (local.get $0)
      (local.get $2)
     )
    )
   )
  )
  (local.get $2)
 )
 (func $Za (; 17 ;) (; has Stack IR ;) (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local.set $0
   (i32.const 1144)
  )
  (block
   (local.set $4
    (i32.const 1144)
   )
   (local.set $1
    (i32.const 4)
   )
  )
  (i32.sub
   (if (result i32)
    (i32.eq
     (local.get $1)
     (i32.const 4)
    )
    (block (result i32)
     (local.set $1
      (local.get $4)
     )
     (local.set $0
      (loop $while-in1 (result i32)
       (if (result i32)
        (i32.and
         (i32.add
          (local.tee $2
           (i32.load
            (local.get $1)
           )
          )
          (i32.const -16843009)
         )
         (i32.xor
          (i32.and
           (local.get $2)
           (i32.const -2139062144)
          )
          (i32.const -2139062144)
         )
        )
        (local.get $1)
        (block
         (local.set $1
          (i32.add
           (local.get $1)
           (i32.const 4)
          )
         )
         (br $while-in1)
        )
       )
      )
     )
     (if
      (i32.and
       (local.get $2)
       (i32.const 255)
      )
      (loop $while-in3
       (br_if $while-in3
        (i32.load8_s
         (local.tee $0
          (i32.add
           (local.get $0)
           (i32.const 1)
          )
         )
        )
       )
      )
     )
     (local.get $0)
    )
    (local.get $2)
   )
   (i32.const 1144)
  )
 )
 (func $_a (; 18 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (if
   (local.get $0)
   (local.set $0
    (block $do-once (result i32)
     (if
      (i32.le_s
       (i32.load offset=76
        (local.get $0)
       )
       (i32.const -1)
      )
      (br $do-once
       (call $$a
        (local.get $0)
       )
      )
     )
     (call $$a
      (local.get $0)
     )
    )
   )
   (block
    (local.set $0
     (if (result i32)
      (i32.load
       (i32.const 1140)
      )
      (call $_a
       (i32.load
        (i32.const 1140)
       )
      )
      (i32.const 0)
     )
    )
    (call $pa
     (i32.const 1188)
    )
    (if
     (local.tee $1
      (i32.load
       (i32.const 1184)
      )
     )
     (loop $while-in
      (if
       (i32.gt_u
        (i32.load offset=20
         (local.get $1)
        )
        (i32.load offset=28
         (local.get $1)
        )
       )
       (local.set $0
        (i32.or
         (call $$a
          (local.get $1)
         )
         (local.get $0)
        )
       )
      )
      (br_if $while-in
       (local.tee $1
        (i32.load offset=56
         (local.get $1)
        )
       )
      )
     )
    )
    (call $xa
     (i32.const 1188)
    )
   )
  )
  (local.get $0)
 )
 (func $ab (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local.set $3
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (global.get $r)
    (i32.const 16)
   )
  )
  (i32.store8
   (local.tee $4
    (local.get $3)
   )
   (i32.const 10)
  )
  (if
   (local.tee $1
    (i32.load offset=16
     (local.get $0)
    )
   )
   (block
    (local.set $5
     (local.get $1)
    )
    (local.set $6
     (i32.const 4)
    )
   )
   (if
    (call $Xa
     (local.get $0)
    )
    (local.set $2
     (i32.const -1)
    )
    (block
     (local.set $5
      (i32.load offset=16
       (local.get $0)
      )
     )
     (local.set $6
      (i32.const 4)
     )
    )
   )
  )
  (if
   (i32.eq
    (local.get $6)
    (i32.const 4)
   )
   (block $do-once
    (if
     (i32.lt_u
      (local.tee $1
       (i32.load offset=20
        (local.get $0)
       )
      )
      (local.get $5)
     )
     (if
      (i32.ne
       (local.tee $2
        (i32.const 10)
       )
       (i32.load8_s offset=75
        (local.get $0)
       )
      )
      (block
       (i32.store offset=20
        (local.get $0)
        (i32.add
         (local.get $1)
         (i32.const 1)
        )
       )
       (i32.store8
        (local.get $1)
        (i32.const 10)
       )
       (br $do-once)
      )
     )
    )
    (local.set $2
     (if (result i32)
      (i32.eq
       (call_indirect (type $FUNCSIG$iiii)
        (local.get $0)
        (local.get $4)
        (i32.const 1)
        (i32.add
         (i32.and
          (i32.load offset=36
           (local.get $0)
          )
          (i32.const 3)
         )
         (i32.const 2)
        )
       )
       (i32.const 1)
      )
      (i32.load8_u
       (local.get $4)
      )
      (i32.const -1)
     )
    )
   )
  )
  (global.set $r
   (local.get $3)
  )
  (local.get $2)
 )
 (func $$a (; 20 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (if
   (i32.gt_u
    (i32.load offset=20
     (local.get $0)
    )
    (i32.load offset=28
     (local.get $0)
    )
   )
   (block
    (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)
      )
     )
    )
    (if
     (i32.load offset=20
      (local.get $0)
     )
     (local.set $1
      (i32.const 3)
     )
     (local.set $2
      (i32.const -1)
     )
    )
   )
   (local.set $1
    (i32.const 3)
   )
  )
  (if (result i32)
   (i32.eq
    (local.get $1)
    (i32.const 3)
   )
   (block (result i32)
    (if
     (i32.lt_u
      (local.tee $1
       (i32.load offset=4
        (local.get $0)
       )
      )
      (local.tee $2
       (i32.load offset=8
        (local.get $0)
       )
      )
     )
     (drop
      (call_indirect (type $FUNCSIG$iiii)
       (local.get $0)
       (i32.sub
        (local.get $1)
        (local.get $2)
       )
       (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 offset=28
     (local.get $0)
     (i32.const 0)
    )
    (i32.store offset=20
     (local.get $0)
     (i32.const 0)
    )
    (i32.store offset=8
     (local.get $0)
     (i32.const 0)
    )
    (i32.store offset=4
     (local.get $0)
     (i32.const 0)
    )
    (i32.const 0)
   )
   (local.get $2)
  )
 )
 (func $jb (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
  (local $3 i32)
  (if
   (i32.ge_s
    (local.get $2)
    (i32.const 4096)
   )
   (return
    (call $va
     (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)
    )
   )
   (block
    (loop $while-in
     (if
      (i32.and
       (local.get $0)
       (i32.const 3)
      )
      (block
       (if
        (i32.eqz
         (local.get $2)
        )
        (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)
      )
      (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)
    )
    (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 $gb (; 22 ;) (; has Stack IR ;)
  (nop)
 )
 (func $hb (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local.set $4
   (i32.add
    (local.get $0)
    (local.get $2)
   )
  )
  (if
   (i32.ge_s
    (local.get $2)
    (i32.const 20)
   )
   (block
    (local.set $1
     (i32.and
      (local.get $1)
      (i32.const 255)
     )
    )
    (if
     (local.tee $3
      (i32.and
       (local.get $0)
       (i32.const 3)
      )
     )
     (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)
        )
        (block
         (i32.store8
          (local.get $0)
          (local.get $1)
         )
         (local.set $0
          (i32.add
           (local.get $0)
           (i32.const 1)
          )
         )
         (br $while-in)
        )
       )
      )
     )
    )
    (local.set $3
     (i32.or
      (i32.or
       (i32.or
        (i32.shl
         (local.get $1)
         (i32.const 8)
        )
        (local.get $1)
       )
       (i32.shl
        (local.get $1)
        (i32.const 16)
       )
      )
      (i32.shl
       (local.get $1)
       (i32.const 24)
      )
     )
    )
    (local.set $5
     (i32.and
      (local.get $4)
      (i32.const -4)
     )
    )
    (loop $while-in1
     (if
      (i32.lt_s
       (local.get $0)
       (local.get $5)
      )
      (block
       (i32.store
        (local.get $0)
        (local.get $3)
       )
       (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)
    )
    (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 $db (; 24 ;) (; has Stack IR ;)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (drop
   (i32.load offset=76
    (local.tee $0
     (i32.load
      (i32.const 1024)
     )
    )
   )
  )
  (drop
   (if (result i32)
    (i32.lt_s
     (i32.add
      (select
       (i32.div_u
        (local.tee $3
         (call $Wa
          (local.tee $2
           (local.tee $1
            (call $Za)
           )
          )
          (local.get $0)
         )
        )
        (local.get $1)
       )
       (i32.const 1)
       (i32.ne
        (local.get $2)
        (local.get $3)
       )
      )
      (i32.const -1)
     )
     (i32.const 0)
    )
    (i32.const 1)
    (block $do-once (result i32)
     (if
      (i32.ne
       (i32.load8_s offset=75
        (local.get $0)
       )
       (i32.const 10)
      )
      (if
       (i32.lt_u
        (local.tee $1
         (i32.load offset=20
          (local.get $0)
         )
        )
        (i32.load offset=16
         (local.get $0)
        )
       )
       (block
        (i32.store offset=20
         (local.get $0)
         (i32.add
          (local.get $1)
          (i32.const 1)
         )
        )
        (i32.store8
         (local.get $1)
         (i32.const 10)
        )
        (br $do-once
         (i32.const 0)
        )
       )
      )
     )
     (call $ab
      (local.get $0)
     )
    )
   )
  )
 )
 (func $Xa (; 25 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (i32.store8 offset=74
   (local.get $0)
   (i32.or
    (local.tee $1
     (i32.load8_s offset=74
      (local.get $0)
     )
    )
    (i32.add
     (local.get $1)
     (i32.const 255)
    )
   )
  )
  (if (result i32)
   (i32.and
    (local.tee $1
     (i32.load
      (local.get $0)
     )
    )
    (i32.const 8)
   )
   (block (result i32)
    (i32.store
     (local.get $0)
     (i32.or
      (local.get $1)
      (i32.const 32)
     )
    )
    (i32.const -1)
   )
   (block (result i32)
    (i32.store offset=8
     (local.get $0)
     (i32.const 0)
    )
    (i32.store offset=4
     (local.get $0)
     (i32.const 0)
    )
    (i32.store offset=28
     (local.get $0)
     (local.tee $1
      (i32.load offset=44
       (local.get $0)
      )
     )
    )
    (i32.store offset=20
     (local.get $0)
     (local.get $1)
    )
    (i32.store offset=16
     (local.get $0)
     (i32.add
      (i32.load offset=48
       (local.get $0)
      )
      (local.get $1)
     )
    )
    (i32.const 0)
   )
  )
 )
 (func $Ua (; 26 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
  (local $3 i32)
  (local.set $3
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (global.get $r)
    (i32.const 32)
   )
  )
  (i32.store
   (local.get $3)
   (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)
   (i32.add
    (local.get $3)
    (i32.const 20)
   )
  )
  (i32.store offset=16
   (local.get $3)
   (local.get $2)
  )
  (local.set $0
   (if (result i32)
    (i32.lt_s
     (call $Pa
      (call $ua
       (i32.const 140)
       (local.get $3)
      )
     )
     (i32.const 0)
    )
    (block (result i32)
     (i32.store offset=20
      (local.get $3)
      (i32.const -1)
     )
     (i32.const -1)
    )
    (i32.load offset=20
     (local.get $3)
    )
   )
  )
  (global.set $r
   (local.get $3)
  )
  (local.get $0)
 )
 (func $Va (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
  (local $3 i32)
  (local $4 i32)
  (local.set $4
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (global.get $r)
    (i32.const 80)
   )
  )
  (local.set $3
   (local.get $4)
  )
  (i32.store offset=36
   (local.get $0)
   (i32.const 3)
  )
  (if
   (i32.eqz
    (i32.and
     (i32.load
      (local.get $0)
     )
     (i32.const 64)
    )
   )
   (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)
     (i32.add
      (local.get $4)
      (i32.const 12)
     )
    )
    (if
     (call $wa
      (i32.const 54)
      (local.get $3)
     )
     (i32.store8 offset=75
      (local.get $0)
      (i32.const -1)
     )
    )
   )
  )
  (local.set $0
   (call $Ra
    (local.get $0)
    (local.get $1)
    (local.get $2)
   )
  )
  (global.set $r
   (local.get $4)
  )
  (local.get $0)
 )
 (func $Oa (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (local.set $1
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (global.get $r)
    (i32.const 16)
   )
  )
  (i32.store
   (local.get $1)
   (i32.load offset=60
    (local.get $0)
   )
  )
  (local.set $0
   (call $Pa
    (call $sa
     (i32.const 6)
     (local.get $1)
    )
   )
  )
  (global.set $r
   (local.get $1)
  )
  (local.get $0)
 )
 (func $Pa (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (if
   (i32.gt_u
    (local.get $0)
    (i32.const -4096)
   )
   (block
    (i32.store
     (call $Qa)
     (i32.sub
      (i32.const 0)
      (local.get $0)
     )
    )
    (local.set $0
     (i32.const -1)
    )
   )
  )
  (local.get $0)
 )
 (func $Qa (; 30 ;) (; has Stack IR ;) (result i32)
  (select
   (i32.load
    (i32.const 64)
   )
   (i32.const 1204)
   (i32.load
    (i32.const 1160)
   )
  )
 )
 (func $lb (; 31 ;) (; has Stack IR ;) (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 $Ea (; 32 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (local.set $1
   (global.get $r)
  )
  (global.set $r
   (i32.add
    (local.get $0)
    (global.get $r)
   )
  )
  (global.set $r
   (i32.and
    (i32.add
     (global.get $r)
     (i32.const 15)
    )
    (i32.const -16)
   )
  )
  (local.get $1)
 )
 (func $ob (; 33 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
  (call $ja
   (i32.const 1)
  )
  (i32.const 0)
 )
 (func $Ia (; 34 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32)
  (if
   (i32.eqz
    (global.get $v)
   )
   (block
    (global.set $v
     (local.get $0)
    )
    (global.set $w
     (local.get $1)
    )
   )
  )
 )
 (func $kb (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
  (call_indirect (type $FUNCSIG$ii)
   (local.get $1)
   (i32.and
    (local.get $0)
    (i32.const 1)
   )
  )
 )
 (func $Sa (; 36 ;) (; has Stack IR ;) (param $0 i32)
  (nop)
 )
 (func $mb (; 37 ;) (; has Stack IR ;) (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 $Ha (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32)
  (global.set $r
   (local.get $0)
  )
  (global.set $s
   (local.get $1)
  )
 )
 (func $nb (; 39 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (call $ja
   (i32.const 0)
  )
  (i32.const 0)
 )
 (func $Na (; 40 ;) (; has Stack IR ;) (result i32)
  (call $db)
  (i32.const 0)
 )
 (func $pb (; 41 ;) (; has Stack IR ;) (param $0 i32)
  (call $ja
   (i32.const 2)
  )
 )
 (func $La (; 42 ;) (; has Stack IR ;) (param $0 i32)
  (global.set $K
   (local.get $0)
  )
 )
 (func $Ga (; 43 ;) (; has Stack IR ;) (param $0 i32)
  (global.set $r
   (local.get $0)
  )
 )
 (func $Ma (; 44 ;) (; has Stack IR ;) (result i32)
  (global.get $K)
 )
 (func $Fa (; 45 ;) (; has Stack IR ;) (result i32)
  (global.get $r)
 )
 (func $ib (; 46 ;) (; has Stack IR ;) (result i32)
  (i32.const 0)
 )
)
