; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x474ec0 */ | #include | ; (fcn) method.int_BloombergLP::baljsn::Encoder_ValueDispatcher.operator___BloombergLP::bdlt::DatetimeTz__BloombergLP::bdlt::DatetimeTz_const__BloombergLP::bdlat_TypeCategory::Simple_ () | int64_t method_int_BloombergLP::baljsn::Encoder_ValueDispatcher_operator_BloombergLP::bdlt::DatetimeTz_BloombergLP::bdlt::DatetimeTz_const_BloombergLP::bdlat_TypeCategory::Simple_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | size_t var_18h; | int64_t var_20h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::baljsn::Encoder_ValueDispatcher::operator()(BloombergLP::bdlt::DatetimeTz const&, BloombergLP::bdlat_TypeCategory::Simple) */ 0x00474ec0 push r15 | 0x00474ec2 push r14 | 0x00474ec4 push r12 | 0x00474ec6 push rbx | 0x00474ec7 sub rsp, 0x48 | 0x00474ecb mov r14, rsi | r14 = rsi; 0x00474ece mov byte [rdi], 0 | *(rdi) = 0; 0x00474ed1 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x00474ed5 mov r12, qword [rdi + 0x20] | r12 = *((rdi + 0x20)); 0x00474ed9 cmp byte [rbx + 8], 0 | | if (*((rbx + 8)) != 0) { 0x00474edd je 0x474f09 | 0x00474edf mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x00474ee3 mov rcx, qword [rbx + 0x38] | rcx = *((rbx + 0x38)); 0x00474ee7 dec rcx | rcx--; 0x00474eea mov rdx, rcx | rdx = rcx; 0x00474eed shr rdx, 6 | rdx >>= 6; 0x00474ef1 mov rax, qword [rax + rdx*8] | rax = *((rax + rdx*8)); 0x00474ef5 bt rax, rcx | | if (((rax >> rcx) & 1) >= 0) { 0x00474ef9 jae 0x474f09 | goto label_0; | } 0x00474efb mov rdi, qword [rbx] | 0x00474efe mov esi, dword [rbx + 0xc] | 0x00474f01 mov edx, dword [rbx + 0x10] | edx = *((rbx + 0x10)); 0x00474f04 call 0x4d79e0 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (*(rbx), *((rbx + 0xc))); | } | label_0: 0x00474f09 mov r15, qword [rbx] | r15 = *(rbx); 0x00474f0c mov dword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x00474f14 test r12, r12 | | if (r12 != 0) { 0x00474f17 je 0x474f2a | 0x00474f19 mov esi, dword [r12 + 8] | 0x00474f1e lea rdi, [rsp + 8] | 0x00474f23 call 0x4e9490 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (rsp + 8, *((r12 + 8))); 0x00474f28 jmp 0x474f39 | | } else { 0x00474f2a lea rdi, [rsp + 8] | 0x00474f2f mov esi, 3 | 0x00474f34 call 0x4e9490 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (rsp + 8, 3); | } 0x00474f39 lea rbx, [rsp + 0x20] | rbx = rsp + 0x20; 0x00474f3e lea rcx, [rsp + 8] | 0x00474f43 mov rdi, rbx | 0x00474f46 mov esi, 0x27 | 0x00474f4b mov rdx, r14 | 0x00474f4e call 0x4e75b0 | BloombergLP::bdlt::Iso8601Util::generate(char*,int,BloombergLP::bdlt::DatetimeTzconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (rbx, 0x27, r14, rsp + 8); 0x00474f53 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x00474f58 mov rdi, rbx | 0x00474f5b call 0x4055c0 | rax = strlen (rbx); 0x00474f60 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x00474f65 lea rsi, [rsp + 0x10] | 0x00474f6a mov rdi, r15 | 0x00474f6d call 0x48c7d0 | BloombergLP::baljsn::PrintUtil::printString(std::_1::basic_ostream>&,std::_1::basic_string_view>const&) (r15, rsp + 0x10); 0x00474f72 add rsp, 0x48 | 0x00474f76 pop rbx | 0x00474f77 pop r12 | 0x00474f79 pop r14 | 0x00474f7b pop r15 | 0x00474f7d ret | return rax; | }