; assembly | /* r2dec pseudo code output */ | /* balxml_formatter.t/assume @ 0x424370 */ | #include | ; (fcn) method.std::__1::basic_ostream_char__std::__1::char_traits_char____BloombergLP::balxml::TypesPrintUtil::print_BloombergLP::bdlt.Date__std::__1::basic_ostream_char__std::__1::char_traits_char_____BloombergLP::bdlt::Date_const__int__BloombergLP::balxml: () | int64_t method_std::_1::basic_ostream_char_std::_1::char_traits_char_BloombergLP::balxml::TypesPrintUtil::print_BloombergLP::bdlt_Date_std::_1::basic_ostream_char_std::_1::char_traits_char_BloombergLP::bdlt::Date_const_int_BloombergLP::balxml_ (int64_t arg4, uint32_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_5h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* std::__1::basic_ostream >& BloombergLP::balxml::TypesPrintUtil::print(std::__1::basic_ostream >&, BloombergLP::bdlt::Date const&, int, BloombergLP::balxml::EncoderOptions const*) */ 0x00424370 push r15 | 0x00424372 push r14 | 0x00424374 push rbx | 0x00424375 sub rsp, 0x10 | 0x00424379 mov rbx, rdi | rbx = rdi; 0x0042437c test edx, 0x100000 | | if ((edx & 0x100000) == 0) { 0x00424382 jne 0x424393 | 0x00424384 and edx, 7 | edx &= 7; 0x00424387 cmp edx, 4 | | if (edx > 4) { 0x0042438a ja 0x424393 | goto label_0; | } | /* switch table (5 cases) at 0x493868 */ 0x0042438c jmp qword [rdx*8 + 0x493868] | | } | label_0: 0x00424393 mov rax, qword [rbx] | rax = *(rbx); 0x00424396 mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x0042439a lea rdi, [rbx + rax] | rdi = rbx + rax; 0x0042439e mov esi, dword [rbx + rax + 0x20] | esi = *((rbx + rax + 0x20)); 0x004243a2 or esi, 4 | esi |= 4; 0x004243a5 call 0x403c40 | std::_1::ios_base::clear(unsignedint) (); | do { 0x004243aa mov rax, rbx | rax = rbx; 0x004243ad add rsp, 0x10 | 0x004243b1 pop rbx | 0x004243b2 pop r14 | 0x004243b4 pop r15 | 0x004243b6 ret | return rax; 0x004243b7 mov r15, rcx | r15 = rcx; 0x004243ba mov r14, rsi | r14 = rsi; 0x004243bd mov dword [rsp], 3 | *(rsp) = 3; 0x004243c4 test rcx, rcx | | if (rcx != 0) { 0x004243c7 je 0x4243ea | 0x004243c9 mov esi, dword [r15 + 0xa0] | 0x004243d0 mov rdi, rsp | 0x004243d3 call 0x432a20 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (rsp, *((r15 + 0xa0))); 0x004243d8 movzx esi, byte [r15 + 0xc3] | esi = *((r15 + 0xc3)); 0x004243e0 mov rdi, rsp | 0x004243e3 call 0x432a40 | BloombergLP::bdlt::Iso8601UtilConfiguration::setUseZAbbreviationForUtc(bool) (rsp, rsi); 0x004243e8 jmp 0x424401 | | } else { 0x004243ea mov rdi, rsp | 0x004243ed mov esi, 6 | 0x004243f2 call 0x432a20 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (rsp, 6); 0x004243f7 mov rdi, rsp | 0x004243fa xor esi, esi | 0x004243fc call 0x432a40 | BloombergLP::bdlt::Iso8601UtilConfiguration::setUseZAbbreviationForUtc(bool) (rsp, 0); | } 0x00424401 lea rdi, [rsp + 5] | 0x00424406 mov rcx, rsp | rcx = rsp; 0x00424409 mov esi, 0xa | 0x0042440e mov rdx, r14 | 0x00424411 call 0x42f530 | eax = BloombergLP::bdlt::Iso8601Util::generate(char*,int,BloombergLP::bdlt::Dateconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (rsp + 5, 0xa, r14); 0x00424416 movsxd rdx, eax | rdx = (int64_t) eax; 0x00424419 lea rsi, [rsp + 5] | rsi = rsp + 5; 0x0042441e mov rdi, rbx | rdi = rbx; 0x00424421 call 0x403cb0 | rax = std::_1::basic_ostream>::write(char const*,long) (); 0x00424426 mov rbx, rax | rbx = rax; 0x00424429 jmp 0x4243aa | | } while (1); | }