; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/assume @ 0x44a7c0 */ | #include | ; (fcn) method.void_BloombergLP::bdld::Datum::apply_BloombergLP::bdld._anonymous_namespace_::Datum_StreamVisitor__BloombergLP::bdld::_anonymous_namespace_::Datum_StreamVisitor__const () | int64_t method_void_BloombergLP::bdld::Datum::apply_BloombergLP::bdld_anonymous_namespace_::Datum_StreamVisitor_BloombergLP::bdld::_anonymous_namespace_::Datum_StreamVisitor_const (int64_t arg2, int64_t arg1) { | int64_t var_fh; | char * var_10h; | char * var_18h; | int64_t var_20h; | int64_t var_21h; | char * var_28h; | int64_t var_30h; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bdld::Datum::apply(BloombergLP::bdld::(anonymous namespace)::Datum_StreamVisitor&) const */ 0x0044a7c0 push rbp | 0x0044a7c1 push r15 | 0x0044a7c3 push r14 | 0x0044a7c5 push rbx | 0x0044a7c6 sub rsp, 0x38 | 0x0044a7ca movsx eax, word [rdi + 0xe] | eax = *((rdi + 0xe)); 0x0044a7ce lea ecx, [rax - 1] | ecx = rax - 1; 0x0044a7d1 cmp ecx, 0x17 | | if (ecx > 0x17) { 0x0044a7d4 ja 0x44ad97 | goto label_1; | } 0x0044a7da mov r14, rsi | r14 = rsi; 0x0044a7dd mov rbx, rdi | rbx = rdi; | /* switch table (24 cases) at 0x4d4528 */ 0x0044a7e0 jmp qword [rcx*8 + 0x4d4528] | 0x0044a7e7 mov rax, qword [rbx] | rax = *(rbx); 0x0044a7ea test rax, rax | | if (rax == 0) { 0x0044a7ed je 0x44acf9 | goto label_2; | } 0x0044a7f3 lea rcx, [rax + 0x20] | rcx = rax + 0x20; 0x0044a7f7 mov rdx, qword [rax] | rdx = *(rax); 0x0044a7fa mov bl, byte [rax + 8] | bl = *((rax + 8)); 0x0044a7fd movzx eax, byte [rax + 9] | eax = *((rax + 9)); 0x0044a801 mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x0044a806 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0044a80b mov byte [rsp + 0x20], bl | *((rsp + 0x20)) = bl; 0x0044a80f xor ecx, ecx | ecx = 0; 0x0044a811 test rdx, rdx | | if (rdx != 0) { 0x0044a814 cmovne ecx, eax | ecx = eax; | } 0x0044a817 mov byte [rsp + 0x21], cl | *((rsp + 0x21)) = cl; 0x0044a81b jmp 0x44ad08 | goto label_3; 0x0044a820 mov rax, qword [rbx] | rax = *(rbx); 0x0044a823 movsxd rcx, dword [rbx + 8] | rcx = *((rbx + 8)); 0x0044a827 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044a82c mov qword [rsp + 0x18], rcx | *((rsp + 0x18)) = rcx; 0x0044a831 jmp 0x44a960 | goto label_4; 0x0044a836 cmp ax, 0x13 | | if (ax != 0x13) { 0x0044a83a jne 0x44ac75 | goto label_5; | } 0x0044a840 mov eax, dword [rbx] | eax = *(rbx); 0x0044a842 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0044a845 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x0044a84a jmp 0x44ac8c | goto label_6; 0x0044a84f cmp ax, 0x15 | | if (ax != 0x15) { 0x0044a853 jne 0x44acbc | goto label_7; | } 0x0044a859 movsx rax, byte [rbx + 0xd] | rax = *((rbx + 0xd)); 0x0044a85e jmp 0x44acc3 | goto label_8; 0x0044a863 mov rbx, qword [r14] | rbx = *(r14); 0x0044a866 mov rax, qword [rbx] | rax = *(rbx); 0x0044a869 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044a86d test byte [rbx + rax + 0x20], 1 | | if ((*((rbx + rax + 0x20)) & 1) != 0) { 0x0044a872 jne 0x44ad97 | goto label_1; | } 0x0044a878 mov esi, dword [r14 + 8] | 0x0044a87c mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044a880 mov rdi, rbx | 0x0044a883 mov edx, ebp | edx = ebp; 0x0044a885 call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rbx, *((r14 + 8))); 0x0044a88a movsd xmm0, qword [rip + 0x879ee] | xmm0 = *(0x004d2280); 0x0044a892 mov rdi, rbx | rdi = rbx; 0x0044a895 call 0x404bc0 | std::_1::basic_ostream>::operator << (double) (); 0x0044a89a test ebp, ebp | | if (ebp < 0) { 0x0044a89c js 0x44ad97 | goto label_1; | } 0x0044a8a2 mov byte [rsp + 0x10], 0xa | *((rsp + 0x10)) = 0xa; 0x0044a8a7 lea rsi, [rsp + 0x10] | rsi = rsp + 0x10; 0x0044a8ac jmp 0x44aada | goto label_9; 0x0044a8b1 mov rdi, qword [r14] | rdi = *(r14); 0x0044a8b4 mov rax, qword [rdi] | rax = *(rdi); 0x0044a8b7 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044a8bb test byte [rdi + rax + 0x20], 1 | | if ((*((rdi + rax + 0x20)) & 1) != 0) { 0x0044a8c0 jne 0x44ad97 | goto label_1; | } 0x0044a8c6 mov esi, dword [r14 + 8] | 0x0044a8ca mov edx, dword [r14 + 0xc] | edx = *((r14 + 0xc)); 0x0044a8ce call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rdi, *((r14 + 8))); 0x0044a8d3 mov rdi, qword [r14] | rdi = *(r14); 0x0044a8d6 mov esi, 0x4d4776 | esi = 0x4d4776; 0x0044a8db mov edx, 3 | edx = 3; 0x0044a8e0 jmp 0x44a923 | goto label_10; 0x0044a8e2 mov rdi, qword [r14] | rdi = *(r14); 0x0044a8e5 mov rax, qword [rdi] | rax = *(rdi); 0x0044a8e8 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044a8ec test byte [rdi + rax + 0x20], 1 | | if ((*((rdi + rax + 0x20)) & 1) != 0) { 0x0044a8f1 jne 0x44ad97 | goto label_1; | } 0x0044a8f7 mov ebx, dword [rbx + 8] | ebx = *((rbx + 8)); 0x0044a8fa mov esi, dword [r14 + 8] | 0x0044a8fe mov edx, dword [r14 + 0xc] | edx = *((r14 + 0xc)); 0x0044a902 call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rdi, *((r14 + 8))); 0x0044a907 xor edx, edx | edx = 0; 0x0044a909 test ebx, ebx | 0x0044a90b sete dl | dl = (ebx == 0) ? 1 : 0; 0x0044a90e mov rdi, qword [r14] | rdi = *(r14); 0x0044a911 mov eax, 0x4d101d | eax = 0x4d101d; 0x0044a916 mov esi, 0x4cf371 | esi = 0x4cf371; | if (ebx == 0) { 0x0044a91b cmove rsi, rax | rsi = rax; | } 0x0044a91f or rdx, 4 | rdx |= 4; | label_10: 0x0044a923 call 0x43ae00 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rdi, rsi, rdx); 0x0044a928 cmp dword [r14 + 0xc], 0 | | if (*((r14 + 0xc)) < 0) { 0x0044a92d js 0x44ad97 | goto label_1; | } 0x0044a933 mov rdi, qword [r14] | 0x0044a936 mov byte [rsp + 0x10], 0xa | *((rsp + 0x10)) = 0xa; 0x0044a93b lea rsi, [rsp + 0x10] | 0x0044a940 mov edx, 1 | 0x0044a945 call 0x43ae00 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*(r14), rsp + 0x10, 1); 0x0044a94a jmp 0x44ad97 | goto label_1; 0x0044a94f movsx rax, byte [rbx] | rax = *(rbx); 0x0044a953 inc rbx | rbx++; 0x0044a956 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044a95b mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; | label_4: 0x0044a960 lea rsi, [rsp + 0x10] | 0x0044a965 mov rdi, r14 | 0x0044a968 call 0x44c290 | BloombergLP::bdld::(anonymousnamespace)::Datum_StreamVisitor::operator()(BloombergLP::bslstl::StringRefImpconst&)const (r14, rsp + 0x10); 0x0044a96d jmp 0x44ad97 | goto label_1; 0x0044a972 mov eax, dword [rbx] | eax = *(rbx); 0x0044a974 mov dword [rsp + 0x10], eax | *((rsp + 0x10)) = eax; 0x0044a978 mov rbx, qword [r14] | rbx = *(r14); 0x0044a97b mov rax, qword [rbx] | rax = *(rbx); 0x0044a97e mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044a982 test byte [rbx + rax + 0x20], 1 | | if ((*((rbx + rax + 0x20)) & 1) != 0) { 0x0044a987 jne 0x44ad97 | goto label_1; | } 0x0044a98d mov esi, dword [r14 + 8] | 0x0044a991 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044a995 mov rdi, rbx | 0x0044a998 mov edx, ebp | edx = ebp; 0x0044a99a call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rbx, *((r14 + 8))); 0x0044a99f lea rdi, [rsp + 0x10] | 0x0044a9a4 mov rsi, rbx | 0x0044a9a7 xor edx, edx | 0x0044a9a9 mov ecx, 0xffffffff | 0x0044a9ae call 0x45ded0 | BloombergLP::bdlt::Date::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rbx, 0, 0xffffffff); 0x0044a9b3 jmp 0x44aac8 | goto label_11; 0x0044a9b8 movabs rbp, 0x4000000000 | 0x0044a9c2 mov rax, qword [rbx] | rax = *(rbx); 0x0044a9c5 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044a9ca cmp rax, rbp | | if (rax < rbp) { 0x0044a9cd jl 0x44ada2 | goto label_12; | } 0x0044a9d3 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x0044a9dd and rax, rcx | rax &= rcx; | do { 0x0044a9e0 or rax, rbp | rax |= rbp; 0x0044a9e3 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044a9e8 mov rbx, qword [r14] | rbx = *(r14); 0x0044a9eb mov rax, qword [rbx] | rax = *(rbx); 0x0044a9ee mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044a9f2 test byte [rbx + rax + 0x20], 1 | | if ((*((rbx + rax + 0x20)) & 1) == 0) { 0x0044a9f7 jne 0x44ad97 | 0x0044a9fd mov esi, dword [r14 + 8] | 0x0044aa01 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044aa05 mov rdi, rbx | 0x0044aa08 mov edx, ebp | edx = ebp; 0x0044aa0a call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rbx, *((r14 + 8))); 0x0044aa0f lea rdi, [rsp + 0x10] | 0x0044aa14 mov rsi, rbx | 0x0044aa17 xor edx, edx | 0x0044aa19 mov ecx, 0xffffffff | 0x0044aa1e call 0x464970 | BloombergLP::bdlt::Time::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rbx, 0, 0xffffffff); 0x0044aa23 jmp 0x44aac8 | goto label_11; 0x0044aa28 mov rbx, qword [rbx] | rbx = *(rbx); 0x0044aa2b test rbx, rbx | | if (rbx >= 0) { 0x0044aa2e jns 0x44adb1 | goto label_13; | } | label_0: 0x0044aa34 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044aa39 mov rbx, qword [r14] | rbx = *(r14); 0x0044aa3c mov rax, qword [rbx] | rax = *(rbx); 0x0044aa3f mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044aa43 test byte [rbx + rax + 0x20], 1 | | if ((*((rbx + rax + 0x20)) & 1) != 0) { 0x0044aa48 jne 0x44ad97 | goto label_1; | } 0x0044aa4e mov esi, dword [r14 + 8] | 0x0044aa52 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044aa56 mov rdi, rbx | 0x0044aa59 mov edx, ebp | edx = ebp; 0x0044aa5b call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rbx, *((r14 + 8))); 0x0044aa60 lea rsi, [rsp + 0x10] | 0x0044aa65 mov rdi, rbx | 0x0044aa68 call 0x45e400 | BloombergLP::bdlt::operator << (std::_1::basic_ostream>&,BloombergLP::bdlt::Datetimeconst&) (rbx, rsp + 0x10); 0x0044aa6d jmp 0x44aac8 | goto label_11; 0x0044aa6f mov esi, dword [rbx + 8] | 0x0044aa72 mov rax, qword [rbx] | rax = *(rbx); 0x0044aa75 mov qword [rsp], rax | *(rsp) = rax; 0x0044aa79 lea rdi, [rsp + 0x10] | 0x0044aa7e xor edx, edx | 0x0044aa80 xor ecx, ecx | 0x0044aa82 xor r8d, r8d | 0x0044aa85 xor r9d, r9d | 0x0044aa88 call 0x45e700 | BloombergLP::bdlt::DatetimeInterval::setInterval(int,long long,long long,long long,long long,long long) (rsp + 0x10, *((rbx + 8)), 0, 0, 0, 0); 0x0044aa8d mov rbx, qword [r14] | rbx = *(r14); 0x0044aa90 mov rax, qword [rbx] | rax = *(rbx); 0x0044aa93 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044aa97 test byte [rbx + rax + 0x20], 1 | | if ((*((rbx + rax + 0x20)) & 1) != 0) { 0x0044aa9c jne 0x44ad97 | goto label_1; | } 0x0044aaa2 mov esi, dword [r14 + 8] | 0x0044aaa6 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044aaaa mov rdi, rbx | 0x0044aaad mov edx, ebp | edx = ebp; 0x0044aaaf call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (rbx, *((r14 + 8))); 0x0044aab4 lea rdi, [rsp + 0x10] | 0x0044aab9 mov rsi, rbx | 0x0044aabc xor edx, edx | 0x0044aabe mov ecx, 0xffffffff | 0x0044aac3 call 0x45eae0 | BloombergLP::bdlt::DatetimeInterval::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rbx, 0, 0xffffffff); | label_11: 0x0044aac8 test ebp, ebp | | if (ebp < 0) { 0x0044aaca js 0x44ad97 | goto label_1; | } 0x0044aad0 mov byte [rsp + 0xf], 0xa | *((rsp + 0xf)) = 0xa; 0x0044aad5 lea rsi, [rsp + 0xf] | | label_9: 0x0044aada mov edx, 1 | 0x0044aadf mov rdi, rbx | 0x0044aae2 call 0x43ae00 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rbx, rsp + 0xf, 1); 0x0044aae7 jmp 0x44ad97 | goto label_1; 0x0044aaec mov r15, qword [r14] | r15 = *(r14); 0x0044aaef mov rax, qword [r15] | rax = *(r15); 0x0044aaf2 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044aaf6 test byte [r15 + rax + 0x20], 1 | | if ((*((r15 + rax + 0x20)) & 1) != 0) { 0x0044aafc jne 0x44ad97 | goto label_1; | } 0x0044ab02 mov ebx, dword [rbx + 8] | ebx = *((rbx + 8)); 0x0044ab05 mov esi, dword [r14 + 8] | 0x0044ab09 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044ab0d mov rdi, r15 | 0x0044ab10 mov edx, ebp | edx = ebp; 0x0044ab12 call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r15, *((r14 + 8))); 0x0044ab17 mov rdi, r15 | rdi = r15; 0x0044ab1a mov esi, ebx | esi = ebx; 0x0044ab1c call 0x404a00 | std::_1::basic_ostream>::operator << (int) (); 0x0044ab21 jmp 0x44ac36 | goto label_14; 0x0044ab26 mov r15, qword [r14] | r15 = *(r14); 0x0044ab29 mov rax, qword [r15] | rax = *(r15); 0x0044ab2c mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ab30 test byte [r15 + rax + 0x20], 1 | | if ((*((r15 + rax + 0x20)) & 1) != 0) { 0x0044ab36 jne 0x44ad97 | goto label_1; | } 0x0044ab3c mov rbx, qword [rbx] | rbx = *(rbx); 0x0044ab3f mov esi, dword [r14 + 8] | 0x0044ab43 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044ab47 mov rdi, r15 | 0x0044ab4a mov edx, ebp | edx = ebp; 0x0044ab4c call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r15, *((r14 + 8))); 0x0044ab51 mov rdi, r15 | rdi = r15; 0x0044ab54 mov rsi, rbx | rsi = rbx; 0x0044ab57 call 0x404ae0 | std::_1::basic_ostream>::operator << (long long) (); 0x0044ab5c jmp 0x44ac36 | goto label_14; 0x0044ab61 mov rax, qword [rbx] | rax = *(rbx); 0x0044ab64 mov ecx, dword [rbx + 8] | ecx = *((rbx + 8)); 0x0044ab67 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044ab6c mov dword [rsp + 0x18], ecx | *((rsp + 0x18)) = ecx; 0x0044ab70 mov rsi, qword [r14] | rsi = *(r14); 0x0044ab73 mov rax, qword [rsi] | rax = *(rsi); 0x0044ab76 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ab7a test byte [rsi + rax + 0x20], 1 | | if ((*((rsi + rax + 0x20)) & 1) != 0) { 0x0044ab7f jne 0x44ad97 | goto label_1; | } 0x0044ab85 mov edx, dword [r14 + 8] | 0x0044ab89 mov ecx, dword [r14 + 0xc] | 0x0044ab8d lea rdi, [rsp + 0x10] | 0x0044ab92 call 0x44e250 | BloombergLP::bdld::DatumUdt::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rsi, *((r14 + 8)), *((r14 + 0xc))); 0x0044ab97 jmp 0x44ad97 | goto label_1; 0x0044ab9c mov rcx, qword [rbx] | rcx = *(rbx); 0x0044ab9f test rcx, rcx | | if (rcx != 0) { 0x0044aba2 je 0x44ad2d | 0x0044aba8 mov rax, qword [rcx] | rax = *(rcx); 0x0044abab add rcx, 0x10 | rcx += 0x10; 0x0044abaf jmp 0x44ad31 | goto label_15; 0x0044abb4 mov rax, qword [rbx] | rax = *(rbx); 0x0044abb7 movsxd rcx, dword [rbx + 8] | rcx = *((rbx + 8)); 0x0044abbb mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044abc0 mov qword [rsp + 0x18], rcx | *((rsp + 0x18)) = rcx; 0x0044abc5 jmp 0x44ad3b | goto label_16; 0x0044abca mov r15, qword [r14] | r15 = *(r14); 0x0044abcd mov rax, qword [r15] | rax = *(r15); 0x0044abd0 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044abd4 test byte [r15 + rax + 0x20], 1 | | if ((*((r15 + rax + 0x20)) & 1) != 0) { 0x0044abda jne 0x44ad97 | goto label_1; | } 0x0044abe0 mov esi, dword [r14 + 8] | 0x0044abe4 mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044abe8 mov rdi, r15 | 0x0044abeb mov edx, ebp | edx = ebp; 0x0044abed call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r15, *((r14 + 8))); 0x0044abf2 movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x0044abf6 mov rdi, r15 | rdi = r15; 0x0044abf9 call 0x404bc0 | std::_1::basic_ostream>::operator << (double) (); 0x0044abfe jmp 0x44ac36 | goto label_14; 0x0044ac00 mov r15, qword [r14] | r15 = *(r14); 0x0044ac03 mov rax, qword [r15] | rax = *(r15); 0x0044ac06 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ac0a test byte [r15 + rax + 0x20], 1 | | if ((*((r15 + rax + 0x20)) & 1) != 0) { 0x0044ac10 jne 0x44ad97 | goto label_1; | } 0x0044ac16 mov rbx, qword [rbx] | rbx = *(rbx); 0x0044ac19 mov esi, dword [r14 + 8] | 0x0044ac1d mov ebp, dword [r14 + 0xc] | ebp = *((r14 + 0xc)); 0x0044ac21 mov rdi, r15 | 0x0044ac24 mov edx, ebp | edx = ebp; 0x0044ac26 call 0x448060 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r15, *((r14 + 8))); 0x0044ac2b mov rdi, r15 | 0x0044ac2e mov rsi, rbx | 0x0044ac31 call 0x4571c0 | std::_1::basic_ostream>&BloombergLP::bdldfp::operator << >(std::_1::basic_ostream>&,BloombergLP::bdldfp::Decimal_Type64) (r15, rbx); | label_14: 0x0044ac36 test ebp, ebp | | if (ebp < 0) { 0x0044ac38 js 0x44ad97 | goto label_1; | } 0x0044ac3e mov byte [rsp + 0x10], 0xa | *((rsp + 0x10)) = 0xa; 0x0044ac43 lea rsi, [rsp + 0x10] | 0x0044ac48 mov edx, 1 | 0x0044ac4d mov rdi, r15 | 0x0044ac50 call 0x43ae00 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r15, rsp + 0x10, 1); 0x0044ac55 jmp 0x44ad97 | goto label_1; 0x0044ac5a mov rdx, qword [rbx] | rdx = *(rbx); 0x0044ac5d test rdx, rdx | | if (rdx != 0) { 0x0044ac60 je 0x44ad60 | 0x0044ac66 lea rax, [rdx + 0x20] | rax = rdx + 0x20; 0x0044ac6a mov rcx, qword [rdx] | rcx = *(rdx); 0x0044ac6d mov dl, byte [rdx + 8] | dl = *((rdx + 8)); 0x0044ac70 jmp 0x44ad66 | goto label_17; | label_5: 0x0044ac75 mov rcx, qword [rbx] | rcx = *(rbx); 0x0044ac78 mov eax, dword [rcx] | eax = *(rcx); 0x0044ac7a movsxd rdx, dword [rcx + 4] | rdx = *((rcx + 4)); 0x0044ac7e add rcx, 8 | rcx += 8; 0x0044ac82 mov qword [rsp + 0x18], rcx | *((rsp + 0x18)) = rcx; 0x0044ac87 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; | label_6: 0x0044ac8c mov dword [rsp + 0x10], eax | *((rsp + 0x10)) = eax; 0x0044ac90 mov rsi, qword [r14] | rsi = *(r14); 0x0044ac93 mov rax, qword [rsi] | rax = *(rsi); 0x0044ac96 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ac9a test byte [rsi + rax + 0x20], 1 | | if ((*((rsi + rax + 0x20)) & 1) != 0) { 0x0044ac9f jne 0x44ad97 | goto label_1; | } 0x0044aca5 mov edx, dword [r14 + 8] | 0x0044aca9 mov ecx, dword [r14 + 0xc] | 0x0044acad lea rdi, [rsp + 0x10] | 0x0044acb2 call 0x44c810 | BloombergLP::bdld::DatumError::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rsi, *((r14 + 8)), *((r14 + 0xc))); 0x0044acb7 jmp 0x44ad97 | goto label_1; | label_7: 0x0044acbc movsxd rax, dword [rbx + 8] | rax = *((rbx + 8)); 0x0044acc0 mov rbx, qword [rbx] | rbx = *(rbx); | label_8: 0x0044acc3 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0044acc8 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x0044accd mov rsi, qword [r14] | rsi = *(r14); 0x0044acd0 mov rax, qword [rsi] | rax = *(rsi); 0x0044acd3 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044acd7 test byte [rsi + rax + 0x20], 1 | | if ((*((rsi + rax + 0x20)) & 1) != 0) { 0x0044acdc jne 0x44ad97 | goto label_1; | } 0x0044ace2 mov edx, dword [r14 + 8] | 0x0044ace6 mov ecx, dword [r14 + 0xc] | 0x0044acea lea rdi, [rsp + 0x10] | 0x0044acef call 0x44c6e0 | BloombergLP::bdld::DatumBinaryRef::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rsi, *((r14 + 8)), *((r14 + 0xc))); 0x0044acf4 jmp 0x44ad97 | goto label_1; | label_2: 0x0044acf9 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0044acfc movaps xmmword [rsp + 0x10], xmm0 | *((rsp + 0x10)) = xmm0; 0x0044ad01 mov word [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; | label_3: 0x0044ad08 mov rsi, qword [r14] | rsi = *(r14); 0x0044ad0b mov rax, qword [rsi] | rax = *(rsi); 0x0044ad0e mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ad12 test byte [rsi + rax + 0x20], 1 | | if ((*((rsi + rax + 0x20)) & 1) != 0) { 0x0044ad17 jne 0x44ad97 | goto label_1; | } 0x0044ad19 mov edx, dword [r14 + 8] | 0x0044ad1d mov ecx, dword [r14 + 0xc] | 0x0044ad21 lea rdi, [rsp + 0x10] | 0x0044ad26 call 0x44b4e0 | eax = BloombergLP::bdld::DatumMapRef::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rsi, *((r14 + 8)), *((r14 + 0xc))); 0x0044ad2b jmp 0x44ad97 | 0x0044ad2d xor eax, eax | eax = 0; 0x0044ad2f xor ecx, ecx | ecx = 0; | label_15: 0x0044ad31 mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x0044ad36 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; | label_16: 0x0044ad3b mov rsi, qword [r14] | rsi = *(r14); 0x0044ad3e mov rax, qword [rsi] | rax = *(rsi); 0x0044ad41 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ad45 test byte [rsi + rax + 0x20], 1 | | } else { | } else { | if ((*((rsi + rax + 0x20)) & 1) != 0) { 0x0044ad4a jne 0x44ad97 | goto label_1; | } 0x0044ad4c mov edx, dword [r14 + 8] | 0x0044ad50 mov ecx, dword [r14 + 0xc] | 0x0044ad54 lea rdi, [rsp + 0x10] | 0x0044ad59 call 0x44ae20 | eax = BloombergLP::bdld::DatumArrayRef::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rsi, *((r14 + 8)), *((r14 + 0xc))); 0x0044ad5e jmp 0x44ad97 | 0x0044ad60 xor eax, eax | eax = 0; 0x0044ad62 xor ecx, ecx | ecx = 0; 0x0044ad64 xor edx, edx | edx = 0; | label_17: 0x0044ad66 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044ad6b mov qword [rsp + 0x18], rcx | *((rsp + 0x18)) = rcx; 0x0044ad70 mov byte [rsp + 0x20], dl | *((rsp + 0x20)) = dl; 0x0044ad74 mov rsi, qword [r14] | rsi = *(r14); 0x0044ad77 mov rax, qword [rsi] | rax = *(rsi); 0x0044ad7a mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044ad7e test byte [rsi + rax + 0x20], 1 | | } | } | } | if ((*((rsi + rax + 0x20)) & 1) != 0) { 0x0044ad83 jne 0x44ad97 | goto label_1; | } 0x0044ad85 mov edx, dword [r14 + 8] | 0x0044ad89 mov ecx, dword [r14 + 0xc] | 0x0044ad8d lea rdi, [rsp + 0x10] | 0x0044ad92 call 0x44b5b0 | BloombergLP::bdld::DatumIntMapRef::print(std::_1::basic_ostream>&,int,int)const (rsp + 0x10, rsi, *((r14 + 8)), *((r14 + 0xc))); | label_1: 0x0044ad97 add rsp, 0x38 | 0x0044ad9b pop rbx | 0x0044ad9c pop r14 | 0x0044ad9e pop r15 | 0x0044ada0 pop rbp | 0x0044ada1 ret | return rax; | label_12: 0x0044ada2 lea rdi, [rsp + 0x10] | 0x0044ada7 call 0x4637e0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 0x10); 0x0044adac jmp 0x44a9e0 | | } while (1); | label_13: 0x0044adb1 mov edi, 0x72503c | 0x0044adb6 call 0x491c60 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0044adbb mov qword [rsp + 0x10], 0x4d1a6e | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0044adc4 mov qword [rsp + 0x18], 0x4d1aa4 | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x0044adcd mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x0044add5 mov qword [rsp + 0x28], 0x4f0479 | *((rsp + 0x28)) = "R-INV"; 0x0044adde mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x0044ade2 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0044ade7 call 0x491c80 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0044adec mov rax, rbx | rax = rbx; 0x0044adef shr rax, 0x20 | rax >>= 0x20; 0x0044adf3 shl rbx, 0x25 | rbx <<= 0x25; 0x0044adf7 movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x0044ae01 add rcx, rbx | rcx += rbx; 0x0044ae04 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x0044ae0b movabs rbx, 0x8000000000000000 | rbx = 0x8000000000000000; 0x0044ae15 or rbx, rcx | rbx |= rcx; 0x0044ae18 or rbx, rax | rbx |= rax; 0x0044ae1b jmp 0x44aa34 | goto label_0; | }