module NestedLoops
use int.Int
let cfg nested_loops  _x : () =
  var a : int;
  var b : int;
  var c : int;
  var d : int;
  {
    goto BB0
  }
  BB0 {
    switch (true)
    | True -> goto B
    | False -> goto A
    end
  }
  BB1 {
    invariant { true };
    switch (True)
    | True -> goto C
    | False -> goto D
    end
  }
  C { 
    c <- c + 1;
    goto BB1
  }
  D {
    d <- d + 1;
    goto BB0
  }
  B {
    b <- b + 1;
    goto BB1
  }
  A {
    a <- a + 1;
    return ()
  }
(*
  loop i {
    b
    loop j {
      c
    }
    d
  }
  a
*)
end
