; assembly | /* r2dec pseudo code output */ | /* balber_berutil.t/assume @ 0x476640 */ | #include | ; (fcn) method.BloombergLP::bdldfp::DecimalImpUtil.normalize_BloombergLP::bdldfp::DecimalImpUtil_IntelDfp::ValueType32_ () | int64_t method_BloombergLP::bdldfp::DecimalImpUtil_normalize_BloombergLP::bdldfp::DecimalImpUtil_IntelDfp::ValueType32_ (int64_t arg1) { | rdi = arg1; | /* BloombergLP::bdldfp::DecimalImpUtil::normalize(BloombergLP::bdldfp::DecimalImpUtil_IntelDfp::ValueType32) */ 0x00476640 push rbp | 0x00476641 push rbx | 0x00476642 push rax | 0x00476643 mov ebx, edi | ebx = edi; 0x00476645 call 0x4851a0 | _bid32_class (); 0x0047664a cdqe | rax = (int64_t) eax; 0x0047664c mov edx, ebx | edx = ebx; 0x0047664e and edx, 0x60000000 | edx &= 0x60000000; 0x00476654 mov ecx, dword [rax*4 + 0x50a110] | ecx = *((rax*4 + 0x50a110)); 0x0047665b cmp edx, 0x60000000 | | if (edx == 0x60000000) { 0x00476661 jne 0x476694 | 0x00476663 mov edx, ebx | edx = ebx; 0x00476665 and edx, 0x78000000 | edx &= 0x78000000; 0x0047666b mov edi, ebx | edi = ebx; 0x0047666d and edi, 0x1fffff | edi &= 0x1fffff; 0x00476673 or edi, 0x800000 | edi |= 0x800000; 0x00476679 mov eax, ebx | eax = ebx; 0x0047667b shr eax, 0x15 | eax >>= 0x15; 0x0047667e movzx esi, al | esi = (int32_t) al; 0x00476681 lea eax, [rsi - 0x65] | eax = rsi - 0x65; 0x00476684 cmp edx, 0x78000000 | | if (edx == 0x78000000) { 0x0047668a cmove eax, esi | eax = esi; | } 0x0047668d jmp qword [rcx*8 + 0x50a098] | | } 0x00476694 mov eax, ebx | eax = ebx; 0x00476696 shr eax, 0x17 | eax >>= 0x17; 0x00476699 movzx eax, al | eax = (int32_t) al; 0x0047669c add eax, 0xffffff9b | eax += 0xffffff9b; 0x0047669f mov edi, ebx | edi = ebx; 0x004766a1 and edi, 0x7fffff | edi &= 0x7fffff; 0x004766a7 jmp qword [rcx*8 + 0x50a098] | | }