; assembly | /* r2dec pseudo code output */ | /* ball_asyncfileobserver.t/assume @ 0x448590 */ | #include | ; (fcn) method.void_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_long_long__double__bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::bdlt::DatetimeTz__bsl::vector_char__bsl::allocator_char_______::doApply_Bl () | uint64_t method_void_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_long_long_double_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_BloombergLP::bdlt::DatetimeTz_bsl::vector_char_bsl::allocator_char_::doApply_Bl (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_ch; | int64_t var_dh; | int64_t var_eh; | int64_t var_fh; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bdlb::VariantImp, bsl::allocator >, BloombergLP::bdlt::DatetimeTz, bsl::vector > > >::doApply(BloombergLP::bdlb::Variant_PrintVisitor const&, int) const */ 0x00448590 push rbp | 0x00448591 push r14 | 0x00448593 push rbx | 0x00448594 sub rsp, 0x10 | 0x00448598 lea eax, [rdx - 6] | eax = rdx - 6; 0x0044859b cmp eax, 0xf | 0x0044859e jae 0x4485a9 | | while ((*((r14 + rax + 0x20)) & 1) != 0) { | label_0: 0x004485a0 add rsp, 0x10 | 0x004485a4 pop rbx | 0x004485a5 pop r14 | 0x004485a7 pop rbp | 0x004485a8 ret | return eax; 0x004485a9 mov rbx, rdi | rbx = rdi; 0x004485ac dec edx | edx--; | /* switch table (5 cases) at 0x499468 */ 0x004485ae jmp qword [rdx*8 + 0x499468] | 0x004485b5 mov r14, qword [rsi] | r14 = *(rsi); 0x004485b8 mov rax, qword [r14] | rax = *(r14); 0x004485bb mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x004485bf test byte [r14 + rax + 0x20], 1 | 0x004485c5 jne 0x4485a0 | | } 0x004485c7 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x004485ca mov esi, dword [rsi + 8] | 0x004485cd mov rdi, r14 | 0x004485d0 mov edx, ebp | edx = ebp; 0x004485d2 call 0x4557d0 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x004485d7 mov rsi, qword [rbx] | rsi = *(rbx); 0x004485da mov rdi, r14 | rdi = r14; 0x004485dd call 0x4076e0 | std::_1::basic_ostream>::operator << (long long) (); 0x004485e2 test ebp, ebp | | if (ebp < 0) { 0x004485e4 js 0x4485a0 | goto label_0; | } 0x004485e6 mov byte [rsp + 0xc], 0xa | *((rsp + 0xc)) = 0xa; 0x004485eb lea rsi, [rsp + 0xc] | rsi = rsp + 0xc; 0x004485f0 jmp 0x4486c9 | goto label_1; 0x004485f5 mov r14, qword [rsi] | r14 = *(rsi); 0x004485f8 mov rax, qword [r14] | rax = *(r14); 0x004485fb mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x004485ff test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x00448605 jne 0x4485a0 | goto label_0; | } 0x00448607 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x0044860a mov esi, dword [rsi + 8] | 0x0044860d mov rdi, r14 | 0x00448610 mov edx, ebp | edx = ebp; 0x00448612 call 0x4557d0 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x00448617 movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x0044861b mov rdi, r14 | rdi = r14; 0x0044861e call 0x407960 | std::_1::basic_ostream>::operator << (double) (); 0x00448623 test ebp, ebp | | if (ebp < 0) { 0x00448625 js 0x4485a0 | goto label_0; | } 0x0044862b mov byte [rsp + 0xd], 0xa | *((rsp + 0xd)) = 0xa; 0x00448630 lea rsi, [rsp + 0xd] | rsi = rsp + 0xd; 0x00448635 jmp 0x4486c9 | goto label_1; 0x0044863a mov r14, qword [rsi] | r14 = *(rsi); 0x0044863d mov rax, qword [r14] | rax = *(r14); 0x00448640 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x00448644 test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x0044864a jne 0x4485a0 | goto label_0; | } 0x00448650 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x00448653 mov esi, dword [rsi + 8] | 0x00448656 mov rdi, r14 | 0x00448659 mov edx, ebp | edx = ebp; 0x0044865b call 0x4557d0 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x00448660 mov rdi, r14 | 0x00448663 mov rsi, rbx | 0x00448666 call 0x429c00 | std::_1::basic_ostream>&bsl::operator << ,bsl::allocator>(std::_1::basic_ostream>&,bsl::basic_string,bsl::allocator>const&) (r14, rbx); 0x0044866b test ebp, ebp | | if (ebp < 0) { 0x0044866d js 0x4485a0 | goto label_0; | } 0x00448673 mov byte [rsp + 0xe], 0xa | *((rsp + 0xe)) = 0xa; 0x00448678 lea rsi, [rsp + 0xe] | rsi = rsp + 0xe; 0x0044867d jmp 0x4486c9 | goto label_1; 0x0044867f mov r14, qword [rsi] | r14 = *(rsi); 0x00448682 mov rax, qword [r14] | rax = *(r14); 0x00448685 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x00448689 test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x0044868f jne 0x4485a0 | goto label_0; | } 0x00448695 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x00448698 mov esi, dword [rsi + 8] | 0x0044869b mov rdi, r14 | 0x0044869e mov edx, ebp | edx = ebp; 0x004486a0 call 0x4557d0 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x004486a5 mov rdi, rbx | 0x004486a8 mov rsi, r14 | 0x004486ab xor edx, edx | 0x004486ad mov ecx, 0xffffffff | 0x004486b2 call 0x461f20 | BloombergLP::bdlt::DatetimeTz::print(std::_1::basic_ostream>&,int,int)const (rbx, r14, 0, 0xffffffff); 0x004486b7 test ebp, ebp | | if (ebp < 0) { 0x004486b9 js 0x4485a0 | goto label_0; | } 0x004486bf mov byte [rsp + 0xf], 0xa | *((rsp + 0xf)) = 0xa; 0x004486c4 lea rsi, [rsp + 0xf] | | label_1: 0x004486c9 mov edx, 1 | 0x004486ce mov rdi, r14 | 0x004486d1 call 0x42bd00 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, rsp + 0xf, 1); 0x004486d6 jmp 0x4485a0 | goto label_0; 0x004486db mov rdi, qword [rsi] | 0x004486de mov edx, dword [rsi + 8] | 0x004486e1 mov ecx, dword [rsi + 0xc] | 0x004486e4 mov rsi, rbx | 0x004486e7 call 0x448700 | std::_1::basic_ostream>&BloombergLP::bdlb::PrintMethods::print>(std::_1::basic_ostream>&,bsl::vector>const&,int,int) (*(rsi), rbx, *((rsi + 8)), *((rsi + 0xc))); 0x004486ec jmp 0x4485a0 | goto label_0; | }