(module
 (type $v (func))
 (global $while/n (mut i32) (i32.const 10))
 (global $while/m (mut i32) (i32.const 0))
 (global $while/o (mut i32) (i32.const 0))
 (memory $0 1)
 (export "memory" (memory $0))
 (start $start)
 (func $start (; 0 ;) (type $v)
  (local $0 i32)
  (loop $continue|0
   (if
    (get_global $while/n)
    (block
     (set_global $while/n
      (i32.sub
       (get_global $while/n)
       (i32.const 1)
      )
     )
     (set_global $while/m
      (i32.add
       (get_global $while/m)
       (i32.const 1)
      )
     )
     (br $continue|0)
    )
   )
  )
  (if
   (get_global $while/n)
   (unreachable)
  )
  (if
   (i32.ne
    (get_global $while/m)
    (i32.const 10)
   )
   (unreachable)
  )
  (set_global $while/n
   (i32.const 10)
  )
  (set_global $while/m
   (i32.const 0)
  )
  (loop $continue|1
   (if
    (get_global $while/n)
    (block
     (set_global $while/n
      (i32.sub
       (get_global $while/n)
       (i32.const 1)
      )
     )
     (set_global $while/m
      (i32.add
       (get_global $while/m)
       (i32.const 1)
      )
     )
     (loop $continue|2
      (if
       (get_global $while/n)
       (block
        (set_global $while/n
         (i32.sub
          (get_global $while/n)
          (i32.const 1)
         )
        )
        (set_global $while/o
         (i32.add
          (get_global $while/o)
          (i32.const 1)
         )
        )
        (br $continue|2)
       )
      )
     )
     (if
      (get_global $while/n)
      (unreachable)
     )
     (if
      (i32.ne
       (get_global $while/o)
       (i32.const 9)
      )
      (unreachable)
     )
     (br $continue|1)
    )
   )
  )
  (if
   (get_global $while/n)
   (unreachable)
  )
  (if
   (i32.ne
    (get_global $while/m)
    (i32.const 1)
   )
   (unreachable)
  )
  (if
   (i32.ne
    (get_global $while/o)
    (i32.const 9)
   )
   (unreachable)
  )
  (set_global $while/n
   (i32.const 1)
  )
  (set_global $while/m
   (i32.const 0)
  )
  (loop $continue|3
   (br_if $continue|3
    (if (result i32)
     (block (result i32)
      (set_global $while/n
       (i32.sub
        (tee_local $0
         (get_global $while/n)
        )
        (i32.const 1)
       )
      )
      (get_local $0)
     )
     (block (result i32)
      (set_global $while/m
       (i32.add
        (get_global $while/m)
        (i32.const 1)
       )
      )
      (get_global $while/m)
     )
     (get_local $0)
    )
   )
  )
  (if
   (i32.ne
    (get_global $while/n)
    (i32.const -1)
   )
   (unreachable)
  )
  (if
   (i32.ne
    (get_global $while/m)
    (i32.const 1)
   )
   (unreachable)
  )
 )
)