(module
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $none_=>_none (func))
 (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $i32_=>_none (func (param i32)))
 (import "env" "memory" (memory $mimport$0 256 256))
 (global $global$0 (mut i32) (i32.const 5243904))
 (global $global$1 i32 (i32.const 1024))
 (export "__wasm_call_ctors" (func $__wasm_call_ctors))
 (export "main" (func $main))
 (export "__data_end" (global $global$1))
 (export "stackSave" (func $stackSave))
 (export "stackAlloc" (func $stackAlloc))
 (export "stackRestore" (func $stackRestore))
 (export "__growWasmMemory" (func $__growWasmMemory))
 (func $__wasm_call_ctors
  (nop)
 )
 (func $main (param $0 i32) (param $1 i32) (result i32)
  (if
   (i32.ne
    (i32.rem_s
     (local.get $0)
     (i32.const 120)
    )
    (i32.const 55)
   )
   (loop $label$2
    (br_if $label$2
     (i32.ne
      (i32.rem_s
       (local.tee $0
        (i32.add
         (i32.add
          (i32.mul
           (i32.mul
            (local.get $0)
            (local.get $0)
           )
           (local.get $0)
          )
          (i32.div_s
           (local.get $0)
           (i32.const -2)
          )
         )
         (i32.const 13)
        )
       )
       (i32.const 120)
      )
      (i32.const 55)
     )
    )
   )
  )
  (local.get $0)
 )
 (func $stackSave (result i32)
  (global.get $global$0)
 )
 (func $stackAlloc (param $0 i32) (result i32)
  (global.set $global$0
   (local.tee $0
    (i32.and
     (i32.sub
      (global.get $global$0)
      (local.get $0)
     )
     (i32.const -16)
    )
   )
  )
  (local.get $0)
 )
 (func $stackRestore (param $0 i32)
  (global.set $global$0
   (local.get $0)
  )
 )
 (func $__growWasmMemory (param $0 i32) (result i32)
  (memory.grow
   (local.get $0)
  )
 )
 ;; custom section ".debug_info", size 105
 ;; custom section ".debug_abbrev", size 73
 ;; custom section ".debug_line", size 92
 ;; custom section ".debug_str", size 205
)
(module
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $none_=>_none (func))
 (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $i32_=>_none (func (param i32)))
 (import "env" "memory" (memory $mimport$0 256 256))
 (global $global$0 (mut i32) (i32.const 5243904))
 (global $global$1 i32 (i32.const 1024))
 (export "__wasm_call_ctors" (func $__wasm_call_ctors))
 (export "main" (func $main))
 (export "__data_end" (global $global$1))
 (export "stackSave" (func $stackSave))
 (export "stackAlloc" (func $stackAlloc))
 (export "stackRestore" (func $stackRestore))
 (export "__growWasmMemory" (func $__growWasmMemory))
 (func $__wasm_call_ctors
  (nop)
 )
 (func $main (param $0 i32) (param $1 i32) (result i32)
  (if
   (i32.ne
    (i32.rem_s
     (local.get $0)
     (i32.const 120)
    )
    (i32.const 55)
   )
   (loop $label$2
    (br_if $label$2
     (i32.ne
      (i32.rem_s
       (local.tee $0
        (i32.add
         (i32.add
          (i32.mul
           (i32.mul
            (local.get $0)
            (local.get $0)
           )
           (local.get $0)
          )
          (i32.div_s
           (local.get $0)
           (i32.const -2)
          )
         )
         (i32.const 13)
        )
       )
       (i32.const 120)
      )
      (i32.const 55)
     )
    )
   )
  )
  (local.get $0)
 )
 (func $stackSave (result i32)
  (global.get $global$0)
 )
 (func $stackAlloc (param $0 i32) (result i32)
  (global.set $global$0
   (local.tee $0
    (i32.and
     (i32.sub
      (global.get $global$0)
      (local.get $0)
     )
     (i32.const -16)
    )
   )
  )
  (local.get $0)
 )
 (func $stackRestore (param $0 i32)
  (global.set $global$0
   (local.get $0)
  )
 )
 (func $__growWasmMemory (param $0 i32) (result i32)
  (memory.grow
   (local.get $0)
  )
 )
 ;; custom section ".debug_info", size 105
 ;; custom section ".debug_abbrev", size 73
 ;; custom section ".debug_line", size 92
 ;; custom section ".debug_str", size 205
)
