; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x454e50 */ | #include | ; (fcn) method.BloombergLP::balber::BerUtil_Iso8601ImpUtil.putDatetimeTzValue_std::__1::basic_streambuf_char__std::__1::char_traits_char_____BloombergLP::bdlt::DatetimeTz_const__BloombergLP::balber::BerEncoderOptions_const_ () | uint64_t method_BloombergLP::balber::BerUtil_Iso8601ImpUtil_putDatetimeTzValue_std::_1::basic_streambuf_char_std::_1::char_traits_char_BloombergLP::bdlt::DatetimeTz_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::putDatetimeTzValue(std::__1::basic_streambuf >*, BloombergLP::bdlt::DatetimeTz const&, BloombergLP::balber::BerEncoderOptions const*) */ 0x00454e50 push r15 | 0x00454e52 push r14 | 0x00454e54 push rbx | 0x00454e55 sub rsp, 0x40 | 0x00454e59 mov r15, rsi | r15 = rsi; 0x00454e5c mov r14, rdi | r14 = rdi; 0x00454e5f mov dword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x00454e67 test rdx, rdx | | if (rdx != 0) { 0x00454e6a je 0x454e70 | 0x00454e6c mov esi, dword [rdx] | esi = *(rdx); 0x00454e6e jmp 0x454e75 | | } else { 0x00454e70 mov esi, 6 | | } 0x00454e75 lea rbx, [rsp + 8] | rbx = rsp + 8; 0x00454e7a mov rdi, rbx | 0x00454e7d call 0x469bc0 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (rbx, 6); 0x00454e82 lea rdi, [rsp + 0x10] | 0x00454e87 mov esi, 0x26 | 0x00454e8c mov rdx, r15 | 0x00454e8f mov rcx, rbx | 0x00454e92 call 0x467be0 | eax = BloombergLP::bdlt::Iso8601Util::generate(char*,int,BloombergLP::bdlt::DatetimeTzconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (rsp + 0x10, 0x26, r15, rbx); 0x00454e97 mov ebx, eax | ebx = eax; 0x00454e99 mov rdi, r14 | 0x00454e9c mov esi, eax | 0x00454e9e call 0x453da0 | eax = BloombergLP::balber::BerUtil_LengthImpUtil::putLength(std::_1::basic_streambuf>*,int) (r14, eax); 0x00454ea3 mov ecx, eax | ecx = eax; 0x00454ea5 mov eax, 0xffffffff | eax = 0xffffffff; 0x00454eaa test ecx, ecx | | if (ecx == 0) { 0x00454eac jne 0x454ecf | 0x00454eae movsxd rbx, ebx | rbx = (int64_t) ebx; 0x00454eb1 mov rax, qword [r14] | rax = *(r14); 0x00454eb4 lea rsi, [rsp + 0x10] | rsi = rsp + 0x10; 0x00454eb9 mov rdi, r14 | rdi = r14; 0x00454ebc mov rdx, rbx | rdx = rbx; 0x00454ebf call qword [rax + 0x60] | rax = uint64_t (*rax + 0x60)() (); 0x00454ec2 mov rcx, rax | rcx = rax; 0x00454ec5 xor eax, eax | eax = 0; 0x00454ec7 cmp rcx, rbx | 0x00454eca setne al | al = (rcx != rbx) ? 1 : 0; 0x00454ecd neg eax | eax = -eax; | } 0x00454ecf add rsp, 0x40 | 0x00454ed3 pop rbx | 0x00454ed4 pop r14 | 0x00454ed6 pop r15 | 0x00454ed8 ret | return rax; | }