// File: /workspace/github_c_makefile_star2_O1/buptlxb[P]xRay/disasm/instr_set/opcodes_Grp5.c
// Function: G5_Ev
void __bea_callspec__ G5_Ev(PDISASM pMyDisasm)
{
    GV.REGOPCODE = ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 3) & 0x7;
    if (GV.REGOPCODE == 0) {
        if ((*pMyDisasm).Prefix.LockPrefix == InvalidPrefix) {
            (*pMyDisasm).Prefix.LockPrefix = InUsePrefix;
        }
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "inc ");
        #endif
        Ev(pMyDisasm);
        FillFlags(pMyDisasm, 40);
    }
    else if (GV.REGOPCODE == 1) {
        if ((*pMyDisasm).Prefix.LockPrefix == InvalidPrefix) {
            (*pMyDisasm).Prefix.LockPrefix = InUsePrefix;
        }
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+ARITHMETIC_INSTRUCTION;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "dec ");
        #endif
        Ev(pMyDisasm);
        FillFlags(pMyDisasm, 30);
    }
    else if (GV.REGOPCODE == 2) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+CONTROL_TRANSFER;
        (*pMyDisasm).Instruction.BranchType = CallType;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "call ");
        #endif
        if (GV.Architecture == 64) {
            GV.OperandSize = 64;
        }
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg1qword;
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg1dword;
        }
        else {
            GV.MemDecoration = Arg1word;
        }
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = GENERAL_REG+REG4;
    }
    else if (GV.REGOPCODE == 3) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+CONTROL_TRANSFER;
        (*pMyDisasm).Instruction.BranchType = CallType;
        if (GV.SYNTAX_ == ATSyntax) {
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "lcall ");
            #endif
        }
        else {
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "call far ");
            #endif
        }
        GV.MemDecoration = Arg1fword;
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = GENERAL_REG+REG4;
    }
    else if (GV.REGOPCODE == 4) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+CONTROL_TRANSFER;
        (*pMyDisasm).Instruction.BranchType = JmpType;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "jmp ");
        #endif
        if (GV.Architecture == 64) {
            GV.OperandSize = 64;
        }
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg1qword;
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg1dword;
        }
        else {
            GV.MemDecoration = Arg1word;
        }
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
    }
    else if (GV.REGOPCODE == 5) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+CONTROL_TRANSFER;
        (*pMyDisasm).Instruction.BranchType = JmpType;
        if (GV.SYNTAX_ == ATSyntax) {
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "ljmp ");
            #endif
        }
        else {
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "jmp far ");
            #endif
        }
        GV.MemDecoration = Arg1fword;
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
    }
    else if (GV.REGOPCODE == 6) {
        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+DATA_TRANSFER;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "push ");
        #endif
        if (GV.Architecture == 64) {
            GV.OperandSize = 64;
        }
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg2qword;
        }
        else if (GV.OperandSize == 32) {
            GV.MemDecoration = Arg2dword;
        }
        else {
            GV.MemDecoration = Arg2word;
        }
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+2;
        (*pMyDisasm).Argument1.ArgType = MEMORY_TYPE;
        (*pMyDisasm).Argument1.ArgSize = GV.OperandSize;
        (*pMyDisasm).Argument1.Memory.BaseRegister = REG4;
        (*pMyDisasm).Instruction.ImplicitModifiedRegs = GENERAL_REG+REG4;
    }
    else {
        FailDecode(pMyDisasm);
    }
}

