; assembly | /* r2dec pseudo code output */ | /* ball_asyncfileobserver.t/none @ 0x4487d0 */ | #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 () | int64_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 (uint32_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 */ 0x004487d0 push rbp | 0x004487d1 push r14 | 0x004487d3 push rbx | 0x004487d4 sub rsp, 0x10 | 0x004487d8 dec edx | edx--; 0x004487da cmp edx, 4 | | if (edx <= 4) { 0x004487dd ja 0x448921 | 0x004487e3 mov rbx, rdi | rbx = rdi; | /* switch table (5 cases) at 0x499ff8 */ 0x004487e6 jmp qword [rdx*8 + 0x499ff8] | 0x004487ed mov r14, qword [rsi] | r14 = *(rsi); 0x004487f0 mov rax, qword [r14] | rax = *(r14); 0x004487f3 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x004487f7 test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x004487fd jne 0x448921 | goto label_0; | } 0x00448803 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x00448806 mov esi, dword [rsi + 8] | 0x00448809 mov rdi, r14 | 0x0044880c mov edx, ebp | edx = ebp; 0x0044880e call 0x455d60 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x00448813 mov rsi, qword [rbx] | rsi = *(rbx); 0x00448816 mov rdi, r14 | rdi = r14; 0x00448819 call 0x4076e0 | std::_1::basic_ostream>::operator << (long long) (); 0x0044881e test ebp, ebp | | if (ebp < 0) { 0x00448820 js 0x448921 | goto label_0; | } 0x00448826 mov byte [rsp + 0xc], 0xa | *((rsp + 0xc)) = 0xa; 0x0044882b lea rsi, [rsp + 0xc] | rsi = rsp + 0xc; 0x00448830 jmp 0x448901 | goto label_1; 0x00448835 mov r14, qword [rsi] | r14 = *(rsi); 0x00448838 mov rax, qword [r14] | rax = *(r14); 0x0044883b mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0044883f test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x00448845 jne 0x448921 | goto label_0; | } 0x0044884b mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x0044884e mov esi, dword [rsi + 8] | 0x00448851 mov rdi, r14 | 0x00448854 mov edx, ebp | edx = ebp; 0x00448856 call 0x455d60 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x0044885b movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x0044885f mov rdi, r14 | rdi = r14; 0x00448862 call 0x407960 | std::_1::basic_ostream>::operator << (double) (); 0x00448867 test ebp, ebp | | if (ebp < 0) { 0x00448869 js 0x448921 | goto label_0; | } 0x0044886f mov byte [rsp + 0xd], 0xa | *((rsp + 0xd)) = 0xa; 0x00448874 lea rsi, [rsp + 0xd] | rsi = rsp + 0xd; 0x00448879 jmp 0x448901 | goto label_1; 0x0044887e mov r14, qword [rsi] | r14 = *(rsi); 0x00448881 mov rax, qword [r14] | rax = *(r14); 0x00448884 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x00448888 test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x0044888e jne 0x448921 | goto label_0; | } 0x00448894 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x00448897 mov esi, dword [rsi + 8] | 0x0044889a mov rdi, r14 | 0x0044889d mov edx, ebp | edx = ebp; 0x0044889f call 0x455d60 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x004488a4 mov rdi, r14 | 0x004488a7 mov rsi, rbx | 0x004488aa call 0x429cd0 | std::_1::basic_ostream>&bsl::operator << ,bsl::allocator>(std::_1::basic_ostream>&,bsl::basic_string,bsl::allocator>const&) (r14, rbx); 0x004488af test ebp, ebp | | if (ebp < 0) { 0x004488b1 js 0x448921 | goto label_0; | } 0x004488b3 mov byte [rsp + 0xe], 0xa | *((rsp + 0xe)) = 0xa; 0x004488b8 lea rsi, [rsp + 0xe] | rsi = rsp + 0xe; 0x004488bd jmp 0x448901 | goto label_1; 0x004488bf mov r14, qword [rsi] | r14 = *(rsi); 0x004488c2 mov rax, qword [r14] | rax = *(r14); 0x004488c5 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x004488c9 test byte [r14 + rax + 0x20], 1 | | if ((*((r14 + rax + 0x20)) & 1) != 0) { 0x004488cf jne 0x448921 | goto label_0; | } 0x004488d1 mov ebp, dword [rsi + 0xc] | ebp = *((rsi + 0xc)); 0x004488d4 mov esi, dword [rsi + 8] | 0x004488d7 mov rdi, r14 | 0x004488da mov edx, ebp | edx = ebp; 0x004488dc call 0x455d60 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (r14, *((rsi + 8))); 0x004488e1 mov rdi, rbx | 0x004488e4 mov rsi, r14 | 0x004488e7 xor edx, edx | 0x004488e9 mov ecx, 0xffffffff | 0x004488ee call 0x462690 | BloombergLP::bdlt::DatetimeTz::print(std::_1::basic_ostream>&,int,int)const (rbx, r14, 0, 0xffffffff); 0x004488f3 test ebp, ebp | | if (ebp < 0) { 0x004488f5 js 0x448921 | goto label_0; | } 0x004488f7 mov byte [rsp + 0xf], 0xa | *((rsp + 0xf)) = 0xa; 0x004488fc lea rsi, [rsp + 0xf] | | label_1: 0x00448901 mov edx, 1 | 0x00448906 mov rdi, r14 | 0x00448909 call 0x42bdd0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, rsp + 0xf, 1); 0x0044890e jmp 0x448921 | goto label_0; 0x00448910 mov rdi, qword [rsi] | 0x00448913 mov edx, dword [rsi + 8] | 0x00448916 mov ecx, dword [rsi + 0xc] | 0x00448919 mov rsi, rbx | 0x0044891c call 0x448930 | std::_1::basic_ostream>&BloombergLP::bdlb::PrintMethods::print>(std::_1::basic_ostream>&,bsl::vector>const&,int,int) (*(rsi), rbx, *((rsi + 8)), *((rsi + 0xc))); | } | label_0: 0x00448921 add rsp, 0x10 | 0x00448925 pop rbx | 0x00448926 pop r14 | 0x00448928 pop rbp | 0x00448929 ret | return rax; | }