(module
  (import "wasi_snapshot_preview1" "fd_write" (func $fd_write (param i32 i32 i32 i32) (result i32)))
  (import "wasi_snapshot_preview1" "proc_exit" (func $proc_exit (param i32)))
  (data (i32.const 48) "\04\00\00\00true")
  (data (i32.const 56) "\05\00\00\00false")
  (data (i32.const 64) "\01\00\00\00-")
  (memory (export "memory") 2)
  (global $hp (mut i32) (i32.const 72))
  (func $method0 (param $v0 i32) (result i32)
    (if (local.get $v0)
        (then
            (return (i32.const 1))
        )
        (else
            (return (i32.const 3))
        ))
    (unreachable)
  )
  (func $method1 (param $v0 i32) (param $v1 i32) (result i32)
    (local $v2 i32)
    (local $v3 i32)
    (local.set $v2 (i32.and (local.get $v0) (local.get $v1)))
    (if (local.get $v2)
        (then
            (return (i32.const 1))
        )
        (else
            (local.set $v3 (i32.or (local.get $v0) (local.get $v1)))
            (if (local.get $v3)
                (then
                    (return (i32.const 2))
                )
                (else
                    (return (i32.const 3))
                ))
        ))
    (unreachable)
  )
  (func $method2 (param $v0 i32) (result i32)
    (if (local.get $v0)
        (then
            (return (i32.const 1))
        )
        (else
            (return (i32.const 3))
        ))
    (unreachable)
  )
  (func $spiralMain (result i32)
    (local $v0 i32)
    (local $v1 i32)
    (local $v2 i32)
    (local $v3 i32)
    (local $v4 i32)
    (local $v5 i32)
    (local $v6 i32)
    (local $v7 i32)
    (local $v9 i32)
    (local $v8 i32)
    (local $v11 i32)
    (local $v10 i32)
    (local $v12 i32)
    (local.set $v0 (i32.const 1))
    (local.set $v1 (i32.const 0))
    (local.set $v2 (call $method0 (local.get $v0)))
    (local.set $v3 (call $method1 (local.get $v0) (local.get $v1)))
    (local.set $v4 (call $method2 (local.get $v1)))
    (local.set $v5 (i32.eq (local.get $v0) (local.get $v1)))
    (local.set $v6 (i32.eq (local.get $v5) (i32.const 0)))
    (local.set $v7 (i32.eq (local.get $v2) (i32.const 1)))
    (if (local.get $v7)
        (then
            (local.set $v8 (i32.eq (local.get $v3) (i32.const 2)))
            (local.set $v9 (local.get $v8))
        )
        (else
            (local.set $v9 (i32.const 0))
        ))
    (if (local.get $v9)
        (then
            (local.set $v10 (i32.eq (local.get $v4) (i32.const 3)))
            (local.set $v11 (local.get $v10))
        )
        (else
            (local.set $v11 (i32.const 0))
        ))
    (local.set $v12 (i32.and (local.get $v11) (local.get $v6)))
    (if (local.get $v12)
        (then
            (return (i32.const 0))
        )
        (else
            (return (i32.const 1))
        ))
    (unreachable)
  )
  (func $_start (export "_start")
    (call $proc_exit (call $spiralMain)))
)
