; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x467fe0 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generate_std::__1::basic_string_char__std::__1::char_traits_char___std::__1::allocator_char_____BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::Iso8601Util_generate_std::_1::basic_string_char_std::_1::char_traits_char_std::_1::allocator_char_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generate(std::__1::basic_string, std::__1::allocator >*, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x00467fe0 push r15 | 0x00467fe2 push r14 | 0x00467fe4 push r12 | 0x00467fe6 push rbx | 0x00467fe7 push rax | 0x00467fe8 mov r15, rsi | r15 = rsi; 0x00467feb mov r14, rdi | r14 = rdi; 0x00467fee mov esi, 0xa | esi = 0xa; 0x00467ff3 xor edx, edx | edx = 0; 0x00467ff5 call 0x404970 | std::_1::basic_string,std::_1::allocator>::resize(unsigned long,char) (); 0x00467ffa test byte [r14], 1 | | if ((*(r14) & 1) == 0) { 0x00467ffe jne 0x468006 | 0x00468000 lea rbx, [r14 + 1] | rbx = r14 + 1; 0x00468004 jmp 0x46800a | | } else { 0x00468006 mov rbx, qword [r14 + 0x10] | rbx = *((r14 + 0x10)); | } 0x0046800a mov edi, dword [r15] | 0x0046800d call 0x46a320 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(r15), rsi); 0x00468012 mov ecx, eax | ecx = eax; 0x00468014 mov r12d, 0xcccccccd | r12d = 0xcccccccd; 0x0046801a imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x00468021 imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x00468028 imul rcx, r12 | rcx *= r12; 0x0046802c shr rcx, 0x23 | rcx >>= 0x23; 0x00468030 lea edi, [rcx + rcx] | edi = rcx + rcx; 0x00468033 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x00468036 sub eax, edi | eax -= edi; 0x00468038 or al, 0x30 | al |= 0x30; 0x0046803a mov byte [rbx + 3], al | *((rbx + 3)) = al; 0x0046803d mov rax, rcx | rax = rcx; 0x00468040 imul rax, r12 | rax *= r12; 0x00468044 shr rax, 0x23 | rax >>= 0x23; 0x00468048 add eax, eax | eax += eax; 0x0046804a lea eax, [rax + rax*4] | eax = rax * 5; 0x0046804d sub ecx, eax | ecx -= eax; 0x0046804f or cl, 0x30 | cl |= 0x30; 0x00468052 mov byte [rbx + 2], cl | *((rbx + 2)) = cl; 0x00468055 shr rdx, 0x25 | rdx >>= 0x25; 0x00468059 mov rax, rdx | rax = rdx; 0x0046805c imul rax, r12 | rax *= r12; 0x00468060 shr rax, 0x23 | rax >>= 0x23; 0x00468064 add eax, eax | eax += eax; 0x00468066 lea eax, [rax + rax*4] | eax = rax * 5; 0x00468069 sub edx, eax | edx -= eax; 0x0046806b or dl, 0x30 | dl |= 0x30; 0x0046806e mov byte [rbx + 1], dl | *((rbx + 1)) = dl; 0x00468071 shr rsi, 0x26 | rsi >>= 0x26; 0x00468075 mov rax, rsi | rax = rsi; 0x00468078 imul rax, r12 | rax *= r12; 0x0046807c shr rax, 0x23 | rax >>= 0x23; 0x00468080 add eax, eax | eax += eax; 0x00468082 lea eax, [rax + rax*4] | eax = rax * 5; 0x00468085 sub esi, eax | esi -= eax; 0x00468087 or sil, 0x30 | sil |= 0x30; 0x0046808b mov byte [rbx], sil | *(rbx) = sil; 0x0046808e mov byte [rbx + 4], 0x2d | *((rbx + 4)) = 0x2d; 0x00468092 mov edi, dword [r15] | 0x00468095 call 0x46a2e0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r15), rsi); 0x0046809a mov ecx, eax | ecx = eax; 0x0046809c imul rcx, r12 | rcx *= r12; 0x004680a0 shr rcx, 0x23 | rcx >>= 0x23; 0x004680a4 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004680a7 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004680aa sub eax, edx | eax -= edx; 0x004680ac or al, 0x30 | al |= 0x30; 0x004680ae mov byte [rbx + 6], al | *((rbx + 6)) = al; 0x004680b1 mov rax, rcx | rax = rcx; 0x004680b4 imul rax, r12 | rax *= r12; 0x004680b8 shr rax, 0x23 | rax >>= 0x23; 0x004680bc add eax, eax | eax += eax; 0x004680be lea eax, [rax + rax*4] | eax = rax * 5; 0x004680c1 sub ecx, eax | ecx -= eax; 0x004680c3 or cl, 0x30 | cl |= 0x30; 0x004680c6 mov byte [rbx + 5], cl | *((rbx + 5)) = cl; 0x004680c9 mov byte [rbx + 7], 0x2d | *((rbx + 7)) = 0x2d; 0x004680cd mov edi, dword [r15] | 0x004680d0 call 0x46a2a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r15), rsi); 0x004680d5 mov ecx, eax | ecx = eax; 0x004680d7 imul rcx, r12 | rcx *= r12; 0x004680db shr rcx, 0x23 | rcx >>= 0x23; 0x004680df lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004680e2 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004680e5 sub eax, edx | eax -= edx; 0x004680e7 or al, 0x30 | al |= 0x30; 0x004680e9 mov byte [rbx + 9], al | *((rbx + 9)) = al; 0x004680ec mov rax, rcx | rax = rcx; 0x004680ef imul rax, r12 | rax *= r12; 0x004680f3 shr rax, 0x23 | rax >>= 0x23; 0x004680f7 add eax, eax | eax += eax; 0x004680f9 lea eax, [rax + rax*4] | eax = rax * 5; 0x004680fc sub ecx, eax | ecx -= eax; 0x004680fe or cl, 0x30 | cl |= 0x30; 0x00468101 mov byte [rbx + 8], cl | *((rbx + 8)) = cl; 0x00468104 mov esi, 0xa | esi = 0xa; 0x00468109 mov rdi, r14 | rdi = r14; 0x0046810c xor edx, edx | edx = 0; 0x0046810e call 0x404970 | std::_1::basic_string,std::_1::allocator>::resize(unsigned long,char) (); 0x00468113 mov eax, 0xa | eax = 0xa; 0x00468118 add rsp, 8 | 0x0046811c pop rbx | 0x0046811d pop r12 | 0x0046811f pop r14 | 0x00468121 pop r15 | 0x00468123 ret | return rax; | }