; assembly | /* r2dec pseudo code output */ | /* bbldc_calendardaycountutil.t/none @ 0x404b00 */ | #include | ; (fcn) method.BloombergLP::bbldc::CalendarDayCountUtil.yearsDiff_BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Calendar_const__BloombergLP::bbldc::DayCountConvention::Enum_ () | uint64_t method_BloombergLP::bbldc::CalendarDayCountUtil_yearsDiff_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Calendar_const_BloombergLP::bbldc::DayCountConvention::Enum_ (uint32_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bbldc::CalendarDayCountUtil::yearsDiff(BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Calendar const&, BloombergLP::bbldc::DayCountConvention::Enum) */ 0x00404b00 xorpd xmm0, xmm0 | __asm ("xorpd xmm0, xmm0"); 0x00404b04 cmp ecx, 0xa | | if (ecx == 0xa) { 0x00404b07 jne 0x404b97 | 0x00404b0d push r14 | 0x00404b0f push rbx | 0x00404b10 push rax | 0x00404b11 mov eax, dword [rdi] | eax = *(rdi); 0x00404b13 mov ecx, dword [rsi] | ecx = *(rsi); 0x00404b15 cmp eax, ecx | | if (eax < ecx) { 0x00404b17 jge 0x404b30 | 0x00404b19 mov edi, dword [rdx] | edi = *(rdx); 0x00404b1b sub eax, edi | eax -= edi; 0x00404b1d movsxd rsi, eax | rsi = (int64_t) eax; 0x00404b20 sub ecx, edi | ecx -= edi; 0x00404b22 cmp ecx, 0xffffffff | | if (ecx == 0xffffffff) { 0x00404b25 jne 0x404b4d | 0x00404b27 mov rbx, qword [rdx + 0xc8] | rbx = *((rdx + 0xc8)); 0x00404b2e jmp 0x404b50 | | } else { 0x00404b30 xor ebx, ebx | ebx = 0; 0x00404b32 cmp eax, ecx | | if (eax <= ecx) { 0x00404b34 jle 0x404b81 | goto label_0; | } 0x00404b36 mov edi, dword [rdx] | edi = *(rdx); 0x00404b38 sub ecx, edi | ecx -= edi; 0x00404b3a movsxd rsi, ecx | rsi = (int64_t) ecx; 0x00404b3d sub eax, edi | eax -= edi; 0x00404b3f cmp eax, 0xffffffff | | if (eax != 0xffffffff) { 0x00404b42 jne 0x404b66 | goto label_1; | } 0x00404b44 mov r14, qword [rdx + 0xc8] | r14 = *((rdx + 0xc8)); 0x00404b4b jmp 0x404b69 | goto label_2; | } 0x00404b4d movsxd rbx, ecx | rbx = (int64_t) ecx; | } 0x00404b50 mov rdi, qword [rdx + 0xa8] | 0x00404b57 sub rbx, rsi | rbx -= rsi; 0x00404b5a mov rdx, rbx | 0x00404b5d call 0x4096d0 | eax = BloombergLP::bdlb::BitStringUtil::num1(unsigned longconst*,unsigned long,unsigned long) (*((rdx + 0xa8)), rsi, rbx); 0x00404b62 sub ebx, eax | ebx -= eax; 0x00404b64 jmp 0x404b81 | goto label_0; | label_1: 0x00404b66 movsxd r14, eax | r14 = (int64_t) eax; | label_2: 0x00404b69 mov rdi, qword [rdx + 0xa8] | 0x00404b70 sub r14, rsi | r14 -= rsi; 0x00404b73 mov rdx, r14 | 0x00404b76 call 0x4096d0 | rax = BloombergLP::bdlb::BitStringUtil::num1(unsigned longconst*,unsigned long,unsigned long) (*((rdx + 0xa8)), rsi, r14); 0x00404b7b mov rbx, rax | rbx = rax; 0x00404b7e sub ebx, r14d | ebx -= r14d; | label_0: 0x00404b81 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00404b84 cvtsi2sd xmm0, ebx | __asm ("cvtsi2sd xmm0, ebx"); 0x00404b88 divsd xmm0, qword [rip + 0x300a0] | __asm ("divsd xmm0, qword [0x00434c30]"); 0x00404b90 add rsp, 8 | 0x00404b94 pop rbx | 0x00404b95 pop r14 | | } 0x00404b97 ret | return rax; | }