; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x455a60 */ | #include | ; (fcn) method.BloombergLP::balber::BerUtil_DateImpUtil.putDateTzValue_std::__1::basic_streambuf_char__std::__1::char_traits_char_____BloombergLP::bdlt::DateTz_const__BloombergLP::balber::BerEncoderOptions_const_ () | int64_t method_BloombergLP::balber::BerUtil_DateImpUtil_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_DateImpUtil::putDateTzValue(std::__1::basic_streambuf >*, BloombergLP::bdlt::DateTz const&, BloombergLP::balber::BerEncoderOptions const*) */ 0x00455a60 push r15 | 0x00455a62 push r14 | 0x00455a64 push rbx | 0x00455a65 sub rsp, 0x40 | 0x00455a69 mov r15, rdx | r15 = rdx; 0x00455a6c mov rbx, rsi | rbx = rsi; 0x00455a6f mov r14, rdi | r14 = rdi; 0x00455a72 mov eax, dword [rsi] | eax = *(rsi); 0x00455a74 mov dword [rsp + 0x10], eax | *((rsp + 0x10)) = eax; 0x00455a78 lea rdi, [rsp + 0x10] | 0x00455a7d xor esi, esi | 0x00455a7f call 0x463c40 | eax = BloombergLP::bdlt::Date::addDaysIfValid(int) (rsp + 0x10, 0); 0x00455a84 test eax, eax | | if (eax != 0) { 0x00455a86 je 0x455a92 | 0x00455a88 mov eax, 0xffffffff | eax = 0xffffffff; 0x00455a8d jmp 0x455b56 | | } else { 0x00455a92 mov ecx, dword [rbx + 4] | ecx = *((rbx + 4)); 0x00455a95 lea edx, [rcx + 0x59f] | edx = rcx + 0x59f; 0x00455a9b mov eax, 0xffffffff | eax = 0xffffffff; 0x00455aa0 cmp edx, 0xb3e | | if (edx > 0xb3e) { 0x00455aa6 ja 0x455b56 | goto label_0; | } 0x00455aac test r15, r15 | | if (r15 != 0) { 0x00455aaf je 0x455ad0 | 0x00455ab1 cmp byte [r15 + 0xd], 0 | | if (*((r15 + 0xd)) != 0) { 0x00455ab6 je 0x455ad0 | 0x00455ab8 test ecx, ecx | | if (ecx == 0) { 0x00455aba je 0x455b43 | goto label_1; | } 0x00455ac0 mov rdi, r14 | 0x00455ac3 mov rsi, rbx | 0x00455ac6 call 0x455520 | BloombergLP::balber::BerUtil_DateImpUtil::putCompactBinaryDateTzValue(std::_1::basic_streambuf>*,BloombergLP::bdlt::DateTzconst&,BloombergLP::balber::BerEncoderOptionsconst*) (r14, rbx); 0x00455acb jmp 0x455b56 | | } | } else { 0x00455ad0 mov dword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x00455ad8 test r15, r15 | | if (r15 != 0) { 0x00455adb je 0x455ae2 | 0x00455add mov esi, dword [r15] | esi = *(r15); 0x00455ae0 jmp 0x455ae7 | | } else { 0x00455ae2 mov esi, 6 | | } 0x00455ae7 lea r15, [rsp + 8] | r15 = rsp + 8; 0x00455aec mov rdi, r15 | 0x00455aef call 0x469bc0 | BloombergLP::bdlt::Iso8601UtilConfiguration::setFractionalSecondPrecision(int) (r15, 6); 0x00455af4 lea rdi, [rsp + 0x10] | 0x00455af9 mov esi, 0x26 | 0x00455afe mov rdx, rbx | 0x00455b01 mov rcx, r15 | 0x00455b04 call 0x467720 | eax = BloombergLP::bdlt::Iso8601Util::generate(char*,int,BloombergLP::bdlt::DateTzconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (rsp + 0x10, 0x26, rbx, r15); 0x00455b09 mov ebx, eax | ebx = eax; 0x00455b0b mov rdi, r14 | 0x00455b0e mov esi, eax | 0x00455b10 call 0x453da0 | eax = BloombergLP::balber::BerUtil_LengthImpUtil::putLength(std::_1::basic_streambuf>*,int) (r14, eax); 0x00455b15 mov ecx, eax | ecx = eax; 0x00455b17 mov eax, 0xffffffff | eax = 0xffffffff; 0x00455b1c test ecx, ecx | | if (ecx != 0) { 0x00455b1e jne 0x455b56 | goto label_0; | } 0x00455b20 movsxd rbx, ebx | rbx = (int64_t) ebx; 0x00455b23 mov rax, qword [r14] | rax = *(r14); 0x00455b26 lea rsi, [rsp + 0x10] | rsi = rsp + 0x10; 0x00455b2b mov rdi, r14 | rdi = r14; 0x00455b2e mov rdx, rbx | rdx = rbx; 0x00455b31 call qword [rax + 0x60] | rax = uint64_t (*rax + 0x60)() (); 0x00455b34 mov rcx, rax | rcx = rax; 0x00455b37 xor eax, eax | eax = 0; 0x00455b39 cmp rcx, rbx | 0x00455b3c setne al | al = (rcx != rbx) ? 1 : 0; 0x00455b3f neg eax | eax = -eax; 0x00455b41 jmp 0x455b56 | goto label_0; | label_1: 0x00455b43 mov eax, dword [rbx] | eax = *(rbx); 0x00455b45 mov dword [rsp + 0x10], eax | *((rsp + 0x10)) = eax; 0x00455b49 lea rsi, [rsp + 0x10] | 0x00455b4e mov rdi, r14 | 0x00455b51 call 0x455200 | BloombergLP::balber::BerUtil_DateImpUtil::putCompactBinaryDateValue(std::_1::basic_streambuf>*,BloombergLP::bdlt::Dateconst&,BloombergLP::balber::BerEncoderOptionsconst*) (r14, rsp + 0x10); | } | } | label_0: 0x00455b56 add rsp, 0x40 | 0x00455b5a pop rbx | 0x00455b5b pop r14 | 0x00455b5d pop r15 | 0x00455b5f ret | return rax; | }