; assembly | /* r2dec pseudo code output */ | /* balber_berutil.t/assume @ 0x476cf0 */ | #include | ; (fcn) method.BloombergLP::bdldfp::DecimalImpUtil.normalize_BloombergLP::bdldfp::DecimalImpUtil_IntelDfp::ValueType128_ () | int64_t method_BloombergLP::bdldfp::DecimalImpUtil_normalize_BloombergLP::bdldfp::DecimalImpUtil_IntelDfp::ValueType128_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdldfp::DecimalImpUtil::normalize(BloombergLP::bdldfp::DecimalImpUtil_IntelDfp::ValueType128) */ 0x00476cf0 push rbp | 0x00476cf1 push r15 | 0x00476cf3 push r14 | 0x00476cf5 push r13 | 0x00476cf7 push r12 | 0x00476cf9 push rbx | 0x00476cfa sub rsp, 0x18 | 0x00476cfe mov r14, rsi | r14 = rsi; 0x00476d01 mov r12, rdi | r12 = rdi; 0x00476d04 call 0x4a2490 | _bid128_class (); 0x00476d09 cdqe | rax = (int64_t) eax; 0x00476d0b movabs rcx, 0x6000000000000000 | rcx = 0x6000000000000000; 0x00476d15 mov rdx, r14 | rdx = r14; 0x00476d18 and rdx, rcx | rdx &= rcx; 0x00476d1b mov eax, dword [rax*4 + 0x50a110] | eax = *((rax*4 + 0x50a110)); 0x00476d22 cmp rdx, rcx | | if (rdx == rcx) { 0x00476d25 jne 0x476d56 | 0x00476d27 movabs rcx, 0x7fffffffffff | rcx = 0x7fffffffffff; 0x00476d31 and rcx, r14 | rcx &= r14; 0x00476d34 movabs rbp, 0x20000000000000 | 0x00476d3e or rbp, rcx | rbp |= rcx; 0x00476d41 mov r15, r14 | r15 = r14; 0x00476d44 shr r15, 0x2f | r15 >>= 0x2f; 0x00476d48 and r15d, 0x3fff | r15d &= 0x3fff; | /* switch table (5 cases) at 0x50a0e8 */ 0x00476d4f jmp qword [rax*8 + 0x50a0e8] | | } 0x00476d56 mov r15, r14 | r15 = r14; 0x00476d59 shr r15, 0x31 | r15 >>= 0x31; 0x00476d5d and r15d, 0x3fff | r15d &= 0x3fff; 0x00476d64 add r15d, 0xffffe7e0 | r15d += 0xffffe7e0; 0x00476d6b movabs rbp, 0x1ffffffffffff | 0x00476d75 and rbp, r14 | rbp &= r14; | /* switch table (5 cases) at 0x50a0e8 */ 0x00476d78 jmp qword [rax*8 + 0x50a0e8] | | }