procedure Bool.11 (#Attr.2, #Attr.3): let Bool.24 : Int1 = lowlevel Eq #Attr.2 #Attr.3; ret Bool.24; procedure Bool.4 (#Attr.2, #Attr.3): let Bool.23 : Int1 = lowlevel Or #Attr.2 #Attr.3; ret Bool.23; procedure Test.1 (Test.2, Test.3): let Test.17 : {Int1, Int1} = Struct {Test.2, Test.3}; let Test.32 : Int1 = StructAtIndex 0 Test.17; let Test.31 : Int1 = StructAtIndex 1 Test.17; let Test.19 : Int1 = CallByName Test.1 Test.31 Test.32; let Test.26 : {} = Struct {}; joinpoint Test.27 Test.21: let Test.23 : {} = Struct {}; joinpoint Test.24 Test.22: let Test.20 : Int1 = CallByName Bool.11 Test.21 Test.22; dec Test.22; dec Test.21; let Test.18 : Int1 = CallByName Bool.4 Test.19 Test.20; ret Test.18; in switch Test.31: case 0: let Test.25 : Str = CallByName Test.9 Test.23; jump Test.24 Test.25; default: let Test.25 : Str = CallByName Test.11 Test.23; jump Test.24 Test.25; in switch Test.32: case 0: let Test.28 : Str = CallByName Test.9 Test.26; jump Test.27 Test.28; default: let Test.28 : Str = CallByName Test.11 Test.26; jump Test.27 Test.28; procedure Test.11 (Test.34): let Test.35 : Str = "a"; ret Test.35; procedure Test.9 (Test.37): let Test.38 : Str = "a"; ret Test.38; procedure Test.0 (): let Test.36 : Int1 = false; let Test.33 : Int1 = true; let Test.13 : Int1 = CallByName Test.1 Test.36 Test.33; ret Test.13;