; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/none @ 0x44bcb0 */ | #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: 0x0044bcb0 push rbp | 0x0044bcb1 push r15 | 0x0044bcb3 push r14 | 0x0044bcb5 push r13 | 0x0044bcb7 push r12 | 0x0044bcb9 push rbx | 0x0044bcba sub rsp, 0x58 | 0x0044bcbe mov r14, rsi | r14 = rsi; 0x0044bcc1 movsx rsi, word [rdi + 0xe] | rsi = *((rdi + 0xe)); 0x0044bcc6 mov eax, esi | eax = esi; 0x0044bcc8 mov eax, dword [rax*4 + 0x4d2310] | eax = *((rax*4 + method.BloombergLP::bdld::Datum.type___const::convert)); 0x0044bccf movsx rcx, word [r14 + 0xe] | rcx = *((r14 + 0xe)); 0x0044bcd4 mov edx, ecx | edx = ecx; 0x0044bcd6 cmp eax, dword [rdx*4 + 0x4d2310] | | if (eax != *((rdx*4 + method.BloombergLP::bdld::Datum.type___const::convert))) { 0x0044bcdd jne 0x44c1bc | goto label_8; | } 0x0044bce3 cmp eax, 0x10 | | if (eax > 0x10) { 0x0044bce6 ja 0x44c1bc | goto label_8; | } 0x0044bcec mov bl, 1 | bl = 1; 0x0044bcee mov eax, eax | | /* switch table (17 cases) at 0x4d5198 */ 0x0044bcf0 jmp qword [rax*8 + 0x4d5198] | 0x0044bcf7 mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x0044bcfa cmp eax, dword [r14 + 8] | 0x0044bcfe sete bl | bl = (eax == *((r14 + 8))) ? 1 : 0; 0x0044bd01 jmp 0x44c1be | goto label_9; 0x0044bd06 movsd xmm0, qword [r14] | xmm0 = *(r14); 0x0044bd0b cmpeqsd xmm0, qword [rdi] | __asm ("cmpeqsd xmm0, qword [rdi]"); 0x0044bd10 movq rbx, xmm0 | rbx = xmm0; 0x0044bd15 and ebx, 1 | ebx &= 1; 0x0044bd18 jmp 0x44c1be | goto label_9; 0x0044bd1d cmp esi, 0xe | | if (esi != 0xe) { 0x0044bd20 je 0x44bf4d | 0x0044bd26 cmp esi, 5 | | if (esi != 5) { 0x0044bd29 je 0x44bf4d | 0x0044bd2f xor eax, eax | eax = 0; 0x0044bd31 mov edx, 0 | edx = 0; 0x0044bd36 cmp esi, 4 | | if (esi != 4) { 0x0044bd39 jne 0x44bf54 | goto label_10; | } 0x0044bd3f movsx rdx, byte [rdi] | rdx = *(rdi); 0x0044bd43 inc rdi | rdi++; 0x0044bd46 mov rax, rdi | rax = rdi; 0x0044bd49 jmp 0x44bf54 | goto label_10; 0x0044bd4e cmp dword [rdi + 8], 0 | 0x0044bd52 sete al | al = (*((rdi + 8)) == 0) ? 1 : 0; 0x0044bd55 cmp dword [r14 + 8], 0 | 0x0044bd5a setne bl | bl = (*((r14 + 8)) != 0) ? 1 : 0; 0x0044bd5d xor bl, al | bl ^= al; 0x0044bd5f jmp 0x44c1be | goto label_9; 0x0044bd64 cmp si, 0x13 | | if (si != 0x13) { 0x0044bd68 jne 0x44bf85 | goto label_11; | } 0x0044bd6e mov eax, dword [rdi] | eax = *(rdi); 0x0044bd70 xor edx, edx | edx = 0; 0x0044bd72 xor edi, edi | edi = 0; 0x0044bd74 jmp 0x44bf92 | goto label_12; 0x0044bd79 mov eax, dword [rdi] | eax = *(rdi); 0x0044bd7b cmp eax, dword [r14] | 0x0044bd7e sete bl | bl = (eax == *(r14)) ? 1 : 0; 0x0044bd81 jmp 0x44c1be | goto label_9; 0x0044bd86 movabs r15, 0xffffffbfffffffff | r15 = 0xffffffbfffffffff; 0x0044bd90 movabs r12, 0x4000000000 | r12 = 0x4000000000; 0x0044bd9a mov rbx, qword [rdi] | rbx = *(rdi); 0x0044bd9d mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044bda2 cmp rbx, r12 | | if (rbx < r12) { 0x0044bda5 jl 0x44c1d2 | goto label_13; | } 0x0044bdab and rbx, r15 | rbx &= r15; | label_2: 0x0044bdae or rbx, r12 | rbx |= r12; 0x0044bdb1 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044bdb6 mov rax, qword [r14] | rax = *(r14); 0x0044bdb9 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0044bdbe cmp rax, r12 | | if (rax < r12) { 0x0044bdc1 jl 0x44c1e4 | goto label_14; | } 0x0044bdc7 and rax, r15 | rax &= r15; | label_3: 0x0044bdca or rax, r12 | rax |= r12; 0x0044bdcd mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0044bdd2 cmp rbx, r12 | | if (rbx < r12) { 0x0044bdd5 jl 0x44c1f8 | goto label_15; | } 0x0044bddb and rbx, r15 | rbx &= r15; 0x0044bdde cmp rax, r12 | | if (rax < r12) { 0x0044bde1 jl 0x44c213 | goto label_16; | } | label_4: 0x0044bde7 and rax, r15 | rax &= r15; | label_5: 0x0044bdea cmp rbx, rax | 0x0044bded sete bl | bl = (rbx == rax) ? 1 : 0; 0x0044bdf0 jmp 0x44c1be | goto label_9; 0x0044bdf5 mov rbx, qword [rdi] | rbx = *(rdi); 0x0044bdf8 test rbx, rbx | | if (rbx >= 0) { 0x0044bdfb jns 0x44c222 | goto label_17; | } | label_6: 0x0044be01 mov rbp, qword [r14] | rbp = *(r14); 0x0044be04 test rbp, rbp | | if (rbp >= 0) { 0x0044be07 jns 0x44c291 | goto label_18; | } | label_7: 0x0044be0d cmp rbx, rbp | 0x0044be10 sete bl | bl = (rbx == rbp) ? 1 : 0; 0x0044be13 jmp 0x44c1be | goto label_9; 0x0044be18 mov esi, dword [rdi + 8] | 0x0044be1b mov rax, qword [rdi] | rax = *(rdi); 0x0044be1e mov qword [rsp], rax | *(rsp) = rax; 0x0044be22 lea rdi, [rsp + 0x10] | 0x0044be27 xor edx, edx | 0x0044be29 xor ecx, ecx | 0x0044be2b xor r8d, r8d | 0x0044be2e xor r9d, r9d | 0x0044be31 call 0x45ee70 | BloombergLP::bdlt::DatetimeInterval::setInterval(int,long long,long long,long long,long long,long long) (rsp + 0x10, *((rdi + 8)), 0, 0, 0, 0); 0x0044be36 mov esi, dword [r14 + 8] | 0x0044be3a mov rax, qword [r14] | rax = *(r14); 0x0044be3d mov qword [rsp], rax | *(rsp) = rax; 0x0044be41 lea rdi, [rsp + 0x38] | 0x0044be46 xor edx, edx | 0x0044be48 xor ecx, ecx | 0x0044be4a xor r8d, r8d | 0x0044be4d xor r9d, r9d | 0x0044be50 call 0x45ee70 | BloombergLP::bdlt::DatetimeInterval::setInterval(int,long long,long long,long long,long long,long long) (rsp + 0x38, *((r14 + 8)), 0, 0, 0, 0); 0x0044be55 mov eax, dword [rsp + 0x10] | eax = *((rsp + 0x10)); 0x0044be59 cmp eax, dword [rsp + 0x38] | 0x0044be5d sete al | al = (eax == *((rsp + 0x38))) ? 1 : 0; 0x0044be60 mov rcx, qword [rsp + 0x18] | rcx = *((rsp + 0x18)); 0x0044be65 cmp rcx, qword [rsp + 0x40] | 0x0044be6a jmp 0x44be8a | goto label_19; 0x0044be6c mov rax, qword [rdi] | rax = *(rdi); 0x0044be6f cmp rax, qword [r14] | 0x0044be72 sete bl | bl = (rax == *(r14)) ? 1 : 0; 0x0044be75 jmp 0x44c1be | goto label_9; 0x0044be7a mov rax, qword [rdi] | rax = *(rdi); 0x0044be7d mov ecx, dword [rdi + 8] | ecx = *((rdi + 8)); 0x0044be80 cmp rax, qword [r14] | 0x0044be83 sete al | al = (rax == *(r14)) ? 1 : 0; 0x0044be86 cmp ecx, dword [r14 + 8] | | label_19: 0x0044be8a sete bl | bl = (ecx == *((r14 + 8))) ? 1 : 0; 0x0044be8d and bl, al | bl &= al; 0x0044be8f jmp 0x44c1be | goto label_9; 0x0044be94 mov r15, qword [rdi] | r15 = *(rdi); 0x0044be97 cmp si, 0xd | | if (si != 0xd) { 0x0044be9b jne 0x44bfa1 | goto label_20; | } 0x0044bea1 test r15, r15 | | if (r15 == 0) { 0x0044bea4 je 0x44c164 | goto label_21; | } 0x0044beaa mov r13, qword [r15] | r13 = *(r15); 0x0044bead add r15, 0x10 | r15 += 0x10; 0x0044beb1 jmp 0x44c16a | goto label_22; 0x0044beb6 mov r15, qword [rdi] | r15 = *(rdi); 0x0044beb9 test r15, r15 | | if (r15 == 0) { 0x0044bebc je 0x44bfe3 | goto label_23; | } 0x0044bec2 mov r12, qword [r15] | r12 = *(r15); 0x0044bec5 add r15, 0x20 | r15 += 0x20; 0x0044bec9 jmp 0x44bfe9 | goto label_24; 0x0044bece cmp esi, 0x16 | | if (esi == 0x16) { 0x0044bed1 je 0x44c127 | goto label_25; | } 0x0044bed7 xor eax, eax | eax = 0; 0x0044bed9 mov edx, 0 | edx = 0; 0x0044bede cmp esi, 0x15 | | if (esi != 0x15) { 0x0044bee1 jne 0x44c12e | goto label_26; | } 0x0044bee7 movsx rdx, byte [rdi + 0xd] | rdx = *((rdi + 0xd)); 0x0044beec mov rax, rdi | rax = rdi; 0x0044beef jmp 0x44c12e | goto label_26; 0x0044bef4 mov rdi, qword [rdi] | rdi = *(rdi); 0x0044bef7 mov rsi, qword [r14] | rsi = *(r14); 0x0044befa mov dword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0044bf02 lea rdx, [rsp + 0x10] | rdx = rsp + 0x10; 0x0044bf07 call 0x469210 | eax = _bid64_quiet_equal (); 0x0044bf0c mov ebx, eax | ebx = eax; 0x0044bf0e mov eax, dword [rsp + 0x10] | eax = *((rsp + 0x10)); 0x0044bf12 mov ebp, 0x21 | 0x0044bf17 test al, 1 | | if ((al & 1) == 0) { 0x0044bf19 jne 0x44bf24 | 0x0044bf1b mov ebp, 0x22 | 0x0044bf20 test al, 0x1c | | if ((al & 0x1c) == 0) { 0x0044bf22 je 0x44bf2b | goto label_27; | } | } 0x0044bf24 call 0x404a50 | errno_location (); 0x0044bf29 mov dword [rax], ebp | *(rax) = ebp; | label_27: 0x0044bf2b test ebx, ebx | 0x0044bf2d setne bl | bl = (ebx != 0) ? 1 : 0; 0x0044bf30 jmp 0x44c1be | goto label_9; 0x0044bf35 mov r15, qword [rdi] | r15 = *(rdi); 0x0044bf38 test r15, r15 | | if (r15 == 0) { 0x0044bf3b je 0x44bffa | goto label_28; | } 0x0044bf41 mov r12, qword [r15] | r12 = *(r15); 0x0044bf44 add r15, 0x20 | r15 += 0x20; 0x0044bf48 jmp 0x44c000 | | } | } else { 0x0044bf4d mov rax, qword [rdi] | rax = *(rdi); 0x0044bf50 movsxd rdx, dword [rdi + 8] | rdx = *((rdi + 8)); | label_10: 0x0044bf54 cmp ecx, 0xe | | if (ecx == 0xe) { 0x0044bf57 je 0x44c149 | goto label_29; | } 0x0044bf5d cmp ecx, 5 | | if (ecx == 5) { 0x0044bf60 je 0x44c149 | goto label_29; | } 0x0044bf66 xor esi, esi | esi = 0; 0x0044bf68 mov edi, 0 | edi = 0; 0x0044bf6d cmp ecx, 4 | | if (ecx != 4) { 0x0044bf70 jne 0x44c150 | goto label_30; | } 0x0044bf76 movsx rdi, byte [r14] | rdi = *(r14); 0x0044bf7a inc r14 | r14++; 0x0044bf7d mov rsi, r14 | rsi = r14; 0x0044bf80 jmp 0x44c150 | goto label_30; | label_11: 0x0044bf85 mov rdi, qword [rdi] | rdi = *(rdi); 0x0044bf88 mov eax, dword [rdi] | eax = *(rdi); 0x0044bf8a movsxd rdx, dword [rdi + 4] | rdx = *((rdi + 4)); 0x0044bf8e add rdi, 8 | rdi += 8; | label_12: 0x0044bf92 cmp cx, 0x13 | | if (cx == 0x13) { 0x0044bf96 jne 0x44bfaa | 0x0044bf98 mov ecx, dword [r14] | ecx = *(r14); 0x0044bf9b xor ebp, ebp | ebp = 0; 0x0044bf9d xor esi, esi | esi = 0; 0x0044bf9f jmp 0x44bfb7 | goto label_31; | label_20: 0x0044bfa1 movsxd r13, dword [rdi + 8] | r13 = *((rdi + 8)); 0x0044bfa5 jmp 0x44c16a | goto label_22; | } 0x0044bfaa mov rsi, qword [r14] | rsi = *(r14); 0x0044bfad mov ecx, dword [rsi] | ecx = *(rsi); 0x0044bfaf movsxd rbp, dword [rsi + 4] | rbp = *((rsi + 4)); 0x0044bfb3 add rsi, 8 | rsi += 8; | label_31: 0x0044bfb7 xor ebx, ebx | ebx = 0; 0x0044bfb9 cmp rdx, rbp | | if (rdx != rbp) { 0x0044bfbc jne 0x44c1be | goto label_9; | } 0x0044bfc2 cmp eax, ecx | | if (eax != ecx) { 0x0044bfc4 jne 0x44c1be | goto label_9; | } 0x0044bfca test rdx, rdx | | if (rdx != 0) { 0x0044bfcd je 0x44bfdc | 0x0044bfcf call 0x404b40 | eax = memcmp (rdi, rsi, rdx); 0x0044bfd4 test eax, eax | | if (eax != 0) { 0x0044bfd6 jne 0x44c15d | goto label_32; | } | } 0x0044bfdc xor eax, eax | eax = 0; 0x0044bfde jmp 0x44c15d | goto label_32; | label_23: 0x0044bfe3 xor r15d, r15d | r15d = 0; 0x0044bfe6 xor r12d, r12d | r12d = 0; | label_24: 0x0044bfe9 mov r14, qword [r14] | r14 = *(r14); 0x0044bfec test r14, r14 | | if (r14 == 0) { 0x0044bfef je 0x44c018 | goto label_33; | } 0x0044bff1 mov rax, qword [r14] | rax = *(r14); 0x0044bff4 add r14, 0x20 | r14 += 0x20; 0x0044bff8 jmp 0x44c01d | goto label_34; | label_28: 0x0044bffa xor r15d, r15d | r15d = 0; 0x0044bffd xor r12d, r12d | r12d = 0; | } 0x0044c000 mov r14, qword [r14] | r14 = *(r14); 0x0044c003 test r14, r14 | | if (r14 == 0) { 0x0044c006 je 0x44c0b7 | goto label_35; | } 0x0044c00c mov rax, qword [r14] | rax = *(r14); 0x0044c00f add r14, 0x20 | r14 += 0x20; 0x0044c013 jmp 0x44c0bc | goto label_36; | label_33: 0x0044c018 xor r14d, r14d | r14d = 0; 0x0044c01b xor eax, eax | eax = 0; | label_34: 0x0044c01d cmp r12, rax | | if (r12 != rax) { 0x0044c020 jne 0x44c1bc | goto label_8; | } 0x0044c026 test r12, r12 | | if (r12 == 0) { 0x0044c029 je 0x44c11d | goto label_37; | } 0x0044c02f mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0044c033 mov bl, 1 | bl = 1; 0x0044c035 cmp rdx, qword [r14 + 8] | | if (rdx != *((r14 + 8))) { 0x0044c039 jne 0x44c115 | goto label_38; | } 0x0044c03f lea rax, [r14 + 0x10] | rax = r14 + 0x10; 0x0044c043 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0044c048 lea rax, [r15 + 0x10] | rax = r15 + 0x10; 0x0044c04c mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x0044c051 mov bl, 1 | bl = 1; 0x0044c053 mov r13d, 1 | r13d = 1; 0x0044c059 xor ebp, ebp | ebp = 0; | label_0: 0x0044c05b test rdx, rdx | | if (rdx != 0) { 0x0044c05e je 0x44c075 | 0x0044c060 mov rdi, qword [r15 + rbp] | rdi = *((r15 + rbp)); 0x0044c064 mov rsi, qword [r14 + rbp] | rsi = *((r14 + rbp)); 0x0044c068 call 0x404900 | eax = bcmp (); 0x0044c06d test eax, eax | | if (eax != 0) { 0x0044c06f jne 0x44c115 | goto label_38; | } | } 0x0044c075 mov rax, qword [rsp + 0x48] | rax = *((rsp + 0x48)); 0x0044c07a lea rdi, [rax + rbp] | rdi = rax + rbp; 0x0044c07e mov rax, qword [rsp + 0x50] | rax = *((rsp + 0x50)); 0x0044c083 lea rsi, [rax + rbp] | 0x0044c087 call 0x44bcb0 | al = BloombergLP::bdld::operator==(BloombergLP::bdld::Datumconst&,BloombergLP::bdld::Datumconst&) (rdi, rax + rbp); | } while (1); 0x0044c08c test al, al | | if (al == 0) { 0x0044c08e je 0x44c115 | goto label_38; | } 0x0044c094 cmp r13, r12 | 0x0044c097 setb bl | bl = (r13 < r12) ? 1 : 0; 0x0044c09a cmp r12, r13 | | if (r12 == r13) { 0x0044c09d je 0x44c115 | goto label_38; | } 0x0044c09f mov rdx, qword [r15 + rbp + 0x28] | rdx = *((r15 + rbp + 0x28)); 0x0044c0a4 lea rax, [rbp + 0x20] | rax = rbp + 0x20; 0x0044c0a8 inc r13 | r13++; 0x0044c0ab cmp rdx, qword [r14 + rbp + 0x28] | 0x0044c0b0 mov rbp, rax | | if (rdx == *((r14 + rbp + 0x28))) { 0x0044c0b3 je 0x44c05b | goto label_0; | } 0x0044c0b5 jmp 0x44c115 | goto label_38; | label_35: 0x0044c0b7 xor r14d, r14d | r14d = 0; 0x0044c0ba xor eax, eax | eax = 0; | label_36: 0x0044c0bc cmp r12, rax | | if (r12 != rax) { 0x0044c0bf jne 0x44c1bc | goto label_8; | } 0x0044c0c5 test r12, r12 | | if (r12 == 0) { 0x0044c0c8 je 0x44c11d | goto label_37; | } 0x0044c0ca mov eax, dword [r15] | eax = *(r15); 0x0044c0cd mov bl, 1 | bl = 1; 0x0044c0cf cmp eax, dword [r14] | | if (eax != *(r14)) { 0x0044c0d2 jne 0x44c115 | goto label_38; | } 0x0044c0d4 add r14, 0x10 | r14 += 0x10; 0x0044c0d8 add r15, 0x10 | r15 += 0x10; 0x0044c0dc mov bl, 1 | bl = 1; 0x0044c0de mov ebp, 1 | | do { 0x0044c0e3 mov rdi, r15 | 0x0044c0e6 mov rsi, r14 | 0x0044c0e9 call 0x44bcb0 | al = BloombergLP::bdld::operator==(BloombergLP::bdld::Datumconst&,BloombergLP::bdld::Datumconst&) (r15, r14); | goto label_1; 0x0044c0ee test al, al | | if (al == 0) { 0x0044c0f0 je 0x44c115 | goto label_38; | } 0x0044c0f2 cmp rbp, r12 | 0x0044c0f5 setb bl | bl = (rbp < r12) ? 1 : 0; 0x0044c0f8 cmp r12, rbp | | if (r12 == rbp) { 0x0044c0fb je 0x44c115 | goto label_38; | } 0x0044c0fd mov eax, dword [r15 + 0x10] | eax = *((r15 + 0x10)); 0x0044c101 lea rcx, [r14 + 0x20] | rcx = r14 + 0x20; 0x0044c105 add r15, 0x20 | r15 += 0x20; 0x0044c109 inc rbp | rbp++; 0x0044c10c cmp eax, dword [r14 + 0x10] | 0x0044c110 mov r14, rcx | r14 = rcx; 0x0044c113 je 0x44c0e3 | | } while (eax == *((r14 + 0x10))); | label_38: 0x0044c115 xor bl, 1 | bl ^= 1; 0x0044c118 jmp 0x44c1be | goto label_9; | label_37: 0x0044c11d xor ebx, ebx | ebx = 0; 0x0044c11f xor bl, 1 | bl ^= 1; 0x0044c122 jmp 0x44c1be | goto label_9; | label_25: 0x0044c127 mov rax, qword [rdi] | rax = *(rdi); 0x0044c12a movsxd rdx, dword [rdi + 8] | rdx = *((rdi + 8)); | label_26: 0x0044c12e cmp ecx, 0x16 | | if (ecx != 0x16) { 0x0044c131 je 0x44c149 | 0x0044c133 xor esi, esi | esi = 0; 0x0044c135 mov edi, 0 | edi = 0; 0x0044c13a cmp ecx, 0x15 | | if (ecx != 0x15) { 0x0044c13d jne 0x44c150 | goto label_30; | } 0x0044c13f movsx rdi, byte [r14 + 0xd] | rdi = *((r14 + 0xd)); 0x0044c144 mov rsi, r14 | rsi = r14; 0x0044c147 jmp 0x44c150 | | } else { | label_29: 0x0044c149 mov rsi, qword [r14] | rsi = *(r14); 0x0044c14c movsxd rdi, dword [r14 + 8] | rdi = *((r14 + 8)); | } | label_30: 0x0044c150 cmp rdx, rdi | | if (rdx != rdi) { 0x0044c153 jne 0x44c1bc | goto label_8; | } 0x0044c155 mov rdi, rax | rdi = rax; 0x0044c158 call 0x404900 | eax = bcmp (); | label_32: 0x0044c15d test eax, eax | 0x0044c15f sete bl | bl = (eax == 0) ? 1 : 0; 0x0044c162 jmp 0x44c1be | goto label_9; | label_21: 0x0044c164 xor r15d, r15d | r15d = 0; 0x0044c167 xor r13d, r13d | r13d = 0; | label_22: 0x0044c16a mov r12, qword [r14] | r12 = *(r14); 0x0044c16d cmp cx, 0xd | | if (cx == 0xd) { 0x0044c171 jne 0x44c182 | 0x0044c173 test r12, r12 | | if (r12 != 0) { 0x0044c176 je 0x44c188 | 0x0044c178 mov rax, qword [r12] | rax = *(r12); 0x0044c17c add r12, 0x10 | r12 += 0x10; 0x0044c180 jmp 0x44c18d | | } else { 0x0044c182 movsxd rax, dword [r14 + 8] | rax = *((r14 + 8)); 0x0044c186 jmp 0x44c18d | | } else { 0x0044c188 xor r12d, r12d | r12d = 0; | } 0x0044c18b xor eax, eax | eax = 0; | } 0x0044c18d cmp r13, rax | | if (r13 != rax) { 0x0044c190 jne 0x44c1bc | goto label_8; | } 0x0044c192 test r13, r13 | | if (r13 == 0) { 0x0044c195 je 0x44c1be | goto label_9; | } 0x0044c197 shl r13, 4 | r13 <<= 4; | do { 0x0044c19b mov rdi, r15 | 0x0044c19e mov rsi, r12 | 0x0044c1a1 call 0x44bcb0 | eax = BloombergLP::bdld::operator==(BloombergLP::bdld::Datumconst&,BloombergLP::bdld::Datumconst&) (r15, r12); | goto label_1; 0x0044c1a6 mov ebx, eax | ebx = eax; 0x0044c1a8 test al, al | | if (al == 0) { 0x0044c1aa je 0x44c1be | goto label_9; | } 0x0044c1ac add r15, 0x10 | r15 += 0x10; 0x0044c1b0 add r12, 0x10 | r12 += 0x10; 0x0044c1b4 add r13, 0xfffffffffffffff0 | r13 += 0xfffffffffffffff0; 0x0044c1b8 jne 0x44c19b | | } while (r13 != 0); 0x0044c1ba jmp 0x44c1be | goto label_9; | label_8: 0x0044c1bc xor ebx, ebx | ebx = 0; | label_9: 0x0044c1be and bl, 1 | bl &= 1; 0x0044c1c1 mov eax, ebx | eax = ebx; 0x0044c1c3 add rsp, 0x58 | 0x0044c1c7 pop rbx | 0x0044c1c8 pop r12 | 0x0044c1ca pop r13 | 0x0044c1cc pop r14 | 0x0044c1ce pop r15 | 0x0044c1d0 pop rbp | 0x0044c1d1 ret | return rax; | label_13: 0x0044c1d2 lea rdi, [rsp + 0x10] | 0x0044c1d7 call 0x464360 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x10); 0x0044c1dc mov rbx, rax | rbx = rax; 0x0044c1df jmp 0x44bdae | goto label_2; | label_14: 0x0044c1e4 lea rdi, [rsp + 0x38] | 0x0044c1e9 call 0x464360 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x38); 0x0044c1ee mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); 0x0044c1f3 jmp 0x44bdca | goto label_3; | label_15: 0x0044c1f8 lea rdi, [rsp + 0x10] | 0x0044c1fd call 0x464360 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x10); 0x0044c202 mov rbx, rax | rbx = rax; 0x0044c205 mov rax, qword [rsp + 0x38] | rax = *((rsp + 0x38)); 0x0044c20a cmp rax, r12 | | if (rax >= r12) { 0x0044c20d jge 0x44bde7 | goto label_4; | } | label_16: 0x0044c213 lea rdi, [rsp + 0x38] | 0x0044c218 call 0x464360 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x38); 0x0044c21d jmp 0x44bdea | goto label_5; | label_17: 0x0044c222 mov edi, 0x72603c | 0x0044c227 call 0x4927d0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0044c22c mov qword [rsp + 0x10], 0x4d261e | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0044c235 mov qword [rsp + 0x18], 0x4d2654 | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0044c23e mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x0044c246 mov qword [rsp + 0x28], 0x4f1119 | *((rsp + 0x28)) = "R-INV"; 0x0044c24f mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x0044c253 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0044c258 call 0x4927f0 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0044c25d mov rax, rbx | rax = rbx; 0x0044c260 shr rax, 0x20 | rax >>= 0x20; 0x0044c264 shl rbx, 0x25 | rbx <<= 0x25; 0x0044c268 movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x0044c272 add rcx, rbx | rcx += rbx; 0x0044c275 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x0044c27c movabs rbx, 0x8000000000000000 | rbx = 0x8000000000000000; 0x0044c286 or rbx, rcx | rbx |= rcx; 0x0044c289 or rbx, rax | rbx |= rax; 0x0044c28c jmp 0x44be01 | goto label_6; | label_18: 0x0044c291 mov edi, 0x72603c | 0x0044c296 call 0x4927d0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0044c29b mov qword [rsp + 0x10], 0x4d261e | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0044c2a4 mov qword [rsp + 0x18], 0x4d2654 | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0044c2ad mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x0044c2b5 mov qword [rsp + 0x28], 0x4f1119 | *((rsp + 0x28)) = "R-INV"; 0x0044c2be mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x0044c2c2 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0044c2c7 call 0x4927f0 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0044c2cc mov rax, rbp | rax = rbp; 0x0044c2cf shr rax, 0x20 | rax >>= 0x20; 0x0044c2d3 shl rbp, 0x25 | rbp <<= 0x25; 0x0044c2d7 movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x0044c2e1 add rcx, rbp | rcx += rbp; 0x0044c2e4 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x0044c2eb movabs rbp, 0x8000000000000000 | 0x0044c2f5 or rbp, rcx | rbp |= rcx; 0x0044c2f8 or rbp, rax | rbp |= rax; 0x0044c2fb jmp 0x44be0d | goto label_7; | }