public class org.graalvm.compiler.loop.LoopEx
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.loop.LoopEx
  super_class: java.lang.Object
{
  private final org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block> loop;
    descriptor: Lorg/graalvm/compiler/core/common/cfg/Loop;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;

  private org.graalvm.compiler.loop.LoopFragmentInside inside;
    descriptor: Lorg/graalvm/compiler/loop/LoopFragmentInside;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.compiler.loop.LoopFragmentWhole whole;
    descriptor: Lorg/graalvm/compiler/loop/LoopFragmentWhole;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.compiler.loop.CountedLoopInfo counted;
    descriptor: Lorg/graalvm/compiler/loop/CountedLoopInfo;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.compiler.loop.LoopsData data;
    descriptor: Lorg/graalvm/compiler/loop/LoopsData;
    flags: (0x0002) ACC_PRIVATE

  private jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.loop.InductionVariable> ivs;
    descriptor: Ljdk/internal/vm/compiler/collections/EconomicMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;

  private boolean countedLoopChecked;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 79
            ldc Lorg/graalvm/compiler/loop/LoopEx;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block>, org.graalvm.compiler.loop.LoopsData);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/Loop;Lorg/graalvm/compiler/loop/LoopsData;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.loop.LoopEx this
        start local 1 // org.graalvm.compiler.core.common.cfg.Loop loop
        start local 2 // org.graalvm.compiler.loop.LoopsData data
         0: .line 88
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 89
            aload 0 /* this */
            aload 1 /* loop */
            putfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
         2: .line 90
            aload 0 /* this */
            aload 2 /* data */
            putfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
         3: .line 91
            return
        end local 2 // org.graalvm.compiler.loop.LoopsData data
        end local 1 // org.graalvm.compiler.core.common.cfg.Loop loop
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/compiler/loop/LoopEx;
            0    4     1  loop  Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
            0    4     2  data  Lorg/graalvm/compiler/loop/LoopsData;
    Signature: (Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;Lorg/graalvm/compiler/loop/LoopsData;)V
    MethodParameters:
      Name  Flags
      loop  
      data  

  public org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block> loop();
    descriptor: ()Lorg/graalvm/compiler/core/common/cfg/Loop;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 94
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/LoopEx;
    Signature: ()Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;

  public org.graalvm.compiler.loop.LoopFragmentInside inside();
    descriptor: ()Lorg/graalvm/compiler/loop/LoopFragmentInside;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 98
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
            ifnonnull 2
         1: .line 99
            aload 0 /* this */
            new org.graalvm.compiler.loop.LoopFragmentInside
            dup
            aload 0 /* this */
            invokespecial org.graalvm.compiler.loop.LoopFragmentInside.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
            putfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
         2: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public org.graalvm.compiler.loop.LoopFragmentWhole whole();
    descriptor: ()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 105
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
            ifnonnull 2
         1: .line 106
            aload 0 /* this */
            new org.graalvm.compiler.loop.LoopFragmentWhole
            dup
            aload 0 /* this */
            invokespecial org.graalvm.compiler.loop.LoopFragmentWhole.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
            putfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
         2: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public void invalidateFragments();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 112
            aload 0 /* this */
            aconst_null
            putfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
         1: .line 113
            aload 0 /* this */
            aconst_null
            putfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
         2: .line 114
            return
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public org.graalvm.compiler.loop.LoopFragmentInsideFrom insideFrom(org.graalvm.compiler.nodes.FixedNode);
    descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/loop/LoopFragmentInsideFrom;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.loop.LoopEx this
        start local 1 // org.graalvm.compiler.nodes.FixedNode point
         0: .line 119
            aconst_null
            areturn
        end local 1 // org.graalvm.compiler.nodes.FixedNode point
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/compiler/loop/LoopEx;
            0    1     1  point  Lorg/graalvm/compiler/nodes/FixedNode;
    MethodParameters:
       Name  Flags
      point  

  public org.graalvm.compiler.loop.LoopFragmentInsideBefore insideBefore(org.graalvm.compiler.nodes.FixedNode);
    descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/loop/LoopFragmentInsideBefore;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.loop.LoopEx this
        start local 1 // org.graalvm.compiler.nodes.FixedNode point
         0: .line 125
            aconst_null
            areturn
        end local 1 // org.graalvm.compiler.nodes.FixedNode point
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/compiler/loop/LoopEx;
            0    1     1  point  Lorg/graalvm/compiler/nodes/FixedNode;
    MethodParameters:
       Name  Flags
      point  

  public boolean isOutsideLoop(org.graalvm.compiler.graph.Node);
    descriptor: (Lorg/graalvm/compiler/graph/Node;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.loop.LoopEx this
        start local 1 // org.graalvm.compiler.graph.Node n
         0: .line 129
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
            aload 1 /* n */
            invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.contains:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // org.graalvm.compiler.graph.Node n
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;
            0    3     1     n  Lorg/graalvm/compiler/graph/Node;
    MethodParameters:
      Name  Flags
      n     

  public org.graalvm.compiler.nodes.LoopBeginNode loopBegin();
    descriptor: ()Lorg/graalvm/compiler/nodes/LoopBeginNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 133
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            checkcast org.graalvm.compiler.nodes.cfg.Block
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            checkcast org.graalvm.compiler.nodes.LoopBeginNode
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public org.graalvm.compiler.nodes.FixedNode predecessor();
    descriptor: ()Lorg/graalvm/compiler/nodes/FixedNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 137
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
            invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.FixedNode
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public org.graalvm.compiler.nodes.FixedNode entryPoint();
    descriptor: ()Lorg/graalvm/compiler/nodes/FixedNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 141
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public boolean isCounted();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 145
            getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.counted:Lorg/graalvm/compiler/loop/CountedLoopInfo;
            ifnull 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public org.graalvm.compiler.loop.CountedLoopInfo counted();
    descriptor: ()Lorg/graalvm/compiler/loop/CountedLoopInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 150
            getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.counted:Lorg/graalvm/compiler/loop/CountedLoopInfo;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public org.graalvm.compiler.loop.LoopEx parent();
    descriptor: ()Lorg/graalvm/compiler/loop/LoopEx;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 155
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            ifnonnull 2
         1: .line 156
            aconst_null
            areturn
         2: .line 158
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.loop.LoopsData.loop:(Lorg/graalvm/compiler/core/common/cfg/Loop;)Lorg/graalvm/compiler/loop/LoopEx;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 162
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
            invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
            invokevirtual org.graalvm.compiler.graph.NodeBitMap.count:()I
            ireturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 167
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
            ifeq 1
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
            ifeq 1
            new java.lang.StringBuilder
            dup
            ldc "CountedLoop ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 2
      StackMap locals: org.graalvm.compiler.loop.LoopEx
      StackMap stack: new 0 new 0
         1: ldc "Loop "
      StackMap locals: org.graalvm.compiler.loop.LoopEx
      StackMap stack: new 0 new 0 java.lang.String
         2: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "(depth="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public boolean reassociateInvariants();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 189
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 190
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 2 /* graph */
        start local 2 // org.graalvm.compiler.nodes.StructuredGraph graph
         2: .line 191
            new org.graalvm.compiler.loop.LoopEx$InvariantPredicate
            dup
            aload 0 /* this */
            invokespecial org.graalvm.compiler.loop.LoopEx$InvariantPredicate.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
            astore 3 /* invariant */
        start local 3 // org.graalvm.compiler.loop.LoopEx$InvariantPredicate invariant
         3: .line 192
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
            invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
            ldc Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;
            invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 18
      StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
            astore 4 /* binary */
        start local 4 // org.graalvm.compiler.nodes.calc.BinaryArithmeticNode binary
         5: .line 193
            aload 4 /* binary */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.isAssociative:()Z
            ifne 7
         6: .line 194
            goto 18
         7: .line 196
      StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate org.graalvm.compiler.nodes.calc.BinaryArithmeticNode java.util.Iterator
      StackMap stack:
            aload 4 /* binary */
            aload 3 /* invariant */
            aload 4 /* binary */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 4 /* binary */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.reassociate:(Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;Lorg/graalvm/compiler/graph/iterators/NodePredicate;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* result */
        start local 6 // org.graalvm.compiler.nodes.ValueNode result
         8: .line 197
            aload 6 /* result */
            aload 4 /* binary */
            if_acmpeq 18
         9: .line 198
            aload 6 /* result */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isAlive:()Z
            ifne 12
        10: .line 199
            getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
            ifne 11
            aload 6 /* result */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isDeleted:()Z
            ifeq 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        11: .line 200
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 2 /* graph */
            aload 6 /* result */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUniqueWithInputs:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ValueNode
            astore 6 /* result */
        12: .line 202
      StackMap locals:
      StackMap stack:
            aload 2 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 7 /* debug */
        start local 7 // org.graalvm.compiler.debug.DebugContext debug
        13: .line 203
            aload 7 /* debug */
            invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
            ifeq 15
        14: .line 204
            aload 7 /* debug */
            ldc "%s : Reassociated %s into %s"
            aload 2 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.method:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            ldc "%H::%n"
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            aload 4 /* binary */
            aload 6 /* result */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        15: .line 206
      StackMap locals: org.graalvm.compiler.debug.DebugContext
      StackMap stack:
            aload 4 /* binary */
            aload 6 /* result */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.replaceAtUsages:(Lorg/graalvm/compiler/graph/Node;)V
        16: .line 207
            aload 4 /* binary */
            invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killWithUnusedFloatingInputs:(Lorg/graalvm/compiler/graph/Node;)V
        17: .line 208
            iinc 1 /* count */ 1
        end local 7 // org.graalvm.compiler.debug.DebugContext debug
        end local 6 // org.graalvm.compiler.nodes.ValueNode result
        end local 4 // org.graalvm.compiler.nodes.calc.BinaryArithmeticNode binary
        18: .line 192
      StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        19: .line 211
            iload 1 /* count */
            ifeq 20
            iconst_1
            ireturn
      StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate
      StackMap stack:
        20: iconst_0
            ireturn
        end local 3 // org.graalvm.compiler.loop.LoopEx$InvariantPredicate invariant
        end local 2 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 1 // int count
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   21     0       this  Lorg/graalvm/compiler/loop/LoopEx;
            1   21     1      count  I
            2   21     2      graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            3   21     3  invariant  Lorg/graalvm/compiler/loop/LoopEx$InvariantPredicate;
            5   18     4     binary  Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode<*>;
            8   18     6     result  Lorg/graalvm/compiler/nodes/ValueNode;
           13   18     7      debug  Lorg/graalvm/compiler/debug/DebugContext;

  public boolean detectCounted();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=13, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 215
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
            ifeq 2
         1: .line 216
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
            ireturn
         2: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
         3: .line 219
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
            astore 1 /* loopBegin */
        start local 1 // org.graalvm.compiler.nodes.LoopBeginNode loopBegin
         4: .line 220
            aload 1 /* loopBegin */
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
            astore 2 /* next */
        start local 2 // org.graalvm.compiler.nodes.FixedNode next
         5: .line 221
            goto 7
         6: .line 222
      StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode
      StackMap stack:
            aload 2 /* next */
            checkcast org.graalvm.compiler.nodes.FixedWithNextNode
            invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
            astore 2 /* next */
         7: .line 221
      StackMap locals:
      StackMap stack:
            aload 2 /* next */
            instanceof org.graalvm.compiler.nodes.FixedGuardNode
            ifne 6
            aload 2 /* next */
            instanceof org.graalvm.compiler.nodes.extended.ValueAnchorNode
            ifne 6
            aload 2 /* next */
            instanceof org.graalvm.compiler.nodes.FullInfopointNode
            ifne 6
         8: .line 224
            aload 2 /* next */
            instanceof org.graalvm.compiler.nodes.IfNode
            ifeq 69
         9: .line 225
            aload 2 /* next */
            checkcast org.graalvm.compiler.nodes.IfNode
            astore 3 /* ifNode */
        start local 3 // org.graalvm.compiler.nodes.IfNode ifNode
        10: .line 226
            iconst_0
            istore 4 /* negated */
        start local 4 // boolean negated
        11: .line 227
            aload 0 /* this */
            aload 3 /* ifNode */
            invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isCfgLoopExit:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Z
            ifne 15
        12: .line 228
            aload 0 /* this */
            aload 3 /* ifNode */
            invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isCfgLoopExit:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Z
            ifne 14
        13: .line 229
            iconst_0
            ireturn
        14: .line 231
      StackMap locals: org.graalvm.compiler.nodes.IfNode int
      StackMap stack:
            iconst_1
            istore 4 /* negated */
        15: .line 233
      StackMap locals:
      StackMap stack:
            aload 3 /* ifNode */
            invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
            astore 5 /* ifTest */
        start local 5 // org.graalvm.compiler.nodes.LogicNode ifTest
        16: .line 234
            aload 5 /* ifTest */
            instanceof org.graalvm.compiler.nodes.calc.IntegerLessThanNode
            ifne 20
            aload 5 /* ifTest */
            instanceof org.graalvm.compiler.nodes.calc.IntegerEqualsNode
            ifne 20
        17: .line 235
            aload 5 /* ifTest */
            instanceof org.graalvm.compiler.nodes.calc.IntegerBelowNode
            ifeq 19
        18: .line 236
            aload 5 /* ifTest */
            invokevirtual org.graalvm.compiler.nodes.LogicNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            ldc "Ignored potential Counted loop at %s with |<|"
            aload 1 /* loopBegin */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
        19: .line 238
      StackMap locals: org.graalvm.compiler.nodes.LogicNode
      StackMap stack:
            iconst_0
            ireturn
        20: .line 240
      StackMap locals:
      StackMap stack:
            aload 5 /* ifTest */
            checkcast org.graalvm.compiler.nodes.calc.CompareNode
            astore 6 /* lessThan */
        start local 6 // org.graalvm.compiler.nodes.calc.CompareNode lessThan
        21: .line 241
            aconst_null
            astore 7 /* condition */
        start local 7 // org.graalvm.compiler.core.common.calc.Condition condition
        22: .line 242
            aconst_null
            astore 8 /* iv */
        start local 8 // org.graalvm.compiler.loop.InductionVariable iv
        23: .line 243
            aconst_null
            astore 9 /* limit */
        start local 9 // org.graalvm.compiler.nodes.ValueNode limit
        24: .line 244
            aload 0 /* this */
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 30
        25: .line 245
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.getInductionVariables:()Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.loop.InductionVariable
            astore 8 /* iv */
        26: .line 246
            aload 8 /* iv */
            ifnull 35
        27: .line 247
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.condition:()Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
            invokevirtual org.graalvm.compiler.core.common.calc.CanonicalCondition.asCondition:()Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.mirror:()Lorg/graalvm/compiler/core/common/calc/Condition;
            astore 7 /* condition */
        28: .line 248
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 9 /* limit */
        29: .line 250
            goto 35
      StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.IfNode int org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.core.common.calc.Condition org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
        30: aload 0 /* this */
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 35
        31: .line 251
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.getInductionVariables:()Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.loop.InductionVariable
            astore 8 /* iv */
        32: .line 252
            aload 8 /* iv */
            ifnull 35
        33: .line 253
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.condition:()Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
            invokevirtual org.graalvm.compiler.core.common.calc.CanonicalCondition.asCondition:()Lorg/graalvm/compiler/core/common/calc/Condition;
            astore 7 /* condition */
        34: .line 254
            aload 6 /* lessThan */
            invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 9 /* limit */
        35: .line 257
      StackMap locals:
      StackMap stack:
            aload 7 /* condition */
            ifnonnull 37
        36: .line 258
            iconst_0
            ireturn
        37: .line 260
      StackMap locals:
      StackMap stack:
            iload 4 /* negated */
            ifeq 39
        38: .line 261
            aload 7 /* condition */
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.negate:()Lorg/graalvm/compiler/core/common/calc/Condition;
            astore 7 /* condition */
        39: .line 263
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 10 /* oneOff */
        start local 10 // boolean oneOff
        40: .line 264
            invokestatic org.graalvm.compiler.loop.LoopEx.$SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition:()[I
            aload 7 /* condition */
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            iaload
            tableswitch { // 1 - 6
                    1: 41
                    2: 42
                    3: 56
                    4: 53
                    5: 61
                    6: 58
              default: 63
          }
        41: .line 266
      StackMap locals: int
      StackMap stack:
            iconst_0
            ireturn
        42: .line 268
      StackMap locals:
      StackMap stack:
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.isConstantStride:()Z
            ifeq 43
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
            invokestatic java.lang.Math.abs:(J)J
            lconst_1
            lcmp
            ifeq 44
        43: .line 269
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        44: .line 271
      StackMap locals:
      StackMap stack:
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.initNode:()Lorg/graalvm/compiler/nodes/ValueNode;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            checkcast org.graalvm.compiler.core.common.type.IntegerStamp
            astore 11 /* initStamp */
        start local 11 // org.graalvm.compiler.core.common.type.IntegerStamp initStamp
        45: .line 272
            aload 9 /* limit */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            checkcast org.graalvm.compiler.core.common.type.IntegerStamp
            astore 12 /* limitStamp */
        start local 12 // org.graalvm.compiler.core.common.type.IntegerStamp limitStamp
        46: .line 273
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            if_acmpne 49
        47: .line 274
            aload 11 /* initStamp */
            invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.upperBound:()J
            aload 12 /* limitStamp */
            invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.lowerBound:()J
            lcmp
            ifle 64
        48: .line 275
            iconst_0
            ireturn
        49: .line 277
      StackMap locals: org.graalvm.compiler.core.common.type.IntegerStamp org.graalvm.compiler.core.common.type.IntegerStamp
      StackMap stack:
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            if_acmpne 52
        50: .line 278
            aload 11 /* initStamp */
            invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.lowerBound:()J
            aload 12 /* limitStamp */
            invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.upperBound:()J
            lcmp
            ifge 64
        51: .line 279
            iconst_0
            ireturn
        52: .line 282
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 12 // org.graalvm.compiler.core.common.type.IntegerStamp limitStamp
        end local 11 // org.graalvm.compiler.core.common.type.IntegerStamp initStamp
        53: .line 287
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 10 /* oneOff */
        54: .line 288
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            if_acmpeq 64
        55: .line 289
            iconst_0
            ireturn
        56: .line 293
      StackMap locals:
      StackMap stack:
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            if_acmpeq 64
        57: .line 294
            iconst_0
            ireturn
        58: .line 298
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 10 /* oneOff */
        59: .line 299
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            if_acmpeq 64
        60: .line 300
            iconst_0
            ireturn
        61: .line 304
      StackMap locals:
      StackMap stack:
            aload 8 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
            if_acmpeq 64
        62: .line 305
            iconst_0
            ireturn
        63: .line 309
      StackMap locals:
      StackMap stack:
            aload 7 /* condition */
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        64: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        65: new org.graalvm.compiler.loop.CountedLoopInfo
            dup
            aload 0 /* this */
            aload 8 /* iv */
            aload 3 /* ifNode */
            aload 9 /* limit */
            iload 10 /* oneOff */
            iload 4 /* negated */
            ifeq 66
            aload 3 /* ifNode */
            invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            goto 67
      StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.IfNode int org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.core.common.calc.Condition org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode int
      StackMap stack: org.graalvm.compiler.loop.LoopEx new 65 new 65 org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.ValueNode int
        66: aload 3 /* ifNode */
            invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
      StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.IfNode int org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.core.common.calc.Condition org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode int
      StackMap stack: org.graalvm.compiler.loop.LoopEx new 65 new 65 org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.ValueNode int org.graalvm.compiler.nodes.AbstractBeginNode
        67: invokespecial org.graalvm.compiler.loop.CountedLoopInfo.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/IfNode;Lorg/graalvm/compiler/nodes/ValueNode;ZLorg/graalvm/compiler/nodes/AbstractBeginNode;)V
            putfield org.graalvm.compiler.loop.LoopEx.counted:Lorg/graalvm/compiler/loop/CountedLoopInfo;
        68: .line 312
            iconst_1
            ireturn
        end local 10 // boolean oneOff
        end local 9 // org.graalvm.compiler.nodes.ValueNode limit
        end local 8 // org.graalvm.compiler.loop.InductionVariable iv
        end local 7 // org.graalvm.compiler.core.common.calc.Condition condition
        end local 6 // org.graalvm.compiler.nodes.calc.CompareNode lessThan
        end local 5 // org.graalvm.compiler.nodes.LogicNode ifTest
        end local 4 // boolean negated
        end local 3 // org.graalvm.compiler.nodes.IfNode ifNode
        69: .line 314
      StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // org.graalvm.compiler.nodes.FixedNode next
        end local 1 // org.graalvm.compiler.nodes.LoopBeginNode loopBegin
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   70     0        this  Lorg/graalvm/compiler/loop/LoopEx;
            4   70     1   loopBegin  Lorg/graalvm/compiler/nodes/LoopBeginNode;
            5   70     2        next  Lorg/graalvm/compiler/nodes/FixedNode;
           10   69     3      ifNode  Lorg/graalvm/compiler/nodes/IfNode;
           11   69     4     negated  Z
           16   69     5      ifTest  Lorg/graalvm/compiler/nodes/LogicNode;
           21   69     6    lessThan  Lorg/graalvm/compiler/nodes/calc/CompareNode;
           22   69     7   condition  Lorg/graalvm/compiler/core/common/calc/Condition;
           23   69     8          iv  Lorg/graalvm/compiler/loop/InductionVariable;
           24   69     9       limit  Lorg/graalvm/compiler/nodes/ValueNode;
           40   69    10      oneOff  Z
           45   53    11   initStamp  Lorg/graalvm/compiler/core/common/type/IntegerStamp;
           46   53    12  limitStamp  Lorg/graalvm/compiler/core/common/type/IntegerStamp;

  private boolean isCfgLoopExit(org.graalvm.compiler.nodes.AbstractBeginNode);
    descriptor: (Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.loop.LoopEx this
        start local 1 // org.graalvm.compiler.nodes.AbstractBeginNode begin
         0: .line 318
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
            invokevirtual org.graalvm.compiler.loop.LoopsData.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
            aload 1 /* begin */
            invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
            astore 2 /* block */
        start local 2 // org.graalvm.compiler.nodes.cfg.Block block
         1: .line 319
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
            aload 2 /* block */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoopDepth:()I
            if_icmpgt 2
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
            aload 2 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.isNaturalExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifne 2
            iconst_0
            ireturn
      StackMap locals: org.graalvm.compiler.nodes.cfg.Block
      StackMap stack:
         2: iconst_1
            ireturn
        end local 2 // org.graalvm.compiler.nodes.cfg.Block block
        end local 1 // org.graalvm.compiler.nodes.AbstractBeginNode begin
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/graalvm/compiler/loop/LoopEx;
            0    3     1  begin  Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            1    3     2  block  Lorg/graalvm/compiler/nodes/cfg/Block;
    MethodParameters:
       Name  Flags
      begin  

  public org.graalvm.compiler.loop.LoopsData loopsData();
    descriptor: ()Lorg/graalvm/compiler/loop/LoopsData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 323
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/LoopEx;

  public void nodesInLoopBranch(org.graalvm.compiler.graph.NodeBitMap, org.graalvm.compiler.nodes.AbstractBeginNode);
    descriptor: (Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // org.graalvm.compiler.loop.LoopEx this
        start local 1 // org.graalvm.compiler.graph.NodeBitMap branchNodes
        start local 2 // org.graalvm.compiler.nodes.AbstractBeginNode branch
         0: .line 327
            invokestatic jdk.internal.vm.compiler.collections.EconomicSet.create:()Ljdk/internal/vm/compiler/collections/EconomicSet;
            astore 3 /* blocks */
        start local 3 // jdk.internal.vm.compiler.collections.EconomicSet blocks
         1: .line 328
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 4 /* exits */
        start local 4 // java.util.Collection exits
         2: .line 329
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 5 /* work */
        start local 5 // java.util.Queue work
         3: .line 330
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopsData:()Lorg/graalvm/compiler/loop/LoopsData;
            invokevirtual org.graalvm.compiler.loop.LoopsData.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
            astore 6 /* cfg */
        start local 6 // org.graalvm.compiler.nodes.cfg.ControlFlowGraph cfg
         4: .line 331
            aload 5 /* work */
            aload 6 /* cfg */
            aload 2 /* branch */
            invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
         5: .line 332
            goto 18
         6: .line 333
      StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.nodes.AbstractBeginNode jdk.internal.vm.compiler.collections.EconomicSet java.util.Collection java.util.Queue org.graalvm.compiler.nodes.cfg.ControlFlowGraph
      StackMap stack:
            aload 5 /* work */
            invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.cfg.Block
            astore 7 /* b */
        start local 7 // org.graalvm.compiler.nodes.cfg.Block b
         7: .line 334
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            aload 7 /* b */
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.isLoopExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifeq 11
         8: .line 335
            getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
            ifne 9
            aload 4 /* exits */
            aload 7 /* b */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifeq 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 336
      StackMap locals: org.graalvm.compiler.nodes.cfg.Block
      StackMap stack:
            aload 4 /* exits */
            aload 7 /* b */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        10: .line 337
            goto 18
      StackMap locals:
      StackMap stack:
        11: aload 3 /* blocks */
            aload 7 /* b */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.add:(Ljava/lang/Object;)Z
            ifeq 18
        12: .line 338
            aload 7 /* b */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            checkcast org.graalvm.compiler.nodes.cfg.Block
            astore 8 /* d */
        start local 8 // org.graalvm.compiler.nodes.cfg.Block d
        13: .line 339
            goto 17
        14: .line 340
      StackMap locals: org.graalvm.compiler.nodes.cfg.Block
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
            aload 8 /* d */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 16
        15: .line 341
            aload 5 /* work */
            aload 8 /* d */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
        16: .line 343
      StackMap locals:
      StackMap stack:
            aload 8 /* d */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            checkcast org.graalvm.compiler.nodes.cfg.Block
            astore 8 /* d */
        17: .line 339
      StackMap locals:
      StackMap stack:
            aload 8 /* d */
            ifnonnull 14
        end local 8 // org.graalvm.compiler.nodes.cfg.Block d
        end local 7 // org.graalvm.compiler.nodes.cfg.Block b
        18: .line 332
      StackMap locals:
      StackMap stack:
            aload 5 /* work */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 6
        19: .line 347
            aload 1 /* branchNodes */
            aload 2 /* branch */
            invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            aload 3 /* blocks */
            aload 4 /* exits */
            invokestatic org.graalvm.compiler.loop.LoopFragment.computeNodes:(Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/graph/Graph;Ljava/lang/Iterable;Ljava/lang/Iterable;)V
        20: .line 348
            return
        end local 6 // org.graalvm.compiler.nodes.cfg.ControlFlowGraph cfg
        end local 5 // java.util.Queue work
        end local 4 // java.util.Collection exits
        end local 3 // jdk.internal.vm.compiler.collections.EconomicSet blocks
        end local 2 // org.graalvm.compiler.nodes.AbstractBeginNode branch
        end local 1 // org.graalvm.compiler.graph.NodeBitMap branchNodes
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0         this  Lorg/graalvm/compiler/loop/LoopEx;
            0   21     1  branchNodes  Lorg/graalvm/compiler/graph/NodeBitMap;
            0   21     2       branch  Lorg/graalvm/compiler/nodes/AbstractBeginNode;
            1   21     3       blocks  Ljdk/internal/vm/compiler/collections/EconomicSet<Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
            2   21     4        exits  Ljava/util/Collection<Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
            3   21     5         work  Ljava/util/Queue<Lorg/graalvm/compiler/nodes/cfg/Block;>;
            4   21     6          cfg  Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
            7   18     7            b  Lorg/graalvm/compiler/nodes/cfg/Block;
           13   18     8            d  Lorg/graalvm/compiler/nodes/cfg/Block;
    MethodParameters:
             Name  Flags
      branchNodes  
      branch       

  public jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.loop.InductionVariable> getInductionVariables();
    descriptor: ()Ljdk/internal/vm/compiler/collections/EconomicMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 351
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
            ifnonnull 2
         1: .line 352
            aload 0 /* this */
            aload 0 /* this */
            invokestatic org.graalvm.compiler.loop.LoopEx.findInductionVariables:(Lorg/graalvm/compiler/loop/LoopEx;)Ljdk/internal/vm/compiler/collections/EconomicMap;
            putfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
         2: .line 354
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
            areturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/loop/LoopEx;
    Signature: ()Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;

  private static jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.loop.InductionVariable> findInductionVariables(org.graalvm.compiler.loop.LoopEx);
    descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Ljdk/internal/vm/compiler/collections/EconomicMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=14, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx loop
         0: .line 365
            getstatic jdk.internal.vm.compiler.collections.Equivalence.IDENTITY:Ljdk/internal/vm/compiler/collections/Equivalence;
            invokestatic jdk.internal.vm.compiler.collections.EconomicMap.create:(Ljdk/internal/vm/compiler/collections/Equivalence;)Ljdk/internal/vm/compiler/collections/EconomicMap;
            astore 1 /* ivs */
        start local 1 // jdk.internal.vm.compiler.collections.EconomicMap ivs
         1: .line 367
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 2 /* scanQueue */
        start local 2 // java.util.Queue scanQueue
         2: .line 368
            aload 0 /* loop */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
            astore 3 /* loopBegin */
        start local 3 // org.graalvm.compiler.nodes.LoopBeginNode loopBegin
         3: .line 369
            aload 3 /* loopBegin */
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
            astore 4 /* forwardEnd */
        start local 4 // org.graalvm.compiler.nodes.AbstractEndNode forwardEnd
         4: .line 370
            aload 3 /* loopBegin */
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.valuePhis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 14
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode top java.util.Iterator
      StackMap stack:
         5: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.PhiNode
            astore 5 /* phi */
        start local 5 // org.graalvm.compiler.nodes.PhiNode phi
         6: .line 371
            aload 5 /* phi */
            invokevirtual org.graalvm.compiler.nodes.PhiNode.singleBackValueOrThis:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* backValue */
        start local 7 // org.graalvm.compiler.nodes.ValueNode backValue
         7: .line 372
            aload 7 /* backValue */
            aload 5 /* phi */
            if_acmpne 9
         8: .line 373
            goto 14
         9: .line 375
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 0 /* loop */
            aload 7 /* backValue */
            aload 5 /* phi */
            invokestatic org.graalvm.compiler.loop.LoopEx.addSub:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 8 /* stride */
        start local 8 // org.graalvm.compiler.nodes.ValueNode stride
        10: .line 376
            aload 8 /* stride */
            ifnull 14
        11: .line 377
            new org.graalvm.compiler.loop.BasicInductionVariable
            dup
            aload 0 /* loop */
            aload 5 /* phi */
            checkcast org.graalvm.compiler.nodes.ValuePhiNode
            aload 5 /* phi */
            aload 4 /* forwardEnd */
            invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            aload 8 /* stride */
            aload 7 /* backValue */
            checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
            invokespecial org.graalvm.compiler.loop.BasicInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValuePhiNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;)V
            astore 9 /* biv */
        start local 9 // org.graalvm.compiler.loop.BasicInductionVariable biv
        12: .line 378
            aload 1 /* ivs */
            aload 5 /* phi */
            aload 9 /* biv */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 379
            aload 2 /* scanQueue */
            aload 9 /* biv */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // org.graalvm.compiler.loop.BasicInductionVariable biv
        end local 8 // org.graalvm.compiler.nodes.ValueNode stride
        end local 7 // org.graalvm.compiler.nodes.ValueNode backValue
        end local 5 // org.graalvm.compiler.nodes.PhiNode phi
        14: .line 370
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        15: .line 383
            goto 50
        16: .line 384
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode
      StackMap stack:
            aload 2 /* scanQueue */
            invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.loop.InductionVariable
            astore 5 /* baseIv */
        start local 5 // org.graalvm.compiler.loop.InductionVariable baseIv
        17: .line 385
            aload 5 /* baseIv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* baseIvNode */
        start local 6 // org.graalvm.compiler.nodes.ValueNode baseIvNode
        18: .line 386
            aload 6 /* baseIvNode */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            ldc Lorg/graalvm/compiler/nodes/ValueNode;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 8
            goto 49
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode top java.util.Iterator
      StackMap stack:
        19: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.ValueNode
            astore 7 /* op */
        start local 7 // org.graalvm.compiler.nodes.ValueNode op
        20: .line 387
            aload 0 /* loop */
            aload 7 /* op */
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 22
        21: .line 388
            goto 49
        22: .line 390
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode java.util.Iterator
      StackMap stack:
            aload 7 /* op */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
            iconst_1
            if_icmpne 24
            aload 7 /* op */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
            aload 6 /* baseIvNode */
            if_acmpne 24
        23: .line 395
            goto 49
        24: .line 397
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 9 /* iv */
        start local 9 // org.graalvm.compiler.loop.InductionVariable iv
        25: .line 398
            aload 0 /* loop */
            aload 7 /* op */
            aload 6 /* baseIvNode */
            invokestatic org.graalvm.compiler.loop.LoopEx.addSub:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 10 /* offset */
        start local 10 // org.graalvm.compiler.nodes.ValueNode offset
        26: .line 400
            aload 10 /* offset */
            ifnull 29
        27: .line 401
            new org.graalvm.compiler.loop.DerivedOffsetInductionVariable
            dup
            aload 0 /* loop */
            aload 5 /* baseIv */
            aload 10 /* offset */
            aload 7 /* op */
            checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
            invokespecial org.graalvm.compiler.loop.DerivedOffsetInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;)V
            astore 9 /* iv */
        28: .line 402
            goto 46
      StackMap locals: org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
        29: aload 7 /* op */
            instanceof org.graalvm.compiler.nodes.calc.NegateNode
            ifeq 32
        30: .line 403
            new org.graalvm.compiler.loop.DerivedScaledInductionVariable
            dup
            aload 0 /* loop */
            aload 5 /* baseIv */
            aload 7 /* op */
            checkcast org.graalvm.compiler.nodes.calc.NegateNode
            invokespecial org.graalvm.compiler.loop.DerivedScaledInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/calc/NegateNode;)V
            astore 9 /* iv */
        31: .line 404
            goto 46
      StackMap locals:
      StackMap stack:
        32: aload 0 /* loop */
            aload 7 /* op */
            aload 6 /* baseIvNode */
            invokestatic org.graalvm.compiler.loop.LoopEx.mul:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            dup
            astore 11 /* scale */
        start local 11 // org.graalvm.compiler.nodes.ValueNode scale
        33: ifnull 36
        34: .line 405
            new org.graalvm.compiler.loop.DerivedScaledInductionVariable
            dup
            aload 0 /* loop */
            aload 5 /* baseIv */
            aload 11 /* scale */
            aload 7 /* op */
            invokespecial org.graalvm.compiler.loop.DerivedScaledInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
            astore 9 /* iv */
        35: .line 406
            goto 46
        36: .line 407
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 7 /* op */
            instanceof org.graalvm.compiler.nodes.PiNode
            ifne 37
            aload 7 /* op */
            instanceof org.graalvm.compiler.nodes.calc.SignExtendNode
            ifne 37
            iconst_0
            goto 38
      StackMap locals:
      StackMap stack:
        37: iconst_1
      StackMap locals:
      StackMap stack: int
        38: istore 12 /* isValidConvert */
        start local 12 // boolean isValidConvert
        39: .line 408
            iload 12 /* isValidConvert */
            ifne 44
            aload 7 /* op */
            instanceof org.graalvm.compiler.nodes.calc.ZeroExtendNode
            ifeq 44
        40: .line 409
            aload 7 /* op */
            checkcast org.graalvm.compiler.nodes.calc.ZeroExtendNode
            astore 13 /* zeroExtendNode */
        start local 13 // org.graalvm.compiler.nodes.calc.ZeroExtendNode zeroExtendNode
        41: .line 410
            aload 13 /* zeroExtendNode */
            invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.isInputAlwaysPositive:()Z
            ifne 42
            aload 13 /* zeroExtendNode */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            checkcast org.graalvm.compiler.core.common.type.IntegerStamp
            invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.isPositive:()Z
            ifne 42
            iconst_0
            goto 43
      StackMap locals: int org.graalvm.compiler.nodes.calc.ZeroExtendNode
      StackMap stack:
        42: iconst_1
      StackMap locals:
      StackMap stack: int
        43: istore 12 /* isValidConvert */
        end local 13 // org.graalvm.compiler.nodes.calc.ZeroExtendNode zeroExtendNode
        44: .line 413
      StackMap locals:
      StackMap stack:
            iload 12 /* isValidConvert */
            ifeq 46
        45: .line 414
            new org.graalvm.compiler.loop.DerivedConvertedInductionVariable
            dup
            aload 0 /* loop */
            aload 5 /* baseIv */
            aload 7 /* op */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 7 /* op */
            invokespecial org.graalvm.compiler.loop.DerivedConvertedInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/ValueNode;)V
            astore 9 /* iv */
        end local 12 // boolean isValidConvert
        end local 11 // org.graalvm.compiler.nodes.ValueNode scale
        46: .line 418
      StackMap locals:
      StackMap stack:
            aload 9 /* iv */
            ifnull 49
        47: .line 419
            aload 1 /* ivs */
            aload 7 /* op */
            aload 9 /* iv */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        48: .line 420
            aload 2 /* scanQueue */
            aload 9 /* iv */
            invokeinterface java.util.Queue.offer:(Ljava/lang/Object;)Z
            pop
        end local 10 // org.graalvm.compiler.nodes.ValueNode offset
        end local 9 // org.graalvm.compiler.loop.InductionVariable iv
        end local 7 // org.graalvm.compiler.nodes.ValueNode op
        49: .line 386
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        end local 6 // org.graalvm.compiler.nodes.ValueNode baseIvNode
        end local 5 // org.graalvm.compiler.loop.InductionVariable baseIv
        50: .line 383
      StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode
      StackMap stack:
            aload 2 /* scanQueue */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 16
        51: .line 424
            aload 1 /* ivs */
            areturn
        end local 4 // org.graalvm.compiler.nodes.AbstractEndNode forwardEnd
        end local 3 // org.graalvm.compiler.nodes.LoopBeginNode loopBegin
        end local 2 // java.util.Queue scanQueue
        end local 1 // jdk.internal.vm.compiler.collections.EconomicMap ivs
        end local 0 // org.graalvm.compiler.loop.LoopEx loop
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   52     0            loop  Lorg/graalvm/compiler/loop/LoopEx;
            1   52     1             ivs  Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
            2   52     2       scanQueue  Ljava/util/Queue<Lorg/graalvm/compiler/loop/InductionVariable;>;
            3   52     3       loopBegin  Lorg/graalvm/compiler/nodes/LoopBeginNode;
            4   52     4      forwardEnd  Lorg/graalvm/compiler/nodes/AbstractEndNode;
            6   14     5             phi  Lorg/graalvm/compiler/nodes/PhiNode;
            7   14     7       backValue  Lorg/graalvm/compiler/nodes/ValueNode;
           10   14     8          stride  Lorg/graalvm/compiler/nodes/ValueNode;
           12   14     9             biv  Lorg/graalvm/compiler/loop/BasicInductionVariable;
           17   50     5          baseIv  Lorg/graalvm/compiler/loop/InductionVariable;
           18   50     6      baseIvNode  Lorg/graalvm/compiler/nodes/ValueNode;
           20   49     7              op  Lorg/graalvm/compiler/nodes/ValueNode;
           25   49     9              iv  Lorg/graalvm/compiler/loop/InductionVariable;
           26   49    10          offset  Lorg/graalvm/compiler/nodes/ValueNode;
           33   46    11           scale  Lorg/graalvm/compiler/nodes/ValueNode;
           39   46    12  isValidConvert  Z
           41   44    13  zeroExtendNode  Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;
    Signature: (Lorg/graalvm/compiler/loop/LoopEx;)Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
    MethodParameters:
      Name  Flags
      loop  

  private static org.graalvm.compiler.nodes.ValueNode addSub(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode);
    descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.loop.LoopEx loop
        start local 1 // org.graalvm.compiler.nodes.ValueNode op
        start local 2 // org.graalvm.compiler.nodes.ValueNode base
         0: .line 428
            aload 1 /* op */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            instanceof org.graalvm.compiler.core.common.type.IntegerStamp
            ifeq 6
            aload 1 /* op */
            instanceof org.graalvm.compiler.nodes.calc.AddNode
            ifne 1
            aload 1 /* op */
            instanceof org.graalvm.compiler.nodes.calc.SubNode
            ifeq 6
         1: .line 429
      StackMap locals:
      StackMap stack:
            aload 1 /* op */
            checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
            astore 3 /* aritOp */
        start local 3 // org.graalvm.compiler.nodes.calc.BinaryArithmeticNode aritOp
         2: .line 430
            aload 3 /* aritOp */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 2 /* base */
            if_acmpne 4
            aload 0 /* loop */
            aload 3 /* aritOp */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 4
         3: .line 431
            aload 3 /* aritOp */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
         4: .line 432
      StackMap locals: org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
      StackMap stack:
            aload 3 /* aritOp */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 2 /* base */
            if_acmpne 6
            aload 0 /* loop */
            aload 3 /* aritOp */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 6
         5: .line 433
            aload 3 /* aritOp */
            invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 3 // org.graalvm.compiler.nodes.calc.BinaryArithmeticNode aritOp
         6: .line 436
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.graalvm.compiler.nodes.ValueNode base
        end local 1 // org.graalvm.compiler.nodes.ValueNode op
        end local 0 // org.graalvm.compiler.loop.LoopEx loop
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    loop  Lorg/graalvm/compiler/loop/LoopEx;
            0    7     1      op  Lorg/graalvm/compiler/nodes/ValueNode;
            0    7     2    base  Lorg/graalvm/compiler/nodes/ValueNode;
            2    6     3  aritOp  Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode<*>;
    MethodParameters:
      Name  Flags
      loop  
      op    
      base  

  private static org.graalvm.compiler.nodes.ValueNode mul(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode);
    descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.loop.LoopEx loop
        start local 1 // org.graalvm.compiler.nodes.ValueNode op
        start local 2 // org.graalvm.compiler.nodes.ValueNode base
         0: .line 440
            aload 1 /* op */
            instanceof org.graalvm.compiler.nodes.calc.MulNode
            ifeq 6
         1: .line 441
            aload 1 /* op */
            checkcast org.graalvm.compiler.nodes.calc.MulNode
            astore 3 /* mul */
        start local 3 // org.graalvm.compiler.nodes.calc.MulNode mul
         2: .line 442
            aload 3 /* mul */
            invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 2 /* base */
            if_acmpne 4
            aload 0 /* loop */
            aload 3 /* mul */
            invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 4
         3: .line 443
            aload 3 /* mul */
            invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
         4: .line 444
      StackMap locals: org.graalvm.compiler.nodes.calc.MulNode
      StackMap stack:
            aload 3 /* mul */
            invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 2 /* base */
            if_acmpne 6
            aload 0 /* loop */
            aload 3 /* mul */
            invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 6
         5: .line 445
            aload 3 /* mul */
            invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 3 // org.graalvm.compiler.nodes.calc.MulNode mul
         6: .line 448
      StackMap locals:
      StackMap stack:
            aload 1 /* op */
            instanceof org.graalvm.compiler.nodes.calc.LeftShiftNode
            ifeq 10
         7: .line 449
            aload 1 /* op */
            checkcast org.graalvm.compiler.nodes.calc.LeftShiftNode
            astore 3 /* shift */
        start local 3 // org.graalvm.compiler.nodes.calc.LeftShiftNode shift
         8: .line 450
            aload 3 /* shift */
            invokevirtual org.graalvm.compiler.nodes.calc.LeftShiftNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 2 /* base */
            if_acmpne 10
            aload 3 /* shift */
            invokevirtual org.graalvm.compiler.nodes.calc.LeftShiftNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
            ifeq 10
         9: .line 451
            aload 2 /* base */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            iconst_1
            aload 3 /* shift */
            invokevirtual org.graalvm.compiler.nodes.calc.LeftShiftNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            ishl
            i2l
            aload 2 /* base */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forIntegerStamp:(Lorg/graalvm/compiler/core/common/type/Stamp;JLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            areturn
        end local 3 // org.graalvm.compiler.nodes.calc.LeftShiftNode shift
        10: .line 454
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.graalvm.compiler.nodes.ValueNode base
        end local 1 // org.graalvm.compiler.nodes.ValueNode op
        end local 0 // org.graalvm.compiler.loop.LoopEx loop
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   loop  Lorg/graalvm/compiler/loop/LoopEx;
            0   11     1     op  Lorg/graalvm/compiler/nodes/ValueNode;
            0   11     2   base  Lorg/graalvm/compiler/nodes/ValueNode;
            2    6     3    mul  Lorg/graalvm/compiler/nodes/calc/MulNode;
            8   10     3  shift  Lorg/graalvm/compiler/nodes/calc/LeftShiftNode;
    MethodParameters:
      Name  Flags
      loop  
      op    
      base  

  public void deleteUnusedNodes();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 461
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
            ifnull 5
         1: .line 462
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.getValues:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: org.graalvm.compiler.loop.LoopEx top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.loop.InductionVariable
            astore 1 /* iv */
        start local 1 // org.graalvm.compiler.loop.InductionVariable iv
         3: .line 463
            aload 1 /* iv */
            invokevirtual org.graalvm.compiler.loop.InductionVariable.deleteUnusedNodes:()V
        end local 1 // org.graalvm.compiler.loop.InductionVariable iv
         4: .line 462
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 466
      StackMap locals: org.graalvm.compiler.loop.LoopEx
      StackMap stack:
            return
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/graalvm/compiler/loop/LoopEx;
            3    4     1    iv  Lorg/graalvm/compiler/loop/InductionVariable;

  public boolean canDuplicateLoop();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx this
         0: .line 472
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.LoopEx.inside:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
            invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
            invokevirtual org.graalvm.compiler.graph.NodeBitMap.iterator:()Ljava/util/Iterator;
            astore 2
            goto 8
      StackMap locals: org.graalvm.compiler.loop.LoopEx top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 1 /* node */
        start local 1 // org.graalvm.compiler.graph.Node node
         2: .line 473
            aload 1 /* node */
            instanceof org.graalvm.compiler.nodes.debug.ControlFlowAnchored
            ifeq 4
         3: .line 474
            iconst_0
            ireturn
         4: .line 476
      StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.graph.Node java.util.Iterator
      StackMap stack:
            aload 1 /* node */
            instanceof org.graalvm.compiler.nodes.FrameState
            ifeq 8
         5: .line 477
            aload 1 /* node */
            checkcast org.graalvm.compiler.nodes.FrameState
            astore 3 /* frameState */
        start local 3 // org.graalvm.compiler.nodes.FrameState frameState
         6: .line 478
            aload 3 /* frameState */
            invokevirtual org.graalvm.compiler.nodes.FrameState.isExceptionHandlingBCI:()Z
            ifeq 8
         7: .line 479
            iconst_0
            ireturn
        end local 3 // org.graalvm.compiler.nodes.FrameState frameState
        end local 1 // org.graalvm.compiler.graph.Node node
         8: .line 472
      StackMap locals: org.graalvm.compiler.loop.LoopEx top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         9: .line 483
            iconst_1
            ireturn
        end local 0 // org.graalvm.compiler.loop.LoopEx this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/graalvm/compiler/loop/LoopEx;
            2    8     1        node  Lorg/graalvm/compiler/graph/Node;
            6    8     3  frameState  Lorg/graalvm/compiler/nodes/FrameState;

  static int[] $SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 79
            getstatic org.graalvm.compiler.loop.LoopEx.$SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.graalvm.compiler.core.common.calc.Condition.values:()[Lorg/graalvm/compiler/core/common/calc/Condition;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.AE:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            bipush 7
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.AT:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            bipush 9
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.BE:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            bipush 8
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.BT:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            bipush 10
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.EQ:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            iconst_1
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.GE:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            bipush 6
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.GT:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            iconst_5
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.LE:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            iconst_4
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.LT:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            iconst_3
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic org.graalvm.compiler.core.common.calc.Condition.NE:Lorg/graalvm/compiler/core/common/calc/Condition;
            invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
            iconst_2
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            dup
            putstatic org.graalvm.compiler.loop.LoopEx.$SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
}
SourceFile: "LoopEx.java"
NestMembers:
  org.graalvm.compiler.loop.LoopEx$InvariantPredicate
InnerClasses:
  public final Direction = org.graalvm.compiler.loop.InductionVariable$Direction of org.graalvm.compiler.loop.InductionVariable
  private InvariantPredicate = org.graalvm.compiler.loop.LoopEx$InvariantPredicate of org.graalvm.compiler.loop.LoopEx