// File: /workspace/github_c_makefile_star2_O3/buptlxb[P]xRay/disasm/instr_set/opcodes_Grp3.c
// Function: G3_Eb
void __bea_callspec__ G3_Eb(PDISASM pMyDisasm)
{
    GV.REGOPCODE = ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 3) & 0x7;
    if (GV.REGOPCODE == 0) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+BIT_UInt8;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "test ");
        #endif
        EbIb(pMyDisasm);
        (*pMyDisasm).Argument1.AccessMode = READ;
        FillFlags(pMyDisasm, 104);
    }
    else if (GV.REGOPCODE == 1) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+BIT_UInt8;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "test ");
        #endif
        EbIb(pMyDisasm);
        (*pMyDisasm).Argument1.AccessMode = READ;
        FillFlags(pMyDisasm, 104);
    }
    else if (GV.REGOPCODE == 2) {
        if ((*pMyDisasm).Prefix.LockPrefix == InvalidPrefix) {
            (*pMyDisasm).Prefix.LockPrefix = InUsePrefix;
        }
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+LOGICAL_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "not ");
        #endif
        Eb(pMyDisasm);
        FillFlags(pMyDisasm, 73);
    }
    else if (GV.REGOPCODE == 3) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "neg ");
        #endif
        Eb(pMyDisasm);
        FillFlags(pMyDisasm, 71);
    }
    else if (GV.REGOPCODE == 4) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "mul ");
        #endif
        GV.MemDecoration = Arg2byte;
        GV.OperandSize = 8;
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.OperandSize = 32;
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        (*pMyDisasm).Argument1.ArgSize = 8;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = REGISTER_TYPE+GENERAL_REG+REG0;
        FillFlags(pMyDisasm, 70);
    }
    else if (GV.REGOPCODE == 5) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "imul ");
        #endif
        GV.MemDecoration = Arg2byte;
        GV.OperandSize = 8;
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.OperandSize = 32;
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        (*pMyDisasm).Argument1.ArgSize = 8;
        FillFlags(pMyDisasm, 38);
    }
    else if (GV.REGOPCODE == 6) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "div ");
        #endif
        GV.MemDecoration = Arg2byte;
        GV.OperandSize = 8;
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.OperandSize = 32;
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        (*pMyDisasm).Argument1.ArgSize = 8;
        FillFlags(pMyDisasm, 31);
    }
    else if (GV.REGOPCODE == 7) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "idiv ");
        #endif
        GV.MemDecoration = Arg2byte;
        GV.OperandSize = 8;
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.OperandSize = 32;
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        (*pMyDisasm).Argument1.ArgSize = 8;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = REGISTER_TYPE+GENERAL_REG+REG0;
        FillFlags(pMyDisasm, 37);
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x1f0(%rdi), %rax
movzbl 0x1(%rax), %eax
shrl $0x3, %eax
andl $0x7, %eax
movl %eax, 0x240(%rdi)
leaq 0x15a72(%rip), %rcx     # 0x2d760
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10005, 0x60(%rbx)    # imm = 0x10005
movl $0x74736574, 0x68(%rbx) # imm = 0x74736574
movw $0x20, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x2aedf
movl $0x1, 0xe8(%rbx)
movq 0x2093c(%rip), %rax     # 0x38660
movq %rax, 0x7c(%rbx)
movl 0x2093a(%rip), %eax     # 0x38668
jmp 0x17fe3
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x206c756d, 0x68(%rbx) # imm = 0x206C756D
movb $0x0, 0x6c(%rbx)
movabsq $0x6500000008, %rax     # imm = 0x6500000008
movq %rax, 0x20c(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl $0x20, 0x20c(%rbx)
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movabsq $0x820020005, %rax      # imm = 0x820020005
movq %rax, 0xdc(%rbx)
movl $0x20020001, 0x98(%rbx) # imm = 0x20020001
movq 0x20727(%rip), %rax     # 0x384c8
movq %rax, 0x7c(%rbx)
movl 0x20725(%rip), %eax     # 0x384d0
jmp 0x17fe3
cmpb $0x4, 0x1dc(%rbx)
jne 0x17dc0
movb $0x1, 0x1dc(%rbx)
movl $0x10003, 0x60(%rbx)    # imm = 0x10003
movl $0x20746f6e, 0x68(%rbx) # imm = 0x20746F6E
movb $0x0, 0x6c(%rbx)
movabsq $0x100000008, %rax      # imm = 0x100000008
movq %rax, 0x20c(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl $0x20, 0x20c(%rbx)
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movq 0x206d9(%rip), %rax     # 0x384ec
movq %rax, 0x7c(%rbx)
movl 0x206d7(%rip), %eax     # 0x384f4
jmp 0x17fe3
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x2067656e, 0x68(%rbx) # imm = 0x2067656E
movb $0x0, 0x6c(%rbx)
movabsq $0x100000008, %rax      # imm = 0x100000008
movq %rax, 0x20c(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl $0x20, 0x20c(%rbx)
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movq 0x2065f(%rip), %rax     # 0x384d4
movq %rax, 0x7c(%rbx)
movl 0x2065d(%rip), %eax     # 0x384dc
jmp 0x17fe3
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x76696469, 0x68(%rbx) # imm = 0x76696469
movw $0x20, 0x6c(%rbx)
movabsq $0x6500000008, %rax     # imm = 0x6500000008
movq %rax, 0x20c(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl $0x20, 0x20c(%rbx)
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movabsq $0x820020005, %rax      # imm = 0x820020005
movq %rax, 0xdc(%rbx)
movl $0x20020001, 0x98(%rbx) # imm = 0x20020001
movq 0x20448(%rip), %rax     # 0x3833c
movq %rax, 0x7c(%rbx)
movl 0x20446(%rip), %eax     # 0x38344
jmp 0x17fe3
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x6c756d69, 0x68(%rbx) # imm = 0x6C756D69
movw $0x20, 0x6c(%rbx)
movabsq $0x6500000008, %rax     # imm = 0x6500000008
movq %rax, 0x20c(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl $0x20, 0x20c(%rbx)
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movabsq $0x820020005, %rax      # imm = 0x820020005
movq %rax, 0xdc(%rbx)
movq 0x203df(%rip), %rax     # 0x38348
movq %rax, 0x7c(%rbx)
movl 0x203dd(%rip), %eax     # 0x38350
jmp 0x17fe3
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x20766964, 0x68(%rbx) # imm = 0x20766964
movb $0x0, 0x6c(%rbx)
movabsq $0x6500000008, %rax     # imm = 0x6500000008
movq %rax, 0x20c(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl $0x20, 0x20c(%rbx)
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movabsq $0x820020005, %rax      # imm = 0x820020005
movq %rax, 0xdc(%rbx)
movq 0x2031b(%rip), %rax     # 0x382f4
movq %rax, 0x7c(%rbx)
movl 0x20319(%rip), %eax     # 0x382fc
movl %eax, 0x84(%rbx)
popq %rbx
retq