; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x454d70 */ | #include | ; (fcn) method.BloombergLP::balber::BerUtil_Iso8601ImpUtil.putDateTzValue_std::__1::basic_streambuf_char__std::__1::char_traits_char_____BloombergLP::bdlt::DateTz_const__BloombergLP::balber::BerEncoderOptions_const_ () | uint64_t method_BloombergLP::balber::BerUtil_Iso8601ImpUtil_putDateTzValue_std::_1::basic_streambuf_char_std::_1::char_traits_char_BloombergLP::bdlt::DateTz_const_BloombergLP::balber::BerEncoderOptions_const_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balber::BerUtil_Iso8601ImpUtil::putDateTzValue(std::__1::basic_streambuf >*, BloombergLP::bdlt::DateTz const&, BloombergLP::balber::BerEncoderOptions const*) */ 0x00454d70 push r14 | 0x00454d72 push rbx | 0x00454d73 sub rsp, 0x38 | 0x00454d77 mov rbx, rsi | rbx = rsi; 0x00454d7a mov r14, rdi | r14 = rdi; 0x00454d7d mov dword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x00454d85 test rdx, rdx | | if (rdx != 0) { 0x00454d88 je 0x454d8e | 0x00454d8a mov esi, dword [rdx] | esi = *(rdx); 0x00454d8c jmp 0x454d93 | | } else { 0x00454d8e mov esi, 6 | | } 0x00454d93 lea rdi, [rsp + 8] | 0x00454d98 call 0x469860 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (rsp + 8, 6); 0x00454d9d lea rdi, [rsp + 0x10] | 0x00454da2 lea rcx, [rsp + 8] | 0x00454da7 mov esi, 0x26 | 0x00454dac mov rdx, rbx | 0x00454daf call 0x467530 | eax = BloombergLP::bdlt::Iso8601Util::generate(char*,int,BloombergLP::bdlt::DateTzconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (rsp + 0x10, 0x26, rbx, rsp + 8); 0x00454db4 mov ebx, eax | ebx = eax; 0x00454db6 mov rdi, r14 | 0x00454db9 mov esi, eax | 0x00454dbb call 0x453df0 | eax = BloombergLP::balber::BerUtil_LengthImpUtil::putLength(std::_1::basic_streambuf>*,int) (r14, eax); 0x00454dc0 mov ecx, 0xffffffff | ecx = 0xffffffff; 0x00454dc5 test eax, eax | | if (eax == 0) { 0x00454dc7 jne 0x454de7 | 0x00454dc9 movsxd rbx, ebx | rbx = (int64_t) ebx; 0x00454dcc mov rax, qword [r14] | rax = *(r14); 0x00454dcf lea rsi, [rsp + 0x10] | rsi = rsp + 0x10; 0x00454dd4 mov rdi, r14 | rdi = r14; 0x00454dd7 mov rdx, rbx | rdx = rbx; 0x00454dda call qword [rax + 0x60] | rax = uint64_t (*rax + 0x60)() (); 0x00454ddd xor ecx, ecx | ecx = 0; 0x00454ddf cmp rax, rbx | 0x00454de2 setne cl | cl = (rax != rbx) ? 1 : 0; 0x00454de5 neg ecx | ecx = -ecx; | } 0x00454de7 mov eax, ecx | eax = ecx; 0x00454de9 add rsp, 0x38 | 0x00454ded pop rbx | 0x00454dee pop r14 | 0x00454df0 ret | return rax; | }