; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/assume @ 0x44b680 */ | #include | ; (fcn) method.BloombergLP::bdld.operator_BloombergLP::bdld::Datum_const__BloombergLP::bdld::Datum_const_ () | int64_t method_BloombergLP::bdld_operator_BloombergLP::bdld::Datum_const_BloombergLP::bdld::Datum_const_ (int64_t arg2, uint32_t arg1) { | char * var_10h; | char * var_18h; | int64_t var_20h; | char * var_28h; | int64_t var_30h; | uint32_t var_38h; | uint32_t var_40h; | int64_t var_48h; | int64_t var_50h; | rsi = arg2; | rdi = arg1; | do { | /* BloombergLP::bdld::operator==(BloombergLP::bdld::Datum const&, BloombergLP::bdld::Datum const&) */ | label_1: 0x0044b680 push rbp | 0x0044b681 push r15 | 0x0044b683 push r14 | 0x0044b685 push r13 | 0x0044b687 push r12 | 0x0044b689 push rbx | 0x0044b68a sub rsp, 0x58 | 0x0044b68e mov r14, rsi | r14 = rsi; 0x0044b691 movsx rcx, word [rdi + 0xe] | rcx = *((rdi + 0xe)); 0x0044b696 mov eax, ecx | eax = ecx; 0x0044b698 mov edx, dword [rax*4 + 0x4d1760] | edx = *((rax*4 + method.BloombergLP::bdld::Datum.type___const::convert)); 0x0044b69f movsx rax, word [rsi + 0xe] | rax = *((rsi + 0xe)); 0x0044b6a4 mov esi, eax | esi = eax; 0x0044b6a6 cmp edx, dword [rsi*4 + 0x4d1760] | | if (edx != *((rsi*4 + method.BloombergLP::bdld::Datum.type___const::convert))) { 0x0044b6ad jne 0x44bb4f | goto label_8; | } 0x0044b6b3 cmp edx, 0x10 | | if (edx > 0x10) { 0x0044b6b6 ja 0x44bb4f | goto label_8; | } 0x0044b6bc mov bl, 1 | bl = 1; 0x0044b6be mov edx, edx | | /* switch table (17 cases) at 0x4d45e8 */ 0x0044b6c0 jmp qword [rdx*8 + 0x4d45e8] | 0x0044b6c7 mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x0044b6ca cmp eax, dword [r14 + 8] | 0x0044b6ce sete bl | bl = (eax == *((r14 + 8))) ? 1 : 0; 0x0044b6d1 jmp 0x44bb51 | goto label_9; 0x0044b6d6 movsd xmm0, qword [r14] | xmm0 = *(r14); 0x0044b6db cmpeqsd xmm0, qword [rdi] | __asm ("cmpeqsd xmm0, qword [rdi]"); 0x0044b6e0 movq rbx, xmm0 | rbx = xmm0; 0x0044b6e5 and ebx, 1 | ebx &= 1; 0x0044b6e8 jmp 0x44bb51 | goto label_9; 0x0044b6ed cmp ecx, 0xe | | if (ecx != 0xe) { 0x0044b6f0 je 0x44b6fb | 0x0044b6f2 cmp ecx, 5 | | if (ecx != 5) { 0x0044b6f5 jne 0x44babd | goto label_10; | } | } 0x0044b6fb movsxd rdx, dword [rdi + 8] | rdx = *((rdi + 8)); 0x0044b6ff mov rdi, qword [rdi] | rdi = *(rdi); 0x0044b702 jmp 0x44bac4 | goto label_11; 0x0044b707 cmp dword [rdi + 8], 0 | 0x0044b70b sete al | al = (*((rdi + 8)) == 0) ? 1 : 0; 0x0044b70e cmp dword [r14 + 8], 0 | 0x0044b713 setne bl | bl = (*((r14 + 8)) != 0) ? 1 : 0; 0x0044b716 xor bl, al | bl ^= al; 0x0044b718 jmp 0x44bb51 | goto label_9; 0x0044b71d cmp cx, 0x13 | | if (cx == 0x13) { 0x0044b721 jne 0x44b8f5 | 0x0044b727 mov ecx, dword [rdi] | ecx = *(rdi); 0x0044b729 xor edx, edx | edx = 0; 0x0044b72b xor edi, edi | edi = 0; 0x0044b72d jmp 0x44b902 | goto label_12; 0x0044b732 mov eax, dword [rdi] | eax = *(rdi); 0x0044b734 cmp eax, dword [r14] | 0x0044b737 sete bl | bl = (eax == *(r14)) ? 1 : 0; 0x0044b73a jmp 0x44bb51 | goto label_9; 0x0044b73f movabs r15, 0xffffffbfffffffff | r15 = 0xffffffbfffffffff; 0x0044b749 movabs r12, 0x4000000000 | r12 = 0x4000000000; 0x0044b753 mov rbx, qword [rdi] | rbx = *(rdi); 0x0044b756 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044b75b cmp rbx, r12 | | if (rbx < r12) { 0x0044b75e jl 0x44bb65 | goto label_13; | } 0x0044b764 and rbx, r15 | rbx &= r15; | label_2: 0x0044b767 or rbx, r12 | rbx |= r12; 0x0044b76a mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044b76f mov rax, qword [r14] | rax = *(r14); 0x0044b772 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0044b777 cmp rax, r12 | | if (rax < r12) { 0x0044b77a jl 0x44bb77 | goto label_14; | } 0x0044b780 and rax, r15 | rax &= r15; | label_3: 0x0044b783 or rax, r12 | rax |= r12; 0x0044b786 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0044b78b cmp rbx, r12 | | if (rbx < r12) { 0x0044b78e jl 0x44bb8b | goto label_15; | } 0x0044b794 and rbx, r15 | rbx &= r15; 0x0044b797 cmp rax, r12 | | if (rax < r12) { 0x0044b79a jl 0x44bba6 | goto label_16; | } | label_4: 0x0044b7a0 and rax, r15 | rax &= r15; | label_5: 0x0044b7a3 cmp rbx, rax | 0x0044b7a6 sete bl | bl = (rbx == rax) ? 1 : 0; 0x0044b7a9 jmp 0x44bb51 | goto label_9; 0x0044b7ae mov rbx, qword [rdi] | rbx = *(rdi); 0x0044b7b1 test rbx, rbx | | if (rbx >= 0) { 0x0044b7b4 jns 0x44bbb5 | goto label_17; | } | label_6: 0x0044b7ba mov rbp, qword [r14] | rbp = *(r14); 0x0044b7bd test rbp, rbp | | if (rbp >= 0) { 0x0044b7c0 jns 0x44bc24 | goto label_18; | } | label_7: 0x0044b7c6 cmp rbx, rbp | 0x0044b7c9 sete bl | bl = (rbx == rbp) ? 1 : 0; 0x0044b7cc jmp 0x44bb51 | goto label_9; 0x0044b7d1 mov esi, dword [rdi + 8] | 0x0044b7d4 mov rax, qword [rdi] | rax = *(rdi); 0x0044b7d7 mov qword [rsp], rax | *(rsp) = rax; 0x0044b7db lea rdi, [rsp + 0x10] | 0x0044b7e0 xor edx, edx | 0x0044b7e2 xor ecx, ecx | 0x0044b7e4 xor r8d, r8d | 0x0044b7e7 xor r9d, r9d | 0x0044b7ea call 0x45e700 | BloombergLP::bdlt::DatetimeInterval::setInterval(int,long long,long long,long long,long long,long long) (rsp + 0x10, *((rdi + 8)), 0, 0, 0, 0); 0x0044b7ef mov esi, dword [r14 + 8] | 0x0044b7f3 mov rax, qword [r14] | rax = *(r14); 0x0044b7f6 mov qword [rsp], rax | *(rsp) = rax; 0x0044b7fa lea rdi, [rsp + 0x38] | 0x0044b7ff xor edx, edx | 0x0044b801 xor ecx, ecx | 0x0044b803 xor r8d, r8d | 0x0044b806 xor r9d, r9d | 0x0044b809 call 0x45e700 | BloombergLP::bdlt::DatetimeInterval::setInterval(int,long long,long long,long long,long long,long long) (rsp + 0x38, *((r14 + 8)), 0, 0, 0, 0); 0x0044b80e mov eax, dword [rsp + 0x10] | eax = *((rsp + 0x10)); 0x0044b812 cmp eax, dword [rsp + 0x38] | 0x0044b816 sete al | al = (eax == *((rsp + 0x38))) ? 1 : 0; 0x0044b819 mov rcx, qword [rsp + 0x18] | rcx = *((rsp + 0x18)); 0x0044b81e cmp rcx, qword [rsp + 0x40] | 0x0044b823 jmp 0x44b843 | goto label_19; 0x0044b825 mov rax, qword [rdi] | rax = *(rdi); 0x0044b828 cmp rax, qword [r14] | 0x0044b82b sete bl | bl = (rax == *(r14)) ? 1 : 0; 0x0044b82e jmp 0x44bb51 | goto label_9; 0x0044b833 mov rax, qword [rdi] | rax = *(rdi); 0x0044b836 mov ecx, dword [rdi + 8] | ecx = *((rdi + 8)); 0x0044b839 cmp rax, qword [r14] | 0x0044b83c sete al | al = (rax == *(r14)) ? 1 : 0; 0x0044b83f cmp ecx, dword [r14 + 8] | | label_19: 0x0044b843 sete bl | bl = (ecx == *((r14 + 8))) ? 1 : 0; 0x0044b846 and bl, al | bl &= al; 0x0044b848 jmp 0x44bb51 | goto label_9; 0x0044b84d mov r15, qword [rdi] | r15 = *(rdi); 0x0044b850 cmp cx, 0xd | | if (cx == 0xd) { 0x0044b854 jne 0x44b911 | 0x0044b85a test r15, r15 | | if (r15 == 0) { 0x0044b85d je 0x44baf7 | goto label_20; | } 0x0044b863 mov r13, qword [r15] | r13 = *(r15); 0x0044b866 add r15, 0x10 | r15 += 0x10; 0x0044b86a jmp 0x44bafd | goto label_21; 0x0044b86f mov r12, qword [rdi] | r12 = *(rdi); 0x0044b872 test r12, r12 | | if (r12 == 0) { 0x0044b875 je 0x44b977 | goto label_22; | } 0x0044b87b mov r15, qword [r12] | r15 = *(r12); 0x0044b87f add r12, 0x20 | r12 += 0x20; 0x0044b883 jmp 0x44b97d | goto label_23; 0x0044b888 cmp cx, 0x15 | | if (cx == 0x15) { 0x0044b88c jne 0x44b91a | 0x0044b892 movsx rdx, byte [rdi + 0xd] | rdx = *((rdi + 0xd)); 0x0044b897 jmp 0x44b921 | goto label_24; 0x0044b89c mov rdi, qword [rdi] | rdi = *(rdi); 0x0044b89f mov rsi, qword [r14] | rsi = *(r14); 0x0044b8a2 mov dword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0044b8aa lea rdx, [rsp + 0x10] | rdx = rsp + 0x10; 0x0044b8af call 0x468680 | eax = _bid64_quiet_equal (); 0x0044b8b4 mov ebx, eax | ebx = eax; 0x0044b8b6 mov eax, dword [rsp + 0x10] | eax = *((rsp + 0x10)); 0x0044b8ba mov ebp, 0x21 | 0x0044b8bf test al, 1 | | if ((al & 1) == 0) { 0x0044b8c1 jne 0x44b8cc | 0x0044b8c3 mov ebp, 0x22 | 0x0044b8c8 test al, 0x1c | | if ((al & 0x1c) == 0) { 0x0044b8ca je 0x44b8d3 | goto label_25; | } | } 0x0044b8cc call 0x404a50 | errno_location (); 0x0044b8d1 mov dword [rax], ebp | *(rax) = ebp; | label_25: 0x0044b8d3 test ebx, ebx | 0x0044b8d5 setne bl | bl = (ebx != 0) ? 1 : 0; 0x0044b8d8 jmp 0x44bb51 | goto label_9; 0x0044b8dd mov r15, qword [rdi] | r15 = *(rdi); 0x0044b8e0 test r15, r15 | | if (r15 == 0) { 0x0044b8e3 je 0x44b98e | goto label_26; | } 0x0044b8e9 mov r12, qword [r15] | r12 = *(r15); 0x0044b8ec add r15, 0x20 | r15 += 0x20; 0x0044b8f0 jmp 0x44b994 | 0x0044b8f5 mov rdi, qword [rdi] | rdi = *(rdi); 0x0044b8f8 mov ecx, dword [rdi] | ecx = *(rdi); 0x0044b8fa movsxd rdx, dword [rdi + 4] | rdx = *((rdi + 4)); 0x0044b8fe add rdi, 8 | rdi += 8; | label_12: 0x0044b902 cmp ax, 0x13 | | } else { | } else { | if (ax != 0x13) { 0x0044b906 jne 0x44b93e | goto label_27; | } 0x0044b908 mov eax, dword [r14] | eax = *(r14); 0x0044b90b xor ebp, ebp | ebp = 0; 0x0044b90d xor esi, esi | esi = 0; 0x0044b90f jmp 0x44b94b | 0x0044b911 movsxd r13, dword [rdi + 8] | r13 = *((rdi + 8)); 0x0044b915 jmp 0x44bafd | goto label_21; | } 0x0044b91a movsxd rdx, dword [rdi + 8] | rdx = *((rdi + 8)); 0x0044b91e mov rdi, qword [rdi] | rdi = *(rdi); | label_24: 0x0044b921 cmp ax, 0x15 | | if (ax != 0x15) { 0x0044b925 jne 0x44bace | goto label_28; | } 0x0044b92b movsx rax, byte [r14 + 0xd] | rax = *((r14 + 0xd)); 0x0044b930 cmp rdx, rax | | if (rdx == rax) { 0x0044b933 je 0x44bae8 | goto label_29; | } 0x0044b939 jmp 0x44bb4f | goto label_8; | label_27: 0x0044b93e mov rsi, qword [r14] | rsi = *(r14); 0x0044b941 mov eax, dword [rsi] | eax = *(rsi); 0x0044b943 movsxd rbp, dword [rsi + 4] | rbp = *((rsi + 4)); 0x0044b947 add rsi, 8 | rsi += 8; | } 0x0044b94b xor ebx, ebx | ebx = 0; 0x0044b94d cmp rdx, rbp | | if (rdx != rbp) { 0x0044b950 jne 0x44bb51 | goto label_9; | } 0x0044b956 cmp ecx, eax | | if (ecx != eax) { 0x0044b958 jne 0x44bb51 | goto label_9; | } 0x0044b95e test rdx, rdx | | if (rdx != 0) { 0x0044b961 je 0x44b970 | 0x0044b963 call 0x404b40 | eax = memcmp (rdi, rsi, rdx); 0x0044b968 test eax, eax | | if (eax != 0) { 0x0044b96a jne 0x44baf0 | goto label_30; | } | } 0x0044b970 xor eax, eax | eax = 0; 0x0044b972 jmp 0x44baf0 | goto label_30; | label_22: 0x0044b977 xor r15d, r15d | r15d = 0; 0x0044b97a xor r12d, r12d | r12d = 0; | label_23: 0x0044b97d mov r14, qword [r14] | r14 = *(r14); 0x0044b980 test r14, r14 | | if (r14 == 0) { 0x0044b983 je 0x44b9ac | goto label_31; | } 0x0044b985 mov rax, qword [r14] | rax = *(r14); 0x0044b988 add r14, 0x20 | r14 += 0x20; 0x0044b98c jmp 0x44b9b1 | goto label_32; | label_26: 0x0044b98e xor r15d, r15d | r15d = 0; 0x0044b991 xor r12d, r12d | r12d = 0; | } 0x0044b994 mov r14, qword [r14] | r14 = *(r14); 0x0044b997 test r14, r14 | | if (r14 == 0) { 0x0044b99a je 0x44ba4d | goto label_33; | } 0x0044b9a0 mov rax, qword [r14] | rax = *(r14); 0x0044b9a3 add r14, 0x20 | r14 += 0x20; 0x0044b9a7 jmp 0x44ba52 | goto label_34; | label_31: 0x0044b9ac xor eax, eax | eax = 0; 0x0044b9ae xor r14d, r14d | r14d = 0; | label_32: 0x0044b9b1 cmp r15, rax | | if (r15 != rax) { 0x0044b9b4 jne 0x44bb4f | goto label_8; | } 0x0044b9ba test r15, r15 | | if (r15 == 0) { 0x0044b9bd je 0x44bab3 | goto label_35; | } 0x0044b9c3 mov rdx, qword [r12 + 8] | rdx = *((r12 + 8)); 0x0044b9c8 mov bl, 1 | bl = 1; 0x0044b9ca cmp rdx, qword [r14 + 8] | | if (rdx != *((r14 + 8))) { 0x0044b9ce jne 0x44baab | goto label_36; | } 0x0044b9d4 lea rax, [r14 + 0x10] | rax = r14 + 0x10; 0x0044b9d8 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0044b9dd lea rax, [r12 + 0x10] | rax = r12 + 0x10; 0x0044b9e2 mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x0044b9e7 mov bl, 1 | bl = 1; 0x0044b9e9 mov r13d, 1 | r13d = 1; 0x0044b9ef xor ebp, ebp | ebp = 0; | label_0: 0x0044b9f1 test rdx, rdx | | if (rdx != 0) { 0x0044b9f4 je 0x44ba0b | 0x0044b9f6 mov rdi, qword [r12 + rbp] | rdi = *((r12 + rbp)); 0x0044b9fa mov rsi, qword [r14 + rbp] | rsi = *((r14 + rbp)); 0x0044b9fe call 0x404900 | eax = bcmp (); 0x0044ba03 test eax, eax | | if (eax != 0) { 0x0044ba05 jne 0x44baab | goto label_36; | } | } 0x0044ba0b mov rax, qword [rsp + 0x48] | rax = *((rsp + 0x48)); 0x0044ba10 lea rdi, [rax + rbp] | rdi = rax + rbp; 0x0044ba14 mov rax, qword [rsp + 0x50] | rax = *((rsp + 0x50)); 0x0044ba19 lea rsi, [rax + rbp] | 0x0044ba1d call 0x44b680 | al = BloombergLP::bdld::operator==(BloombergLP::bdld::Datumconst&,BloombergLP::bdld::Datumconst&) (rdi, rax + rbp); | } while (1); 0x0044ba22 test al, al | | if (al == 0) { 0x0044ba24 je 0x44baab | goto label_36; | } 0x0044ba2a cmp r13, r15 | 0x0044ba2d setb bl | bl = (r13 < r15) ? 1 : 0; 0x0044ba30 cmp r15, r13 | | if (r15 == r13) { 0x0044ba33 je 0x44baab | goto label_36; | } 0x0044ba35 mov rdx, qword [r12 + rbp + 0x28] | rdx = *((r12 + rbp + 0x28)); 0x0044ba3a lea rax, [rbp + 0x20] | rax = rbp + 0x20; 0x0044ba3e inc r13 | r13++; 0x0044ba41 cmp rdx, qword [r14 + rbp + 0x28] | 0x0044ba46 mov rbp, rax | | if (rdx == *((r14 + rbp + 0x28))) { 0x0044ba49 je 0x44b9f1 | goto label_0; | } 0x0044ba4b jmp 0x44baab | goto label_36; | label_33: 0x0044ba4d xor r14d, r14d | r14d = 0; 0x0044ba50 xor eax, eax | eax = 0; | label_34: 0x0044ba52 cmp r12, rax | | if (r12 != rax) { 0x0044ba55 jne 0x44bb4f | goto label_8; | } 0x0044ba5b test r12, r12 | | if (r12 == 0) { 0x0044ba5e je 0x44bab3 | goto label_35; | } 0x0044ba60 mov eax, dword [r15] | eax = *(r15); 0x0044ba63 mov bl, 1 | bl = 1; 0x0044ba65 cmp eax, dword [r14] | | if (eax != *(r14)) { 0x0044ba68 jne 0x44baab | goto label_36; | } 0x0044ba6a add r14, 0x10 | r14 += 0x10; 0x0044ba6e add r15, 0x10 | r15 += 0x10; 0x0044ba72 mov bl, 1 | bl = 1; 0x0044ba74 mov ebp, 1 | | do { 0x0044ba79 mov rdi, r15 | 0x0044ba7c mov rsi, r14 | 0x0044ba7f call 0x44b680 | al = BloombergLP::bdld::operator==(BloombergLP::bdld::Datumconst&,BloombergLP::bdld::Datumconst&) (r15, r14); | goto label_1; 0x0044ba84 test al, al | | if (al == 0) { 0x0044ba86 je 0x44baab | goto label_36; | } 0x0044ba88 cmp rbp, r12 | 0x0044ba8b setb bl | bl = (rbp < r12) ? 1 : 0; 0x0044ba8e cmp r12, rbp | | if (r12 == rbp) { 0x0044ba91 je 0x44baab | goto label_36; | } 0x0044ba93 mov eax, dword [r15 + 0x10] | eax = *((r15 + 0x10)); 0x0044ba97 lea rcx, [r14 + 0x20] | rcx = r14 + 0x20; 0x0044ba9b add r15, 0x20 | r15 += 0x20; 0x0044ba9f inc rbp | rbp++; 0x0044baa2 cmp eax, dword [r14 + 0x10] | 0x0044baa6 mov r14, rcx | r14 = rcx; 0x0044baa9 je 0x44ba79 | | } while (eax == *((r14 + 0x10))); | label_36: 0x0044baab xor bl, 1 | bl ^= 1; 0x0044baae jmp 0x44bb51 | goto label_9; | label_35: 0x0044bab3 xor ebx, ebx | ebx = 0; 0x0044bab5 xor bl, 1 | bl ^= 1; 0x0044bab8 jmp 0x44bb51 | goto label_9; | label_10: 0x0044babd movsx rdx, byte [rdi] | rdx = *(rdi); 0x0044bac1 inc rdi | rdi++; | label_11: 0x0044bac4 cmp eax, 0xe | | if (eax != 0xe) { 0x0044bac7 je 0x44bace | 0x0044bac9 cmp eax, 5 | | if (eax != 5) { 0x0044bacc jne 0x44badc | goto label_37; | } | } | label_28: 0x0044bace movsxd rax, dword [r14 + 8] | rax = *((r14 + 8)); 0x0044bad2 mov r14, qword [r14] | r14 = *(r14); 0x0044bad5 cmp rdx, rax | | if (rdx != rax) { 0x0044bad8 jne 0x44bb4f | goto label_8; | } 0x0044bada jmp 0x44bae8 | goto label_29; | label_37: 0x0044badc movsx rax, byte [r14] | rax = *(r14); 0x0044bae0 inc r14 | r14++; 0x0044bae3 cmp rdx, rax | | if (rdx != rax) { 0x0044bae6 jne 0x44bb4f | goto label_8; | } | label_29: 0x0044bae8 mov rsi, r14 | rsi = r14; 0x0044baeb call 0x404900 | eax = bcmp (); | label_30: 0x0044baf0 test eax, eax | 0x0044baf2 sete bl | bl = (eax == 0) ? 1 : 0; 0x0044baf5 jmp 0x44bb51 | goto label_9; | label_20: 0x0044baf7 xor r15d, r15d | r15d = 0; 0x0044bafa xor r13d, r13d | r13d = 0; | label_21: 0x0044bafd mov r12, qword [r14] | r12 = *(r14); 0x0044bb00 cmp ax, 0xd | | if (ax == 0xd) { 0x0044bb04 jne 0x44bb15 | 0x0044bb06 test r12, r12 | | if (r12 != 0) { 0x0044bb09 je 0x44bb1b | 0x0044bb0b mov rax, qword [r12] | rax = *(r12); 0x0044bb0f add r12, 0x10 | r12 += 0x10; 0x0044bb13 jmp 0x44bb20 | | } else { 0x0044bb15 movsxd rax, dword [r14 + 8] | rax = *((r14 + 8)); 0x0044bb19 jmp 0x44bb20 | | } else { 0x0044bb1b xor r12d, r12d | r12d = 0; | } 0x0044bb1e xor eax, eax | eax = 0; | } 0x0044bb20 cmp r13, rax | | if (r13 != rax) { 0x0044bb23 jne 0x44bb4f | goto label_8; | } 0x0044bb25 test r13, r13 | | if (r13 == 0) { 0x0044bb28 je 0x44bb51 | goto label_9; | } 0x0044bb2a shl r13, 4 | r13 <<= 4; | do { 0x0044bb2e mov rdi, r15 | 0x0044bb31 mov rsi, r12 | 0x0044bb34 call 0x44b680 | eax = BloombergLP::bdld::operator==(BloombergLP::bdld::Datumconst&,BloombergLP::bdld::Datumconst&) (r15, r12); | goto label_1; 0x0044bb39 mov ebx, eax | ebx = eax; 0x0044bb3b test al, al | | if (al == 0) { 0x0044bb3d je 0x44bb51 | goto label_9; | } 0x0044bb3f add r15, 0x10 | r15 += 0x10; 0x0044bb43 add r12, 0x10 | r12 += 0x10; 0x0044bb47 add r13, 0xfffffffffffffff0 | r13 += 0xfffffffffffffff0; 0x0044bb4b jne 0x44bb2e | | } while (r13 != 0); 0x0044bb4d jmp 0x44bb51 | goto label_9; | label_8: 0x0044bb4f xor ebx, ebx | ebx = 0; | label_9: 0x0044bb51 and bl, 1 | bl &= 1; 0x0044bb54 mov eax, ebx | eax = ebx; 0x0044bb56 add rsp, 0x58 | 0x0044bb5a pop rbx | 0x0044bb5b pop r12 | 0x0044bb5d pop r13 | 0x0044bb5f pop r14 | 0x0044bb61 pop r15 | 0x0044bb63 pop rbp | 0x0044bb64 ret | return rax; | label_13: 0x0044bb65 lea rdi, [rsp + 0x10] | 0x0044bb6a call 0x4637e0 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x10); 0x0044bb6f mov rbx, rax | rbx = rax; 0x0044bb72 jmp 0x44b767 | goto label_2; | label_14: 0x0044bb77 lea rdi, [rsp + 0x38] | 0x0044bb7c call 0x4637e0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x38); 0x0044bb81 mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); 0x0044bb86 jmp 0x44b783 | goto label_3; | label_15: 0x0044bb8b lea rdi, [rsp + 0x10] | 0x0044bb90 call 0x4637e0 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x10); 0x0044bb95 mov rbx, rax | rbx = rax; 0x0044bb98 mov rax, qword [rsp + 0x38] | rax = *((rsp + 0x38)); 0x0044bb9d cmp rax, r12 | | if (rax >= r12) { 0x0044bba0 jge 0x44b7a0 | goto label_4; | } | label_16: 0x0044bba6 lea rdi, [rsp + 0x38] | 0x0044bbab call 0x4637e0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x38); 0x0044bbb0 jmp 0x44b7a3 | goto label_5; | label_17: 0x0044bbb5 mov edi, 0x72503c | 0x0044bbba call 0x491c60 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0044bbbf mov qword [rsp + 0x10], 0x4d1a6e | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0044bbc8 mov qword [rsp + 0x18], 0x4d1aa4 | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x0044bbd1 mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x0044bbd9 mov qword [rsp + 0x28], 0x4f0479 | *((rsp + 0x28)) = "R-INV"; 0x0044bbe2 mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x0044bbe6 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0044bbeb call 0x491c80 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0044bbf0 mov rax, rbx | rax = rbx; 0x0044bbf3 shr rax, 0x20 | rax >>= 0x20; 0x0044bbf7 shl rbx, 0x25 | rbx <<= 0x25; 0x0044bbfb movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x0044bc05 add rcx, rbx | rcx += rbx; 0x0044bc08 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x0044bc0f movabs rbx, 0x8000000000000000 | rbx = 0x8000000000000000; 0x0044bc19 or rbx, rcx | rbx |= rcx; 0x0044bc1c or rbx, rax | rbx |= rax; 0x0044bc1f jmp 0x44b7ba | goto label_6; | label_18: 0x0044bc24 mov edi, 0x72503c | 0x0044bc29 call 0x491c60 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0044bc2e mov qword [rsp + 0x10], 0x4d1a6e | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0044bc37 mov qword [rsp + 0x18], 0x4d1aa4 | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x0044bc40 mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x0044bc48 mov qword [rsp + 0x28], 0x4f0479 | *((rsp + 0x28)) = "R-INV"; 0x0044bc51 mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x0044bc55 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0044bc5a call 0x491c80 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0044bc5f mov rax, rbp | rax = rbp; 0x0044bc62 shr rax, 0x20 | rax >>= 0x20; 0x0044bc66 shl rbp, 0x25 | rbp <<= 0x25; 0x0044bc6a movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x0044bc74 add rcx, rbp | rcx += rbp; 0x0044bc77 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x0044bc7e movabs rbp, 0x8000000000000000 | 0x0044bc88 or rbp, rcx | rbp |= rcx; 0x0044bc8b or rbp, rax | rbp |= rax; 0x0044bc8e jmp 0x44b7c6 | goto label_7; | }