; assembly | /* r2dec pseudo code output */ | /* bbldc_calendardaycountutil.t/assume @ 0x404af0 */ | #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_ (int64_t arg3, int64_t arg2, int64_t arg1) { | 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) */ 0x00404af0 push r14 | 0x00404af2 push rbx | 0x00404af3 push rax | 0x00404af4 mov eax, dword [rdi] | eax = *(rdi); 0x00404af6 mov ecx, dword [rsi] | ecx = *(rsi); 0x00404af8 cmp eax, ecx | | if (eax < ecx) { 0x00404afa jge 0x404b13 | 0x00404afc mov edi, dword [rdx] | edi = *(rdx); 0x00404afe sub eax, edi | eax -= edi; 0x00404b00 movsxd rsi, eax | rsi = (int64_t) eax; 0x00404b03 sub ecx, edi | ecx -= edi; 0x00404b05 cmp ecx, 0xffffffff | | if (ecx == 0xffffffff) { 0x00404b08 jne 0x404b30 | 0x00404b0a mov rbx, qword [rdx + 0xc8] | rbx = *((rdx + 0xc8)); 0x00404b11 jmp 0x404b33 | | } else { 0x00404b13 xor ebx, ebx | ebx = 0; 0x00404b15 cmp eax, ecx | | if (eax <= ecx) { 0x00404b17 jle 0x404b64 | goto label_0; | } 0x00404b19 mov edi, dword [rdx] | edi = *(rdx); 0x00404b1b sub ecx, edi | ecx -= edi; 0x00404b1d movsxd rsi, ecx | rsi = (int64_t) ecx; 0x00404b20 sub eax, edi | eax -= edi; 0x00404b22 cmp eax, 0xffffffff | | if (eax != 0xffffffff) { 0x00404b25 jne 0x404b49 | goto label_1; | } 0x00404b27 mov r14, qword [rdx + 0xc8] | r14 = *((rdx + 0xc8)); 0x00404b2e jmp 0x404b4c | goto label_2; | } 0x00404b30 movsxd rbx, ecx | rbx = (int64_t) ecx; | } 0x00404b33 mov rdi, qword [rdx + 0xa8] | 0x00404b3a sub rbx, rsi | rbx -= rsi; 0x00404b3d mov rdx, rbx | 0x00404b40 call 0x409310 | eax = BloombergLP::bdlb::BitStringUtil::num1(unsigned longconst*,unsigned long,unsigned long) (*((rdx + 0xa8)), rsi, rbx); 0x00404b45 sub ebx, eax | ebx -= eax; 0x00404b47 jmp 0x404b64 | goto label_0; | label_1: 0x00404b49 movsxd r14, eax | r14 = (int64_t) eax; | label_2: 0x00404b4c mov rdi, qword [rdx + 0xa8] | 0x00404b53 sub r14, rsi | r14 -= rsi; 0x00404b56 mov rdx, r14 | 0x00404b59 call 0x409310 | rax = BloombergLP::bdlb::BitStringUtil::num1(unsigned longconst*,unsigned long,unsigned long) (*((rdx + 0xa8)), rsi, r14); 0x00404b5e mov rbx, rax | rbx = rax; 0x00404b61 sub ebx, r14d | ebx -= r14d; | label_0: 0x00404b64 cvtsi2sd xmm0, ebx | __asm ("cvtsi2sd xmm0, ebx"); 0x00404b68 divsd xmm0, qword [rip + 0x2fa28] | __asm ("divsd xmm0, qword [0x00434598]"); 0x00404b70 add rsp, 8 | 0x00404b74 pop rbx | 0x00404b75 pop r14 | 0x00404b77 ret | return rax; | }