; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x467c10 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generate_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::Iso8601Util_generate_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generate(bsl::basic_string, bsl::allocator >*, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x00467c10 push r15 | 0x00467c12 push r14 | 0x00467c14 push r12 | 0x00467c16 push rbx | 0x00467c17 push rax | 0x00467c18 mov r15, rsi | r15 = rsi; 0x00467c1b mov r14, rdi | r14 = rdi; 0x00467c1e mov esi, 0xa | 0x00467c23 xor edx, edx | 0x00467c25 call 0x472460 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,char) (rdi, 0xa, 0); 0x00467c2a cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x00467c2f jne 0x467c36 | 0x00467c31 mov rbx, r14 | rbx = r14; 0x00467c34 jmp 0x467c39 | | } else { 0x00467c36 mov rbx, qword [r14] | rbx = *(r14); | } 0x00467c39 mov edi, dword [r15] | 0x00467c3c call 0x46a320 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(r15), rsi); 0x00467c41 mov ecx, eax | ecx = eax; 0x00467c43 mov r12d, 0xcccccccd | r12d = 0xcccccccd; 0x00467c49 imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x00467c50 imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x00467c57 imul rcx, r12 | rcx *= r12; 0x00467c5b shr rcx, 0x23 | rcx >>= 0x23; 0x00467c5f lea edi, [rcx + rcx] | edi = rcx + rcx; 0x00467c62 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x00467c65 sub eax, edi | eax -= edi; 0x00467c67 or al, 0x30 | al |= 0x30; 0x00467c69 mov byte [rbx + 3], al | *((rbx + 3)) = al; 0x00467c6c mov rax, rcx | rax = rcx; 0x00467c6f imul rax, r12 | rax *= r12; 0x00467c73 shr rax, 0x23 | rax >>= 0x23; 0x00467c77 add eax, eax | eax += eax; 0x00467c79 lea eax, [rax + rax*4] | eax = rax * 5; 0x00467c7c sub ecx, eax | ecx -= eax; 0x00467c7e or cl, 0x30 | cl |= 0x30; 0x00467c81 mov byte [rbx + 2], cl | *((rbx + 2)) = cl; 0x00467c84 shr rdx, 0x25 | rdx >>= 0x25; 0x00467c88 mov rax, rdx | rax = rdx; 0x00467c8b imul rax, r12 | rax *= r12; 0x00467c8f shr rax, 0x23 | rax >>= 0x23; 0x00467c93 add eax, eax | eax += eax; 0x00467c95 lea eax, [rax + rax*4] | eax = rax * 5; 0x00467c98 sub edx, eax | edx -= eax; 0x00467c9a or dl, 0x30 | dl |= 0x30; 0x00467c9d mov byte [rbx + 1], dl | *((rbx + 1)) = dl; 0x00467ca0 shr rsi, 0x26 | rsi >>= 0x26; 0x00467ca4 mov rax, rsi | rax = rsi; 0x00467ca7 imul rax, r12 | rax *= r12; 0x00467cab shr rax, 0x23 | rax >>= 0x23; 0x00467caf add eax, eax | eax += eax; 0x00467cb1 lea eax, [rax + rax*4] | eax = rax * 5; 0x00467cb4 sub esi, eax | esi -= eax; 0x00467cb6 or sil, 0x30 | sil |= 0x30; 0x00467cba mov byte [rbx], sil | *(rbx) = sil; 0x00467cbd mov byte [rbx + 4], 0x2d | *((rbx + 4)) = 0x2d; 0x00467cc1 mov edi, dword [r15] | 0x00467cc4 call 0x46a2e0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r15), rsi); 0x00467cc9 mov ecx, eax | ecx = eax; 0x00467ccb imul rcx, r12 | rcx *= r12; 0x00467ccf shr rcx, 0x23 | rcx >>= 0x23; 0x00467cd3 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00467cd6 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00467cd9 sub eax, edx | eax -= edx; 0x00467cdb or al, 0x30 | al |= 0x30; 0x00467cdd mov byte [rbx + 6], al | *((rbx + 6)) = al; 0x00467ce0 mov rax, rcx | rax = rcx; 0x00467ce3 imul rax, r12 | rax *= r12; 0x00467ce7 shr rax, 0x23 | rax >>= 0x23; 0x00467ceb add eax, eax | eax += eax; 0x00467ced lea eax, [rax + rax*4] | eax = rax * 5; 0x00467cf0 sub ecx, eax | ecx -= eax; 0x00467cf2 or cl, 0x30 | cl |= 0x30; 0x00467cf5 mov byte [rbx + 5], cl | *((rbx + 5)) = cl; 0x00467cf8 mov byte [rbx + 7], 0x2d | *((rbx + 7)) = 0x2d; 0x00467cfc mov edi, dword [r15] | 0x00467cff call 0x46a2a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r15), rsi); 0x00467d04 mov ecx, eax | ecx = eax; 0x00467d06 imul rcx, r12 | rcx *= r12; 0x00467d0a shr rcx, 0x23 | rcx >>= 0x23; 0x00467d0e lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00467d11 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00467d14 sub eax, edx | eax -= edx; 0x00467d16 or al, 0x30 | al |= 0x30; 0x00467d18 mov byte [rbx + 9], al | *((rbx + 9)) = al; 0x00467d1b mov rax, rcx | rax = rcx; 0x00467d1e imul rax, r12 | rax *= r12; 0x00467d22 shr rax, 0x23 | rax >>= 0x23; 0x00467d26 add eax, eax | eax += eax; 0x00467d28 lea eax, [rax + rax*4] | eax = rax * 5; 0x00467d2b sub ecx, eax | ecx -= eax; 0x00467d2d or cl, 0x30 | cl |= 0x30; 0x00467d30 mov byte [rbx + 8], cl | *((rbx + 8)) = cl; 0x00467d33 mov esi, 0xa | 0x00467d38 mov rdi, r14 | 0x00467d3b xor edx, edx | 0x00467d3d call 0x472460 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,char) (r14, 0xa, 0); 0x00467d42 mov eax, 0xa | eax = 0xa; 0x00467d47 add rsp, 8 | 0x00467d4b pop rbx | 0x00467d4c pop r12 | 0x00467d4e pop r14 | 0x00467d50 pop r15 | 0x00467d52 ret | return rax; | }