(module
 (type $0 (func))
 (type $1 (func (param i32) (result i32)))
 (memory $0 100 100)
 (func $basics (; 0 ;) (type $0)
  (local $x i32)
  (local $y i32)
  (local $2 i32)
  (local $3 i32)
  (drop
   (tee_local $2
    (i32.add
     (i32.const 1)
     (i32.const 2)
    )
   )
  )
  (drop
   (get_local $2)
  )
  (if
   (i32.const 0)
   (nop)
  )
  (drop
   (i32.add
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (tee_local $3
    (i32.add
     (get_local $x)
     (get_local $y)
    )
   )
  )
  (drop
   (get_local $3)
  )
  (drop
   (get_local $3)
  )
  (call $basics)
  (drop
   (get_local $3)
  )
  (set_local $x
   (i32.const 100)
  )
  (drop
   (i32.add
    (get_local $x)
    (get_local $y)
   )
  )
 )
 (func $recursive1 (; 1 ;) (type $0)
  (local $x i32)
  (local $y i32)
  (local $2 i32)
  (drop
   (i32.add
    (i32.const 1)
    (tee_local $2
     (i32.add
      (i32.const 2)
      (i32.const 3)
     )
    )
   )
  )
  (drop
   (i32.add
    (i32.const 1)
    (get_local $2)
   )
  )
  (drop
   (get_local $2)
  )
 )
 (func $recursive2 (; 2 ;) (type $0)
  (local $x i32)
  (local $y i32)
  (local $2 i32)
  (drop
   (i32.add
    (i32.const 1)
    (tee_local $2
     (i32.add
      (i32.const 2)
      (i32.const 3)
     )
    )
   )
  )
  (drop
   (get_local $2)
  )
  (drop
   (i32.add
    (i32.const 1)
    (get_local $2)
   )
  )
 )
 (func $self (; 3 ;) (type $0)
  (local $x i32)
  (local $y i32)
  (local $2 i32)
  (drop
   (i32.add
    (tee_local $2
     (i32.add
      (i32.const 2)
      (i32.const 3)
     )
    )
    (get_local $2)
   )
  )
  (drop
   (get_local $2)
  )
 )
 (func $loads (; 4 ;) (type $0)
  (drop
   (i32.load
    (i32.const 10)
   )
  )
  (drop
   (i32.load
    (i32.const 10)
   )
  )
 )
 (func $8 (; 5 ;) (type $1) (param $var$0 i32) (result i32)
  (local $var$1 i32)
  (local $var$2 i32)
  (local $var$3 i32)
  (local $4 i32)
  (block $label$0 (result i32)
   (i32.store
    (tee_local $var$2
     (tee_local $4
      (i32.add
       (get_local $var$1)
       (i32.const 4)
      )
     )
    )
    (i32.and
     (i32.load
      (get_local $var$2)
     )
     (i32.xor
      (tee_local $var$2
       (i32.const 74)
      )
      (i32.const -1)
     )
    )
   )
   (i32.store
    (tee_local $var$1
     (get_local $4)
    )
    (i32.or
     (i32.load
      (get_local $var$1)
     )
     (i32.and
      (get_local $var$2)
      (i32.const 8)
     )
    )
   )
   (i32.const 0)
  )
 )
)
