reading Blort.class...
method <init> ()V
first 000c
block 000a
  pred 000c
  live in:{}
  Blort.java:17@0000: move-param-object(0) v0:NffffLBlort; <- .
  Blort.java:17@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 000a
  live in:{}
  Blort.java:17@0000: move-object v1:NffffLBlort; <- v0:NffffLBlort;
  Blort.java:17@0001: Rop{invoke-direct . <- Ljava/lang/Object; call throws <any>}(java.lang.Object.<init>:()V catch) . <- v1:NffffLBlort;
  next 0004
  live out:{}
block 0004
  pred 0000
  live in:{}
  Blort.java:17@0004: goto . <- .
  next 000b
  live out:{}
block 000b
  pred 0004
  live in:{}
  Blort.java:17@0004: return-void . <- .
  returns
  live out:{}
block 000c
  live in:{}
  @????: goto . <- .
  next 000a
  live out:{}

method edgeSplitPredTest (I)I
first 002f
block 0026
  pred 002f
  live in:{}
  Blort.java:26@0000: move-param-object(0) v0:LBlort; <- .
  Blort.java:26@0000: move-param-int(1) v1:I <- .
  Blort.java:26@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 0026
  live in:{}
  Blort.java:26@0000: const-int(1) v4:I=1 <- .
  Blort.java:26@0001: move-int v2:I <- v4:I=1
  Blort.java:26@0001: goto . <- .
  next 0002
  live out:{}
block 002d
  pred 0002
  live in:{}
  Blort.java:29@0003: Rop{move-result Ljava/lang/String; <- . flows} v4:Ljava/lang/String; <- .
  Blort.java:29@0003: goto . <- .
  next 0006
  live out:{}
block 0002
  pred 0000
  live in:{}
  Blort.java:29@0002: move-int v4:I <- v1:I
  Blort.java:29@0003: Rop{invoke-static . <- I call throws <any>}(java.lang.Integer.toString:(I)Ljava/lang/String; catch java.lang.Object) . <- v4:I
  next 0030
  next 002d *
  live out:{}
block 002e
  pred 0006
  live in:{}
  Blort.java:30@0008: Rop{move-result Ljava/lang/String; <- . flows} v4:Ljava/lang/String; <- .
  Blort.java:30@0008: goto . <- .
  next 000b
  live out:{}
block 0006
  pred 002d
  live in:{}
  Blort.java:30@0007: move-int v4:I <- v1:I
  Blort.java:30@0008: Rop{invoke-static . <- I call throws <any>}(java.lang.Integer.toString:(I)Ljava/lang/String; catch java.lang.Object) . <- v4:I
  next 0031
  next 002e *
  live out:{}
block 000b
  pred 002e
  live in:{}
  Blort.java:31@000c: add-const-int(1) v2:I <- v2:I
  Blort.java:31@000c: goto . <- .
  next 000f
  live out:{}
block 000f
  pred 000b
  live in:{}
  Blort.java:33@000f: move-int v4:I <- v2:I
  Blort.java:33@0010: move-int v0:I <- v4:I
  Blort.java:33@0010: goto . <- .
  next 0027
  live out:{}
block 0011
  pred 0024
  live in:{}
  Blort.java:33@0011: move-object v3:Ljava/lang/Class;=java.lang.Object <- v4:Ljava/lang/Class;=java.lang.Object
  Blort.java:33@0011: goto . <- .
  next 0012
  live out:{}
block 0012
  pred 0011
  live in:{}
  Blort.java:33@0012: move-int v4:I <- v2:I
  Blort.java:33@0013: move-int v0:I <- v4:I
  Blort.java:33@0013: goto . <- .
  next 0027
  live out:{}
block 0027
  pred 000f
  pred 0012
  live in:{}
  Blort.java:33@0010: return-int . <- v0:I
  returns
  live out:{}
block 0024
  pred 0030
  pred 0031
  live in:{}
  Blort.java:33@0011: goto . <- .
  next 0011
  live out:{}
block 002f
  live in:{}
  @????: goto . <- .
  next 0026
  live out:{}
block 0030
  pred 0002
  live in:{}
  Blort.java:33@0011: Rop{move-exception Ljava/lang/Object; <- . flows} v4:Ljava/lang/Object; <- .
  @????: goto . <- .
  next 0024
  live out:{}
block 0031
  pred 0006
  live in:{}
  Blort.java:33@0011: Rop{move-exception Ljava/lang/Object; <- . flows} v4:Ljava/lang/Object; <- .
  @????: goto . <- .
  next 0024
  live out:{}

method voidFunction ()V
first 0004
block 0002
  pred 0004
  live in:{}
  Blort.java:41@0000: move-param-object(0) v0:LBlort; <- .
  Blort.java:41@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 0002
  live in:{}
  Blort.java:41@0000: goto . <- .
  next 0003
  live out:{}
block 0003
  pred 0000
  live in:{}
  Blort.java:41@0000: return-void . <- .
  returns
  live out:{}
