// File: /workspace/github_c_makefile_star2_O2/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 0x12ef9(%rip), %rcx     # 0x2a760
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 0x28cb3
movl $0x1, 0xe8(%rbx)
movq 0x1ede3(%rip), %rax     # 0x36680
movq %rax, 0x7c(%rbx)
movl 0x1ede1(%rip), %eax     # 0x36688
jmp 0x17afd
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 0x28863
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 0x1ebce(%rip), %rax     # 0x364e8
movq %rax, 0x7c(%rbx)
movl 0x1ebcc(%rip), %eax     # 0x364f0
jmp 0x17afd
cmpb $0x4, 0x1dc(%rbx)
jne 0x17939
movb $0x1, 0x1dc(%rbx)
movl $0x10003, 0x60(%rbx)    # imm = 0x10003
movl $0x20746f6e, 0x68(%rbx) # imm = 0x20746F6E
movb $0x0, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x29049
movl 0x1ebbb(%rip), %eax     # 0x36514
movl %eax, 0x84(%rbx)
movq 0x1eba6(%rip), %rax     # 0x3650c
jmp 0x17995
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x2067656e, 0x68(%rbx) # imm = 0x2067656E
movb $0x0, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x29049
movl 0x1eb74(%rip), %eax     # 0x364fc
movl %eax, 0x84(%rbx)
movq 0x1eb5f(%rip), %rax     # 0x364f4
movq %rax, 0x7c(%rbx)
jmp 0x17b03
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 0x28863
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 0x1e94e(%rip), %rax     # 0x3635c
movq %rax, 0x7c(%rbx)
movl 0x1e94c(%rip), %eax     # 0x36364
jmp 0x17afd
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 0x28863
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 0x1e8e5(%rip), %rax     # 0x36368
movq %rax, 0x7c(%rbx)
movl 0x1e8e3(%rip), %eax     # 0x36370
jmp 0x17afd
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 0x28863
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 0x1e821(%rip), %rax     # 0x36314
movq %rax, 0x7c(%rbx)
movl 0x1e81f(%rip), %eax     # 0x3631c
movl %eax, 0x84(%rbx)
popq %rbx
retq