// File: /workspace/github_c_makefile_star2_O3/buptlxb[P]xRay/disasm/instr_set/opcodes_Grp3.c
// Function: G3_Ev
void __bea_callspec__ G3_Ev(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
        EvIv(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
        EvIv(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
        Ev(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
        Ev(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
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg2qword;
			(*pMyDisasm).Argument1.ArgSize = 64;			
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg2dword;
			(*pMyDisasm).Argument1.ArgSize = 32;				
        }
        else {
            GV.MemDecoration = Arg2word;
			(*pMyDisasm).Argument1.ArgSize = 16;				
        }
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        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
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg2qword;
			(*pMyDisasm).Argument1.ArgSize = 64;			
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg2dword;
			(*pMyDisasm).Argument1.ArgSize = 32;				
        }
        else {
            GV.MemDecoration = Arg2word;
			(*pMyDisasm).Argument1.ArgSize = 16;				
        }
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        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
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg2qword;
			(*pMyDisasm).Argument1.ArgSize = 64;			
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg2dword;
			(*pMyDisasm).Argument1.ArgSize = 32;				
        }
        else {
            GV.MemDecoration = Arg2word;
			(*pMyDisasm).Argument1.ArgSize = 16;				
        }
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = REGISTER_TYPE+GENERAL_REG+REG0+REG2;		
        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
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg2qword;
			(*pMyDisasm).Argument1.ArgSize = 64;			
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg2dword;
			(*pMyDisasm).Argument1.ArgSize = 32;				
        }
        else {
            GV.MemDecoration = Arg2word;
			(*pMyDisasm).Argument1.ArgSize = 16;				
        }
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+GENERAL_REG+REG0+REG2;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = REGISTER_TYPE+GENERAL_REG+REG0+REG2;		
        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 0x15773(%rip), %rcx     # 0x2d780
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 0x2af89
movl $0x1, 0xe8(%rbx)
movq 0x2061d(%rip), %rax     # 0x38660
movq %rax, 0x7c(%rbx)
movl 0x2061b(%rip), %eax     # 0x38668
jmp 0x18395
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x206c756d, 0x68(%rbx) # imm = 0x206C756D
movb $0x0, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x18208
cmpl $0x20, %eax
jne 0x18216
movl $0x67, %ecx
jmp 0x18220
cmpb $0x4, 0x1dc(%rbx)
jne 0x18096
movb $0x1, 0x1dc(%rbx)
movl $0x10003, 0x60(%rbx)    # imm = 0x10003
movl $0x20746f6e, 0x68(%rbx) # imm = 0x20746F6E
movb $0x0, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
xorl %ecx, %ecx
cmpl $0x20, %eax
sete %cl
orl $0x2, %ecx
cmpl $0x40, %eax
movl $0x4, %eax
cmovnel %ecx, %eax
movl %eax, 0x210(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movq 0x203fc(%rip), %rax     # 0x384ec
movq %rax, 0x7c(%rbx)
movl 0x203fa(%rip), %eax     # 0x384f4
jmp 0x18395
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x2067656e, 0x68(%rbx) # imm = 0x2067656E
movb $0x0, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
xorl %ecx, %ecx
cmpl $0x20, %eax
sete %cl
orl $0x2, %ecx
cmpl $0x40, %eax
movl $0x4, %eax
cmovnel %ecx, %eax
movl %eax, 0x210(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movq 0x2037b(%rip), %rax     # 0x384d4
movq %rax, 0x7c(%rbx)
movl 0x20379(%rip), %eax     # 0x384dc
jmp 0x18395
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x76696469, 0x68(%rbx) # imm = 0x76696469
movw $0x20, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x1820f
cmpl $0x20, %eax
jne 0x18286
movl $0x67, %ecx
jmp 0x18290
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x6c756d69, 0x68(%rbx) # imm = 0x6C756D69
movw $0x20, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x18275
cmpl $0x20, %eax
jne 0x182e2
movl $0x67, %ecx
jmp 0x182ec
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x20766964, 0x68(%rbx) # imm = 0x20766964
movb $0x0, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x1827c
cmpl $0x20, %eax
jne 0x1833e
movl $0x67, %ecx
jmp 0x18348
movl $0x68, %ecx
jmp 0x18220
movl $0x68, %ecx
jmp 0x18290
movl $0x10, %eax
movl $0x66, %ecx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20020001, 0xdc(%rbx) # imm = 0x20020001
movl $0x20020005, 0x98(%rbx) # imm = 0x20020005
movq 0x20262(%rip), %rax     # 0x384c8
movq %rax, 0x7c(%rbx)
movl 0x20260(%rip), %eax     # 0x384d0
jmp 0x18395
movl $0x68, %ecx
jmp 0x182ec
movl $0x68, %ecx
jmp 0x18348
movl $0x10, %eax
movl $0x66, %ecx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20020005, %eax       # imm = 0x20020005
movl %eax, 0xdc(%rbx)
movl %eax, 0x98(%rbx)
movq 0x20069(%rip), %rax     # 0x3833c
movq %rax, 0x7c(%rbx)
movl 0x20067(%rip), %eax     # 0x38344
jmp 0x18395
movl $0x10, %eax
movl $0x66, %ecx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20020001, 0xdc(%rbx) # imm = 0x20020001
movl $0x20020005, 0x98(%rbx) # imm = 0x20020005
movq 0x20016(%rip), %rax     # 0x38348
movq %rax, 0x7c(%rbx)
movl 0x20014(%rip), %eax     # 0x38350
jmp 0x18395
movl $0x10, %eax
movl $0x66, %ecx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20020005, %eax       # imm = 0x20020005
movl %eax, 0xdc(%rbx)
movl %eax, 0x98(%rbx)
movq 0x1ff69(%rip), %rax     # 0x382f4
movq %rax, 0x7c(%rbx)
movl 0x1ff67(%rip), %eax     # 0x382fc
movl %eax, 0x84(%rbx)
popq %rbx
retq