block 0004
  live in:{}
  @????: goto . <- .
  next 0002
  live out:{}

method edgeSplitMoveException ()V
first 0027
block 001e
  pred 0027
  live in:{}
  Blort.java:49@0000: move-param-object(0) v0:LBlort; <- .
  Blort.java:49@0000: goto . <- .
  next 0000
  live out:{}
block 0025
  pred 0000
  live in:{}
  Blort.java:49@0001: Rop{move-result I <- . flows} v2:I <- .
  Blort.java:49@0001: goto . <- .
  next 0004
  live out:{}
block 0000
  pred 001e
  live in:{}
  Blort.java:49@0000: move-object v2:LBlort; <- v0:LBlort;
  Blort.java:49@0001: Rop{invoke-virtual . <- Ljava/lang/Object; call throws <any>}(java.lang.Object.hashCode:()I catch java.lang.Throwable) . <- v2:LBlort;
  next 0028
  next 0025 *
  live out:{}
block 0026
  pred 0004
  live in:{}
  Blort.java:50@0006: Rop{move-result I <- . flows} v2:I <- .
  Blort.java:50@0006: goto . <- .
  next 0009
  live out:{}
block 0004
  pred 0025
  live in:{}
  Blort.java:50@0005: move-object v2:LBlort; <- v0:LBlort;
  Blort.java:50@0006: Rop{invoke-virtual . <- Ljava/lang/Object; call throws <any>}(java.lang.Object.hashCode:()I catch java.lang.Throwable) . <- v2:LBlort;
  next 0029
  next 0026 *
  live out:{}
block 0009
  pred 0026
  live in:{}
  @????: goto . <- .
  next 000a
  live out:{}
block 000a
  pred 0009
  live in:{}
  Blort.java:52@000a: goto . <- .
  next 000e
  live out:{}
block 000d
  pred 001c
  live in:{}
  Blort.java:51@000d: move-object v1:Ljava/lang/Class;=java.lang.Throwable <- v2:Ljava/lang/Class;=java.lang.Throwable
  Blort.java:51@000d: goto . <- .
  next 000e
  live out:{}
block 000e
  pred 000a
  pred 000d
  live in:{}
  Blort.java:53@000e: goto . <- .
  next 001f
  live out:{}
block 001f
  pred 000e
  live in:{}
  Blort.java:53@000e: return-void . <- .
  returns
  live out:{}
block 001c
  pred 0028
  pred 0029
  live in:{}
  Blort.java:51@000d: goto . <- .
  next 000d
  live out:{}
block 0027
  live in:{}
  @????: goto . <- .
  next 001e
  live out:{}
block 0028
  pred 0000
  live in:{}
  Blort.java:51@000d: Rop{move-exception Ljava/lang/Throwable; <- . flows} v2:Ljava/lang/Throwable; <- .
  @????: goto . <- .
  next 001c
  live out:{}
block 0029
  pred 0004
  live in:{}
  Blort.java:51@000d: Rop{move-exception Ljava/lang/Throwable; <- . flows} v2:Ljava/lang/Throwable; <- .
  @????: goto . <- .
  next 001c
  live out:{}

method edgeSplitSuccessor (I)I
first 005a
block 0058
  pred 005a
  live in:{}
  Blort.java:62@0000: move-param-object(0) v0:LBlort; <- .
  Blort.java:62@0000: move-param-int(1) v1:I <- .
  Blort.java:62@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 0058
  live in:{}
  Blort.java:62@0000: const-int(0) v3:I=0 <- .
  Blort.java:62@0001: move-int v2:I <- v3:I=0
  Blort.java:64@0002: move-int v3:I <- v1:I
  Blort.java:64@0003: switch({1, 2, 3}) . <- v3:I
  next 001c
  next 0022
  next 0028
  next 005b *
  live out:{}
block 001c
  pred 0000
  live in:{}
  Blort.java:65@001c: add-const-int(1) v2:I <- v2:I
  Blort.java:66@001f: goto . <- .
  next 002b
  live out:{}
block 0022
  pred 0000
  live in:{}
  Blort.java:67@0022: add-const-int(1) v2:I <- v2:I
  Blort.java:68@0025: goto . <- .
  next 002b
  live out:{}
block 0028
  pred 0000
  live in:{}
  Blort.java:69@0028: add-const-int(1) v2:I <- v2:I
  Blort.java:69@0028: goto . <- .
  next 002b
  live out:{}
block 002b
  pred 001c
  pred 0022
  pred 0028
  pred 005b
  live in:{}
  Blort.java:72@002b: move-int v3:I <- v2:I
  Blort.java:72@002c: move-int v0:I <- v3:I
  Blort.java:72@002c: goto . <- .
  next 0059
  live out:{}
block 0059
  pred 002b
  live in:{}
  Blort.java:72@002c: return-int . <- v0:I
  returns
  live out:{}
block 005a
  live in:{}
  @????: goto . <- .
  next 0058
  live out:{}
block 005b
  pred 0000
  live in:{}
  @????: goto . <- .
  next 002b
  live out:{}
