; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x4665c0 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generateRaw_char__BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::Iso8601Util_generateRaw_char_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generateRaw(char*, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x004665c0 push r15 | 0x004665c2 push r14 | 0x004665c4 push rbx | 0x004665c5 mov r14, rsi | r14 = rsi; 0x004665c8 mov rbx, rdi | rbx = rdi; 0x004665cb mov edi, dword [rsi] | 0x004665cd call 0x46a320 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(rsi), rsi); 0x004665d2 mov ecx, eax | ecx = eax; 0x004665d4 mov r15d, 0xcccccccd | r15d = 0xcccccccd; 0x004665da imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x004665e1 imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x004665e8 imul rcx, r15 | rcx *= r15; 0x004665ec shr rcx, 0x23 | rcx >>= 0x23; 0x004665f0 lea edi, [rcx + rcx] | edi = rcx + rcx; 0x004665f3 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x004665f6 sub eax, edi | eax -= edi; 0x004665f8 or al, 0x30 | al |= 0x30; 0x004665fa mov byte [rbx + 3], al | *((rbx + 3)) = al; 0x004665fd mov rax, rcx | rax = rcx; 0x00466600 imul rax, r15 | rax *= r15; 0x00466604 shr rax, 0x23 | rax >>= 0x23; 0x00466608 add eax, eax | eax += eax; 0x0046660a lea eax, [rax + rax*4] | eax = rax * 5; 0x0046660d sub ecx, eax | ecx -= eax; 0x0046660f or cl, 0x30 | cl |= 0x30; 0x00466612 mov byte [rbx + 2], cl | *((rbx + 2)) = cl; 0x00466615 shr rdx, 0x25 | rdx >>= 0x25; 0x00466619 mov rax, rdx | rax = rdx; 0x0046661c imul rax, r15 | rax *= r15; 0x00466620 shr rax, 0x23 | rax >>= 0x23; 0x00466624 add eax, eax | eax += eax; 0x00466626 lea eax, [rax + rax*4] | eax = rax * 5; 0x00466629 sub edx, eax | edx -= eax; 0x0046662b or dl, 0x30 | dl |= 0x30; 0x0046662e mov byte [rbx + 1], dl | *((rbx + 1)) = dl; 0x00466631 shr rsi, 0x26 | rsi >>= 0x26; 0x00466635 mov rax, rsi | rax = rsi; 0x00466638 imul rax, r15 | rax *= r15; 0x0046663c shr rax, 0x23 | rax >>= 0x23; 0x00466640 add eax, eax | eax += eax; 0x00466642 lea eax, [rax + rax*4] | eax = rax * 5; 0x00466645 sub esi, eax | esi -= eax; 0x00466647 or sil, 0x30 | sil |= 0x30; 0x0046664b mov byte [rbx], sil | *(rbx) = sil; 0x0046664e mov byte [rbx + 4], 0x2d | *((rbx + 4)) = 0x2d; 0x00466652 mov edi, dword [r14] | 0x00466655 call 0x46a2e0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r14), rsi); 0x0046665a mov ecx, eax | ecx = eax; 0x0046665c imul rcx, r15 | rcx *= r15; 0x00466660 shr rcx, 0x23 | rcx >>= 0x23; 0x00466664 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00466667 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x0046666a sub eax, edx | eax -= edx; 0x0046666c or al, 0x30 | al |= 0x30; 0x0046666e mov byte [rbx + 6], al | *((rbx + 6)) = al; 0x00466671 mov rax, rcx | rax = rcx; 0x00466674 imul rax, r15 | rax *= r15; 0x00466678 shr rax, 0x23 | rax >>= 0x23; 0x0046667c add eax, eax | eax += eax; 0x0046667e lea eax, [rax + rax*4] | eax = rax * 5; 0x00466681 sub ecx, eax | ecx -= eax; 0x00466683 or cl, 0x30 | cl |= 0x30; 0x00466686 mov byte [rbx + 5], cl | *((rbx + 5)) = cl; 0x00466689 mov byte [rbx + 7], 0x2d | *((rbx + 7)) = 0x2d; 0x0046668d mov edi, dword [r14] | 0x00466690 call 0x46a2a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r14), rsi); 0x00466695 mov ecx, eax | ecx = eax; 0x00466697 imul rcx, r15 | rcx *= r15; 0x0046669b shr rcx, 0x23 | rcx >>= 0x23; 0x0046669f lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004666a2 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004666a5 sub eax, edx | eax -= edx; 0x004666a7 or al, 0x30 | al |= 0x30; 0x004666a9 mov byte [rbx + 9], al | *((rbx + 9)) = al; 0x004666ac mov rax, rcx | rax = rcx; 0x004666af imul rax, r15 | rax *= r15; 0x004666b3 shr rax, 0x23 | rax >>= 0x23; 0x004666b7 add eax, eax | eax += eax; 0x004666b9 lea eax, [rax + rax*4] | eax = rax * 5; 0x004666bc sub ecx, eax | ecx -= eax; 0x004666be or cl, 0x30 | cl |= 0x30; 0x004666c1 mov byte [rbx + 8], cl | *((rbx + 8)) = cl; 0x004666c4 mov eax, 0xa | eax = 0xa; 0x004666c9 pop rbx | 0x004666ca pop r14 | 0x004666cc pop r15 | 0x004666ce ret | return rax; | }