// 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 0x14c16(%rip), %rcx     # 0x2d7a0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpb $0x4, 0x1dc(%rbx)
jne 0x18ba3
movb $0x1, 0x1dc(%rbx)
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x20636e69, 0x68(%rbx) # imm = 0x20636E69
movb $0x0, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x2ba05
movl 0x1f7a5(%rip), %eax     # 0x38368
movl %eax, 0x84(%rbx)
movq 0x1f790(%rip), %rax     # 0x38360
jmp 0x18d08
movl $0x10006, 0x60(%rbx)    # imm = 0x10006
movl $0xb, 0x78(%rbx)
movl $0x20706d6a, 0x68(%rbx) # imm = 0x20706D6A
movb $0x0, 0x6c(%rbx)
cmpl $0x40, 0x25c(%rbx)
jne 0x18c01
movl $0x40, 0x20c(%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)
jmp 0x18e31
movl $0x10006, 0x60(%rbx)    # imm = 0x10006
movl $0xc, 0x78(%rbx)
movl $0x6c6c6163, 0x68(%rbx) # imm = 0x6C6C6163
movw $0x20, 0x6c(%rbx)
cmpl $0x40, 0x25c(%rbx)
jne 0x18c56
movl $0x40, 0x20c(%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)
jmp 0x18deb
movl $0x10006, 0x60(%rbx)    # imm = 0x10006
movl $0xc, 0x78(%rbx)
leaq 0x68(%rbx), %rax
cmpl $0x400, 0x24c(%rbx)     # imm = 0x400
jne 0x18dce
movl $0x206c6c, 0x3(%rax)    # imm = 0x206C6C
movl $0x6c61636c, (%rax)     # imm = 0x6C61636C
jmp 0x18de1
movb $0x0, 0x6c(%rbx)
movl $0x203f3f3f, 0x68(%rbx) # imm = 0x203F3F3F
movl $0x1, 0x280(%rbx)
jmp 0x18e50
cmpb $0x4, 0x1dc(%rbx)
jne 0x18cdb
movb $0x1, 0x1dc(%rbx)
movl $0x10002, 0x60(%rbx)    # imm = 0x10002
movl $0x20636564, 0x68(%rbx) # imm = 0x20636564
movb $0x0, 0x6c(%rbx)
movq %rbx, %rdi
callq 0x2ba05
movl 0x1f5f5(%rip), %eax     # 0x382f0
movl %eax, 0x84(%rbx)
movq 0x1f5e0(%rip), %rax     # 0x382e8
movq %rax, 0x7c(%rbx)
jmp 0x18e50
movl $0x10006, 0x60(%rbx)    # imm = 0x10006
movl $0xb, 0x78(%rbx)
leaq 0x68(%rbx), %rax
cmpl $0x400, 0x24c(%rbx)     # imm = 0x400
jne 0x18e16
movw $0x20, 0x4(%rax)
movl $0x706d6a6c, (%rax)     # imm = 0x706D6A6C
jmp 0x18e27
movl $0x10001, 0x60(%rbx)    # imm = 0x10001
movl $0x68737570, 0x68(%rbx) # imm = 0x68737570
movw $0x20, 0x6c(%rbx)
cmpl $0x40, 0x25c(%rbx)
jne 0x18d6b
movl $0x40, 0x20c(%rbx)
movl 0x20c(%rbx), %eax
xorl %ecx, %ecx
cmpl $0x20, %eax
sete %cl
orl $0x66, %ecx
cmpl $0x40, %eax
movl $0x68, %eax
cmovnel %ecx, %eax
movl %eax, 0x210(%rbx)
leaq 0x104(%rbx), %rdi
movq %rbx, %rsi
callq 0x2b196
movl 0x20c(%rbx), %eax
movl 0x244(%rbx), %ecx
addl $0x2, %ecx
addq %rcx, 0x1f0(%rbx)
movl $0x40000000, 0xdc(%rbx) # imm = 0x40000000
movl %eax, 0xe0(%rbx)
movl $0x10, 0xec(%rbx)
jmp 0x18e0a
movabsq $0x726166206c6c6163, %rcx # imm = 0x726166206C6C6163
movq %rcx, (%rax)
movw $0x20, 0x8(%rax)
movl $0x7, 0x210(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2b196
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
movl $0x20010, 0x98(%rbx)    # imm = 0x20010
jmp 0x18e50
movabsq $0x2072616620706d6a, %rcx # imm = 0x2072616620706D6A
movq %rcx, (%rax)
movb $0x0, 0x8(%rax)
movl $0x7, 0x210(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2b196
movl 0x244(%rbx), %eax
addl $0x2, %eax
addq %rax, 0x1f0(%rbx)
popq %rbx
retq