(module
 (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $i32_=>_none (func (param i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $none_=>_none (func))
 (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 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 $i32_i32_i32_=>_i32)
        (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 $i32_i32_i32_=>_i32)
         (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 $i32_i32_i32_=>_i32)
        (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 $i32_i32_i32_=>_i32)
      (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 $i32_i32_i32_=>_i32)
       (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 $i32_i32_i32_=>_i32)
   (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 $i32_=>_i32)
   (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 $i32_=>_none)
   (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)
 )
)
