public abstract class org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase implements org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase
  super_class: java.lang.Object
{
  private final org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider backupSlotProvider;
    descriptor: Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$BackupSlotProvider;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider);
    descriptor: (Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$BackupSlotProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase this
        start local 1 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider backupSlotProvider
         0: .line 96
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 97
            aload 0 /* this */
            aload 1 /* backupSlotProvider */
            putfield org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase.backupSlotProvider:Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$BackupSlotProvider;
         2: .line 98
            return
        end local 1 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider backupSlotProvider
        end local 0 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase;
            0    3     1  backupSlotProvider  Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$BackupSlotProvider;
    MethodParameters:
                    Name  Flags
      backupSlotProvider  

  public final org.graalvm.compiler.lir.amd64.AMD64LIRInstruction createStackMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/amd64/AMD64LIRInstruction;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase this
        start local 1 // jdk.vm.ci.meta.AllocatableValue result
        start local 2 // jdk.vm.ci.meta.AllocatableValue input
         0: .line 102
            aload 1 /* result */
            invokevirtual jdk.vm.ci.meta.AllocatableValue.getPlatformKind:()Ljdk/vm/ci/meta/PlatformKind;
            checkcast jdk.vm.ci.amd64.AMD64Kind
            astore 3 /* kind */
        start local 3 // jdk.vm.ci.amd64.AMD64Kind kind
         1: .line 103
            aload 3 /* kind */
            invokevirtual jdk.vm.ci.amd64.AMD64Kind.getSizeInBytes:()I
            lookupswitch { // 2
                    2: 2
                    8: 3
              default: 4
          }
         2: .line 105
      StackMap locals: jdk.vm.ci.amd64.AMD64Kind
      StackMap stack:
            new org.graalvm.compiler.lir.amd64.AMD64Move$AMD64PushPopStackMove
            dup
            getstatic org.graalvm.compiler.asm.amd64.AMD64BaseAssembler$OperandSize.WORD:Lorg/graalvm/compiler/asm/amd64/AMD64BaseAssembler$OperandSize;
            aload 1 /* result */
            aload 2 /* input */
            invokespecial org.graalvm.compiler.lir.amd64.AMD64Move$AMD64PushPopStackMove.<init>:(Lorg/graalvm/compiler/asm/amd64/AMD64BaseAssembler$OperandSize;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
         3: .line 107
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.lir.amd64.AMD64Move$AMD64PushPopStackMove
            dup
            getstatic org.graalvm.compiler.asm.amd64.AMD64BaseAssembler$OperandSize.QWORD:Lorg/graalvm/compiler/asm/amd64/AMD64BaseAssembler$OperandSize;
            aload 1 /* result */
            aload 2 /* input */
            invokespecial org.graalvm.compiler.lir.amd64.AMD64Move$AMD64PushPopStackMove.<init>:(Lorg/graalvm/compiler/asm/amd64/AMD64BaseAssembler$OperandSize;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
         4: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase.backupSlotProvider:Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$BackupSlotProvider;
            aload 2 /* input */
            invokevirtual jdk.vm.ci.meta.AllocatableValue.getPlatformKind:()Ljdk/vm/ci/meta/PlatformKind;
            invokevirtual org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider.getScratchRegister:(Ljdk/vm/ci/meta/PlatformKind;)Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$RegisterBackupPair;
            astore 4 /* backup */
        start local 4 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$RegisterBackupPair backup
         5: .line 110
            aload 4 /* backup */
            getfield org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$RegisterBackupPair.register:Ljdk/vm/ci/code/Register;
            astore 5 /* scratchRegister */
        start local 5 // jdk.vm.ci.code.Register scratchRegister
         6: .line 111
            aload 4 /* backup */
            getfield org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$RegisterBackupPair.backupSlot:Lorg/graalvm/compiler/lir/VirtualStackSlot;
            astore 6 /* backupSlot */
        start local 6 // org.graalvm.compiler.lir.VirtualStackSlot backupSlot
         7: .line 112
            aload 0 /* this */
            aload 1 /* result */
            aload 2 /* input */
            aload 5 /* scratchRegister */
            aload 6 /* backupSlot */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase.createStackMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/amd64/AMD64LIRInstruction;
            areturn
        end local 6 // org.graalvm.compiler.lir.VirtualStackSlot backupSlot
        end local 5 // jdk.vm.ci.code.Register scratchRegister
        end local 4 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$RegisterBackupPair backup
        end local 3 // jdk.vm.ci.amd64.AMD64Kind kind
        end local 2 // jdk.vm.ci.meta.AllocatableValue input
        end local 1 // jdk.vm.ci.meta.AllocatableValue result
        end local 0 // org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase;
            0    8     1           result  Ljdk/vm/ci/meta/AllocatableValue;
            0    8     2            input  Ljdk/vm/ci/meta/AllocatableValue;
            1    8     3             kind  Ljdk/vm/ci/amd64/AMD64Kind;
            5    8     4           backup  Lorg/graalvm/compiler/core/amd64/AMD64MoveFactoryBase$RegisterBackupPair;
            6    8     5  scratchRegister  Ljdk/vm/ci/code/Register;
            7    8     6       backupSlot  Lorg/graalvm/compiler/lir/VirtualStackSlot;
    MethodParameters:
        Name  Flags
      result  
      input   

  public abstract org.graalvm.compiler.lir.amd64.AMD64LIRInstruction createStackMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.code.Register, jdk.vm.ci.meta.AllocatableValue);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/amd64/AMD64LIRInstruction;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                 Name  Flags
      result           
      input            
      scratchRegister  
      backupSlot       

  public org.graalvm.compiler.lir.LIRInstruction createStackMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase.createStackMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/amd64/AMD64LIRInstruction;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "AMD64MoveFactoryBase.java"
NestMembers:
  org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider  org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$RegisterBackupPair
InnerClasses:
  public OperandSize = org.graalvm.compiler.asm.amd64.AMD64BaseAssembler$OperandSize of org.graalvm.compiler.asm.amd64.AMD64BaseAssembler
  public final BackupSlotProvider = org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$BackupSlotProvider of org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase
  private RegisterBackupPair = org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase$RegisterBackupPair of org.graalvm.compiler.core.amd64.AMD64MoveFactoryBase
  public final AMD64PushPopStackMove = org.graalvm.compiler.lir.amd64.AMD64Move$AMD64PushPopStackMove of org.graalvm.compiler.lir.amd64.AMD64Move
  public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool