// File: /workspace/github_c_makefile_star2_O3/buptlxb[P]xRay/disasm/Routines_Disasm.c
// Function: EvIv
void __bea_callspec__ EvIv(PDISASM pMyDisasm)
{
    if (GV.OperandSize >= 32) {
        if (GV.OperandSize == 64) {
            GV.MemDecoration = Arg1qword;
        }
        else {
            GV.MemDecoration = Arg1dword;
        }
        GV.ImmediatSize = 32;                       /* place this instruction before MOD_RM routine to inform it there is an immediat value */
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+6;
        if (!Security(0, pMyDisasm)) return;
        #ifndef BEA_LIGHT_DISASSEMBLY
            if (GV.OperandSize == 64) {
                (void) CopyFormattedNumber(pMyDisasm, (char*) &(*pMyDisasm).Argument2.ArgMnemonic,"%.16llX",(Int64) *((Int32*)(UIntPtr) (GV.EIP_-4)));
            }
            else {
                (void) CopyFormattedNumber(pMyDisasm, (char*) &(*pMyDisasm).Argument2.ArgMnemonic,"%.8X",(Int64) *((UInt32*)(UIntPtr) (GV.EIP_-4)));
            }
        #endif

        (*pMyDisasm).Argument2.ArgType = CONSTANT_TYPE+ABSOLUTE_;
        (*pMyDisasm).Argument2.ArgSize = 32;
        (*pMyDisasm).Instruction.Immediat = *((UInt32*)(UIntPtr) (GV.EIP_-4));
    }
    else {
        GV.MemDecoration = Arg1word;
        GV.ImmediatSize = 16;
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        GV.EIP_ += GV.DECALAGE_EIP+4;
        if (!Security(0, pMyDisasm)) return;
        #ifndef BEA_LIGHT_DISASSEMBLY
           (void) CopyFormattedNumber(pMyDisasm, (char*) &(*pMyDisasm).Argument2.ArgMnemonic,"%.4X",(Int64)*((UInt16*)(UIntPtr) (GV.EIP_-2)));
        #endif
        (*pMyDisasm).Argument2.ArgType = CONSTANT_TYPE+ABSOLUTE_;
        (*pMyDisasm).Argument2.ArgSize = 16;
        (*pMyDisasm).Instruction.Immediat = *((UInt16*)(UIntPtr) (GV.EIP_-2));
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl 0x20c(%rdi), %eax
cmpl $0x20, %eax
jl 0x2b00c
xorl %ecx, %ecx
cmpl $0x40, %eax
sete %cl
addl $0x3, %ecx
movl %ecx, 0x210(%rbx)
movl $0x20, 0x260(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x6, %eax
addq 0x1f0(%rbx), %rax
movq %rax, 0x1f0(%rbx)
movq 0x250(%rbx), %rcx
decq %rcx
cmpq %rax, %rcx
jb 0x2b055
leaq 0x104(%rbx), %rsi
cmpl $0x40, 0x20c(%rbx)
movslq -0x4(%rax), %rcx
jne 0x2b099
leaq 0x2a4d(%rip), %rdx      # 0x2da54
jmp 0x2b0a2
movl $0x2, 0x210(%rbx)
movl $0x10, 0x260(%rbx)
leaq 0x9c(%rbx), %rdi
movq %rbx, %rsi
callq 0x2aa8c
movl 0x244(%rbx), %eax
addl $0x4, %eax
addq 0x1f0(%rbx), %rax
movq %rax, 0x1f0(%rbx)
movq 0x250(%rbx), %rcx
decq %rcx
cmpq %rax, %rcx
jae 0x2b061
movl $0x1, 0x289(%rbx)
jmp 0x2b0cc
leaq 0x104(%rbx), %rsi
movzwl -0x2(%rax), %ecx
leaq 0x29ff(%rip), %rdx      # 0x2da72
movq %rbx, %rdi
callq 0x2a60b
movabsq $0x1088000000, %rax     # imm = 0x1088000000
movq %rax, 0x144(%rbx)
movq 0x1f0(%rbx), %rax
movzwl -0x2(%rax), %eax
jmp 0x2b0c5
movl %ecx, %ecx
leaq 0x29ba(%rip), %rdx      # 0x2da5c
movq %rbx, %rdi
callq 0x2a60b
movabsq $0x2088000000, %rax     # imm = 0x2088000000
movq %rax, 0x144(%rbx)
movq 0x1f0(%rbx), %rax
movl -0x4(%rax), %eax
movq %rax, 0x90(%rbx)
popq %rbx
retq