// File: /workspace/github_c_makefile_star2_O2/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 0x12c59(%rip), %rcx     # 0x2a780
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 0x28d5d
movl $0x1, 0xe8(%rbx)
movq 0x1eb23(%rip), %rax     # 0x36680
movq %rax, 0x7c(%rbx)
movl 0x1eb21(%rip), %eax     # 0x36688
jmp 0x17e12
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x206c756d, 0x68(%rbx) # imm = 0x206C756D
movb $0x0, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x17ca1
cmpl $0x20, %eax
jne 0x17ca9
pushq $0x67
jmp 0x17cae
cmpb $0x4, 0x1dc(%rbx)
jne 0x17bad
movb $0x1, 0x1dc(%rbx)
movl $0x10003, 0x60(%rbx)    # imm = 0x10003
movl $0x20746f6e, 0x68(%rbx) # imm = 0x20746F6E
movb $0x0, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x29089
movl 0x1e947(%rip), %eax     # 0x36514
movl %eax, 0x84(%rbx)
movq 0x1e932(%rip), %rax     # 0x3650c
jmp 0x17c09
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x2067656e, 0x68(%rbx) # imm = 0x2067656E
movb $0x0, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x29089
movl 0x1e900(%rip), %eax     # 0x364fc
movl %eax, 0x84(%rbx)
movq 0x1e8eb(%rip), %rax     # 0x364f4
movq %rax, 0x7c(%rbx)
jmp 0x17e18
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x76696469, 0x68(%rbx) # imm = 0x76696469
movw $0x20, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x17ca5
cmpl $0x20, %eax
jne 0x17d0f
pushq $0x67
jmp 0x17d14
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x6c756d69, 0x68(%rbx) # imm = 0x6C756D69
movw $0x20, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x17d04
cmpl $0x20, %eax
jne 0x17d67
pushq $0x67
jmp 0x17d6c
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x20766964, 0x68(%rbx) # imm = 0x20766964
movb $0x0, 0x6c(%rbx)
movl 0x20c(%rbx), %eax
cmpl $0x40, %eax
je 0x17d08
cmpl $0x20, %eax
jne 0x17dbf
pushq $0x67
jmp 0x17dc4
pushq $0x68
jmp 0x17cae
pushq $0x68
jmp 0x17d14
pushq $0x10
popq %rax
pushq $0x66
popq %rcx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x28863
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20020001, 0xdc(%rbx) # imm = 0x20020001
movl $0x20020005, 0x98(%rbx) # imm = 0x20020005
movq 0x1e7f3(%rip), %rax     # 0x364e8
movq %rax, 0x7c(%rbx)
movl 0x1e7f1(%rip), %eax     # 0x364f0
jmp 0x17e12
pushq $0x68
jmp 0x17d6c
pushq $0x68
jmp 0x17dc4
pushq $0x10
popq %rax
pushq $0x66
popq %rcx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x28863
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 0x1e604(%rip), %rax     # 0x3635c
movq %rax, 0x7c(%rbx)
movl 0x1e602(%rip), %eax     # 0x36364
jmp 0x17e12
pushq $0x10
popq %rax
pushq $0x66
popq %rcx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x28863
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20020001, 0xdc(%rbx) # imm = 0x20020001
movl $0x20020005, 0x98(%rbx) # imm = 0x20020005
movq 0x1e5b5(%rip), %rax     # 0x36368
movq %rax, 0x7c(%rbx)
movl 0x1e5b3(%rip), %eax     # 0x36370
jmp 0x17e12
pushq $0x10
popq %rax
pushq $0x66
popq %rcx
movl %ecx, 0x210(%rbx)
movl %eax, 0xe0(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x28863
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 0x1e50c(%rip), %rax     # 0x36314
movq %rax, 0x7c(%rbx)
movl 0x1e50a(%rip), %eax     # 0x3631c
movl %eax, 0x84(%rbx)
popq %rbx
retq