library #lib;
import self as self;
import "dart:core" as core;

[@vm.bytecode=
Bytecode {
  Entry                2
  CheckStack
  PushConstant         CP#0
  PopLocal             r0
  Push                 FP[-5]
  PopLocal             r1
  Push                 r1
  PushConstant         CP#2
  InstanceCall2        2, CP#3
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#5
  InstanceCall2        2, CP#6
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Push                 r1
  PushConstant         CP#7
  InstanceCall2        2, CP#8
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L3
  Jump                 L4
L1:
  PushConstant         CP#9
  StoreLocal           r0
  Drop1
  Jump                 L4
L2:
  PushConstant         CP#10
  StoreLocal           r0
  Drop1
  Jump                 L4
L3:
  PushConstant         CP#11
  StoreLocal           r0
  Drop1
  Jump                 L4
L4:
  Push                 r0
  ReturnTOS
  PushConstant         CP#0
  ReturnTOS
}
ConstantPool {
  [0] = Null
  [1] = ArgDesc num-args 2, num-type-args 0, names []
  [2] = Int 1
  [3] = ICData target-name '==', arg-desc CP#1
  [4] = Bool true
  [5] = Int 2
  [6] = ICData target-name '==', arg-desc CP#1
  [7] = Int 3
  [8] = ICData target-name '==', arg-desc CP#1
  [9] = Int 11
  [10] = Int 22
  [11] = Int 33
}
]static method foo1(core::int x) → core::int {
  core::int y;
  #L1:
  switch(x) {
    #L2:
    case 1:
      {
        y = 11;
        break #L1;
      }
    #L3:
    case 2:
      {
        y = 22;
        break #L1;
      }
    #L4:
    case 3:
      {
        y = 33;
        break #L1;
      }
  }
  return y;
}
[@vm.bytecode=
Bytecode {
  Entry                2
  CheckStack
  PushConstant         CP#0
  PopLocal             r0
  Push                 FP[-5]
  PopLocal             r1
  Push                 r1
  PushConstant         CP#2
  InstanceCall2        2, CP#3
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#5
  InstanceCall2        2, CP#6
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#7
  InstanceCall2        2, CP#8
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#9
  InstanceCall2        2, CP#10
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Push                 r1
  PushConstant         CP#11
  InstanceCall2        2, CP#12
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Push                 r1
  PushConstant         CP#13
  InstanceCall2        2, CP#14
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Jump                 L3
L1:
  PushConstant         CP#15
  StoreLocal           r0
  Drop1
  Jump                 L4
L2:
  PushConstant         CP#16
  StoreLocal           r0
  Drop1
  Jump                 L4
L3:
  PushConstant         CP#17
  StoreLocal           r0
  Drop1
L4:
  Push                 r0
  ReturnTOS
  PushConstant         CP#0
  ReturnTOS
}
ConstantPool {
  [0] = Null
  [1] = ArgDesc num-args 2, num-type-args 0, names []
  [2] = Int 1
  [3] = ICData target-name '==', arg-desc CP#1
  [4] = Bool true
  [5] = Int 2
  [6] = ICData target-name '==', arg-desc CP#1
  [7] = Int 3
  [8] = ICData target-name '==', arg-desc CP#1
  [9] = Int 4
  [10] = ICData target-name '==', arg-desc CP#1
  [11] = Int 5
  [12] = ICData target-name '==', arg-desc CP#1
  [13] = Int 6
  [14] = ICData target-name '==', arg-desc CP#1
  [15] = Int 11
  [16] = Int 22
  [17] = Int 33
}
]static method foo2(core::int x) → core::int {
  core::int y;
  #L5:
  switch(x) {
    #L6:
    case 1:
    case 2:
    case 3:
      {
        y = 11;
        break #L5;
      }
    #L7:
    case 4:
    case 5:
    case 6:
      {
        y = 22;
        break #L5;
      }
    #L8:
    default:
      {
        y = 33;
      }
  }
  return y;
}
[@vm.bytecode=
Bytecode {
  Entry                2
  CheckStack
  PushConstant         CP#0
  PopLocal             r0
  Push                 FP[-5]
  PopLocal             r1
  Push                 r1
  PushConstant         CP#2
  InstanceCall2        2, CP#3
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#5
  InstanceCall2        2, CP#6
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#7
  InstanceCall2        2, CP#8
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L1
  Push                 r1
  PushConstant         CP#9
  InstanceCall2        2, CP#10
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Push                 r1
  PushConstant         CP#11
  InstanceCall2        2, CP#12
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Push                 r1
  PushConstant         CP#13
  InstanceCall2        2, CP#14
  PushConstant         CP#4
  IfEqStrictTOS
  Jump                 L2
  Jump                 L3
L1:
  PushConstant         CP#15
  StoreLocal           r0
  Drop1
  Jump                 L2
L2:
  PushConstant         CP#16
  StoreLocal           r0
  Drop1
  PushConstant         CP#17
  ReturnTOS
L3:
  PushConstant         CP#18
  StoreLocal           r0
  Drop1
  Push                 r0
  ReturnTOS
  PushConstant         CP#0
  ReturnTOS
}
ConstantPool {
  [0] = Null
  [1] = ArgDesc num-args 2, num-type-args 0, names []
  [2] = Int 1
  [3] = ICData target-name '==', arg-desc CP#1
  [4] = Bool true
  [5] = Int 2
  [6] = ICData target-name '==', arg-desc CP#1
  [7] = Int 3
  [8] = ICData target-name '==', arg-desc CP#1
  [9] = Int 4
  [10] = ICData target-name '==', arg-desc CP#1
  [11] = Int 5
  [12] = ICData target-name '==', arg-desc CP#1
  [13] = Int 6
  [14] = ICData target-name '==', arg-desc CP#1
  [15] = Int 11
  [16] = Int 22
  [17] = Int 42
  [18] = Int 33
}
]static method foo3(core::int x) → core::int {
  core::int y;
  switch(x) {
    #L9:
    case 1:
    case 2:
    case 3:
      {
        y = 11;
        continue #L10;
      }
    #L10:
    case 4:
    case 5:
    case 6:
      {
        y = 22;
        return 42;
      }
    #L11:
    default:
      {
        y = 33;
      }
  }
  return y;
}
[@vm.bytecode=
Bytecode {
  Entry                0
  CheckStack
  PushConstant         CP#0
  ReturnTOS
}
ConstantPool {
  [0] = Null
}
]static method main() → dynamic {}
