; assembly | /* r2dec pseudo code output */ | /* bdlt_fixutil.t/assume @ 0x43aae0 */ | #include | ; (fcn) method.BloombergLP::bdlt::FixUtil.generateRaw_char__BloombergLP::bdlt::DateTz_const__BloombergLP::bdlt::FixUtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::FixUtil_generateRaw_char_BloombergLP::bdlt::DateTz_const_BloombergLP::bdlt::FixUtilConfiguration_const_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::FixUtil::generateRaw(char*, BloombergLP::bdlt::DateTz const&, BloombergLP::bdlt::FixUtilConfiguration const&) */ 0x0043aae0 push rbp | 0x0043aae1 push r15 | 0x0043aae3 push r14 | 0x0043aae5 push r12 | 0x0043aae7 push rbx | 0x0043aae8 mov r14, rdx | r14 = rdx; 0x0043aaeb mov r15, rsi | r15 = rsi; 0x0043aaee mov rbx, rdi | rbx = rdi; 0x0043aaf1 mov r12d, dword [rsi] | r12d = *(rsi); 0x0043aaf4 mov edi, r12d | 0x0043aaf7 call 0x43d0a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(rsi), rsi); 0x0043aafc mov ecx, eax | ecx = eax; 0x0043aafe mov ebp, 0xcccccccd | 0x0043ab03 imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x0043ab0a imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x0043ab11 imul rcx, rbp | rcx *= rbp; 0x0043ab15 shr rcx, 0x23 | rcx >>= 0x23; 0x0043ab19 lea edi, [rcx + rcx] | edi = rcx + rcx; 0x0043ab1c lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x0043ab1f sub eax, edi | eax -= edi; 0x0043ab21 or al, 0x30 | al |= 0x30; 0x0043ab23 mov byte [rbx + 3], al | *((rbx + 3)) = al; 0x0043ab26 mov rax, rcx | rax = rcx; 0x0043ab29 imul rax, rbp | rax *= rbp; 0x0043ab2d shr rax, 0x23 | rax >>= 0x23; 0x0043ab31 add eax, eax | eax += eax; 0x0043ab33 lea eax, [rax + rax*4] | eax = rax * 5; 0x0043ab36 sub ecx, eax | ecx -= eax; 0x0043ab38 or cl, 0x30 | cl |= 0x30; 0x0043ab3b mov byte [rbx + 2], cl | *((rbx + 2)) = cl; 0x0043ab3e shr rdx, 0x25 | rdx >>= 0x25; 0x0043ab42 mov rax, rdx | rax = rdx; 0x0043ab45 imul rax, rbp | rax *= rbp; 0x0043ab49 shr rax, 0x23 | rax >>= 0x23; 0x0043ab4d add eax, eax | eax += eax; 0x0043ab4f lea eax, [rax + rax*4] | eax = rax * 5; 0x0043ab52 sub edx, eax | edx -= eax; 0x0043ab54 or dl, 0x30 | dl |= 0x30; 0x0043ab57 mov byte [rbx + 1], dl | *((rbx + 1)) = dl; 0x0043ab5a shr rsi, 0x26 | rsi >>= 0x26; 0x0043ab5e mov rax, rsi | rax = rsi; 0x0043ab61 imul rax, rbp | rax *= rbp; 0x0043ab65 shr rax, 0x23 | rax >>= 0x23; 0x0043ab69 add eax, eax | eax += eax; 0x0043ab6b lea eax, [rax + rax*4] | eax = rax * 5; 0x0043ab6e sub esi, eax | esi -= eax; 0x0043ab70 or sil, 0x30 | sil |= 0x30; 0x0043ab74 mov byte [rbx], sil | *(rbx) = sil; 0x0043ab77 mov edi, r12d | 0x0043ab7a call 0x43d060 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (r12d, rsi); 0x0043ab7f mov ecx, eax | ecx = eax; 0x0043ab81 imul rcx, rbp | rcx *= rbp; 0x0043ab85 shr rcx, 0x23 | rcx >>= 0x23; 0x0043ab89 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x0043ab8c lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x0043ab8f sub eax, edx | eax -= edx; 0x0043ab91 or al, 0x30 | al |= 0x30; 0x0043ab93 mov byte [rbx + 5], al | *((rbx + 5)) = al; 0x0043ab96 mov rax, rcx | rax = rcx; 0x0043ab99 imul rax, rbp | rax *= rbp; 0x0043ab9d shr rax, 0x23 | rax >>= 0x23; 0x0043aba1 add eax, eax | eax += eax; 0x0043aba3 lea eax, [rax + rax*4] | eax = rax * 5; 0x0043aba6 sub ecx, eax | ecx -= eax; 0x0043aba8 or cl, 0x30 | cl |= 0x30; 0x0043abab mov byte [rbx + 4], cl | *((rbx + 4)) = cl; 0x0043abae mov edi, r12d | 0x0043abb1 call 0x43d020 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (r12d, rsi); 0x0043abb6 mov ecx, eax | ecx = eax; 0x0043abb8 imul rcx, rbp | rcx *= rbp; 0x0043abbc shr rcx, 0x23 | rcx >>= 0x23; 0x0043abc0 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x0043abc3 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x0043abc6 sub eax, edx | eax -= edx; 0x0043abc8 or al, 0x30 | al |= 0x30; 0x0043abca mov byte [rbx + 7], al | *((rbx + 7)) = al; 0x0043abcd mov rax, rcx | rax = rcx; 0x0043abd0 imul rax, rbp | rax *= rbp; 0x0043abd4 shr rax, 0x23 | rax >>= 0x23; 0x0043abd8 add eax, eax | eax += eax; 0x0043abda lea eax, [rax + rax*4] | eax = rax * 5; 0x0043abdd sub ecx, eax | ecx -= eax; 0x0043abdf or cl, 0x30 | cl |= 0x30; 0x0043abe2 mov byte [rbx + 6], cl | *((rbx + 6)) = cl; 0x0043abe5 lea rax, [rbx + 8] | rax = rbx + 8; 0x0043abe9 mov edx, dword [r15 + 4] | edx = *((r15 + 4)); 0x0043abed test edx, edx | | if (edx == 0) { 0x0043abef jne 0x43abfb | 0x0043abf1 test byte [r14], 8 | | if ((*(r14) & 8) != 0) { 0x0043abf5 jne 0x43acc0 | goto label_0; | } | } 0x0043abfb mov ecx, edx | ecx = edx; 0x0043abfd neg ecx | ecx = -ecx; | if ((*(r14) & 8) < 0) { 0x0043abff cmovl ecx, edx | ecx = edx; | } 0x0043ac02 shr edx, 0x1f | edx >>= 0x1f; 0x0043ac05 add dl, dl | dl += dl; 0x0043ac07 add dl, 0x2b | dl += 0x2b; 0x0043ac0a mov byte [rbx + 8], dl | *((rbx + 8)) = dl; 0x0043ac0d movsx edx, cx | edx = (int32_t) cx; 0x0043ac10 imul edx, edx, 0xffff8889 | edx *= 0xffff8889; 0x0043ac16 shr edx, 0x10 | edx >>= 0x10; 0x0043ac19 add edx, ecx | edx += ecx; 0x0043ac1b movzx esi, dx | esi = (int32_t) dx; 0x0043ac1e movsx edx, si | edx = (int32_t) si; 0x0043ac21 shr esi, 0xf | esi >>= 0xf; 0x0043ac24 sar edx, 5 | edx >>= 5; 0x0043ac27 add edx, esi | edx += esi; 0x0043ac29 movzx esi, dl | esi = (int32_t) dl; 0x0043ac2c imul edi, esi, 0xcd | edi = esi * 0xcd; 0x0043ac32 shr edi, 0xb | edi >>= 0xb; 0x0043ac35 lea ebp, [rdi + rdi] | ebp = rdi + rdi; 0x0043ac38 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x0043ac3c sub sil, bpl | sil -= bpl; 0x0043ac3f or sil, 0x30 | sil |= 0x30; 0x0043ac43 mov byte [rbx + 0xa], sil | *((rbx + 0xa)) = sil; 0x0043ac47 imul esi, edi, 0xcd | esi = edi * 0xcd; 0x0043ac4d shr esi, 0xa | esi >>= 0xa; 0x0043ac50 and esi, 0xfffffffe | esi &= 0xfffffffe; 0x0043ac53 lea esi, [rsi + rsi*4] | esi = rsi * 5; 0x0043ac56 sub dil, sil | dil -= sil; 0x0043ac59 or dil, 0x30 | dil |= 0x30; 0x0043ac5d mov byte [rbx + 9], dil | *((rbx + 9)) = dil; 0x0043ac61 mov byte [rbx + 0xb], 0x3a | *((rbx + 0xb)) = 0x3a; 0x0043ac65 imul edx, edx, 0x3c | edx *= 0x3c; 0x0043ac68 sub ecx, edx | ecx -= edx; 0x0043ac6a movsx edx, cl | edx = (int32_t) cl; 0x0043ac6d imul edx, edx, 0x67 | edx *= 0x67; 0x0043ac70 movzx edx, dx | edx = (int32_t) dx; 0x0043ac73 mov esi, edx | esi = edx; 0x0043ac75 shr esi, 0xf | esi >>= 0xf; 0x0043ac78 shr edx, 8 | edx >>= 8; 0x0043ac7b sar dl, 2 | dl >>= 2; 0x0043ac7e add dl, sil | dl += sil; 0x0043ac81 movzx edx, dl | edx = (int32_t) dl; 0x0043ac84 lea esi, [rdx + rdx] | esi = rdx + rdx; 0x0043ac87 lea esi, [rsi + rsi*4] | esi = rsi * 5; 0x0043ac8a sub cl, sil | cl -= sil; 0x0043ac8d add cl, 0x30 | cl += 0x30; 0x0043ac90 mov byte [rbx + 0xd], cl | *((rbx + 0xd)) = cl; 0x0043ac93 movsx ecx, dl | ecx = (int32_t) dl; 0x0043ac96 imul ecx, ecx, 0x67 | ecx *= 0x67; 0x0043ac99 movzx ecx, cx | ecx = (int32_t) cx; 0x0043ac9c mov esi, ecx | esi = ecx; 0x0043ac9e shr esi, 0xf | esi >>= 0xf; 0x0043aca1 shr ecx, 8 | ecx >>= 8; 0x0043aca4 sar cl, 2 | cl >>= 2; 0x0043aca7 add cl, sil | cl += sil; 0x0043acaa movzx ecx, cl | ecx = (int32_t) cl; 0x0043acad add ecx, ecx | ecx += ecx; 0x0043acaf lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0043acb2 sub dl, cl | dl -= cl; 0x0043acb4 add dl, 0x30 | dl += 0x30; 0x0043acb7 mov byte [rbx + 0xc], dl | *((rbx + 0xc)) = dl; 0x0043acba add rbx, 0xe | rbx += 0xe; 0x0043acbe jmp 0x43acc8 | goto label_1; | label_0: 0x0043acc0 mov byte [rbx + 8], 0x5a | *((rbx + 8)) = 0x5a; 0x0043acc4 add rbx, 9 | rbx += 9; | label_1: 0x0043acc8 sub ebx, eax | ebx -= eax; 0x0043acca add ebx, 8 | ebx += 8; 0x0043accd mov eax, ebx | eax = ebx; 0x0043accf pop rbx | 0x0043acd0 pop r12 | 0x0043acd2 pop r14 | 0x0043acd4 pop r15 | 0x0043acd6 pop rbp | 0x0043acd7 ret | return rax; | }