; assembly | /* r2dec pseudo code output */ | /* bdlt_fixutil.t/assume @ 0x439850 */ | #include | ; (fcn) method.BloombergLP::bdlt::FixUtil.generate_char__int__BloombergLP::bdlt::Date_const__BloombergLP::bdlt::FixUtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::FixUtil_generate_char_int_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::FixUtilConfiguration_const_ (int64_t arg3, uint32_t arg2, int64_t arg1) { | int64_t var_1h; | int64_t var_2h; | int64_t var_3h; | int64_t var_4h; | int64_t var_5h; | int64_t var_6h; | int64_t var_7h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::FixUtil::generate(char*, int, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::FixUtilConfiguration const&) */ 0x00439850 push rbp | 0x00439851 push r15 | 0x00439853 push r14 | 0x00439855 push rbx | 0x00439856 push rax | 0x00439857 mov r14, rdx | r14 = rdx; 0x0043985a mov rbx, rdi | rbx = rdi; 0x0043985d cmp esi, 9 | | if (esi >= 9) { 0x00439860 jb 0x439960 | 0x00439866 mov edi, dword [r14] | 0x00439869 call 0x43d0a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(r14), rsi); 0x0043986e mov ecx, eax | ecx = eax; 0x00439870 mov ebp, 0xcccccccd | 0x00439875 imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x0043987c imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x00439883 imul rcx, rbp | rcx *= rbp; 0x00439887 shr rcx, 0x23 | rcx >>= 0x23; 0x0043988b lea edi, [rcx + rcx] | edi = rcx + rcx; 0x0043988e lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x00439891 sub eax, edi | eax -= edi; 0x00439893 or al, 0x30 | al |= 0x30; 0x00439895 mov byte [rbx + 3], al | *((rbx + 3)) = al; 0x00439898 mov rax, rcx | rax = rcx; 0x0043989b imul rax, rbp | rax *= rbp; 0x0043989f shr rax, 0x23 | rax >>= 0x23; 0x004398a3 add eax, eax | eax += eax; 0x004398a5 lea eax, [rax + rax*4] | eax = rax * 5; 0x004398a8 sub ecx, eax | ecx -= eax; 0x004398aa or cl, 0x30 | cl |= 0x30; 0x004398ad mov byte [rbx + 2], cl | *((rbx + 2)) = cl; 0x004398b0 shr rdx, 0x25 | rdx >>= 0x25; 0x004398b4 mov rax, rdx | rax = rdx; 0x004398b7 imul rax, rbp | rax *= rbp; 0x004398bb shr rax, 0x23 | rax >>= 0x23; 0x004398bf add eax, eax | eax += eax; 0x004398c1 lea eax, [rax + rax*4] | eax = rax * 5; 0x004398c4 sub edx, eax | edx -= eax; 0x004398c6 or dl, 0x30 | dl |= 0x30; 0x004398c9 mov byte [rbx + 1], dl | *((rbx + 1)) = dl; 0x004398cc shr rsi, 0x26 | rsi >>= 0x26; 0x004398d0 mov rax, rsi | rax = rsi; 0x004398d3 imul rax, rbp | rax *= rbp; 0x004398d7 shr rax, 0x23 | rax >>= 0x23; 0x004398db add eax, eax | eax += eax; 0x004398dd lea eax, [rax + rax*4] | eax = rax * 5; 0x004398e0 sub esi, eax | esi -= eax; 0x004398e2 or sil, 0x30 | sil |= 0x30; 0x004398e6 mov byte [rbx], sil | *(rbx) = sil; 0x004398e9 mov edi, dword [r14] | 0x004398ec call 0x43d060 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r14), rsi); 0x004398f1 mov ecx, eax | ecx = eax; 0x004398f3 imul rcx, rbp | rcx *= rbp; 0x004398f7 shr rcx, 0x23 | rcx >>= 0x23; 0x004398fb lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004398fe lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00439901 sub eax, edx | eax -= edx; 0x00439903 or al, 0x30 | al |= 0x30; 0x00439905 mov byte [rbx + 5], al | *((rbx + 5)) = al; 0x00439908 mov rax, rcx | rax = rcx; 0x0043990b imul rax, rbp | rax *= rbp; 0x0043990f shr rax, 0x23 | rax >>= 0x23; 0x00439913 add eax, eax | eax += eax; 0x00439915 lea eax, [rax + rax*4] | eax = rax * 5; 0x00439918 sub ecx, eax | ecx -= eax; 0x0043991a or cl, 0x30 | cl |= 0x30; 0x0043991d mov byte [rbx + 4], cl | *((rbx + 4)) = cl; 0x00439920 mov edi, dword [r14] | 0x00439923 call 0x43d020 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r14), rsi); 0x00439928 mov ecx, eax | ecx = eax; 0x0043992a imul rcx, rbp | rcx *= rbp; 0x0043992e shr rcx, 0x23 | rcx >>= 0x23; 0x00439932 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00439935 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00439938 sub eax, edx | eax -= edx; 0x0043993a or al, 0x30 | al |= 0x30; 0x0043993c mov byte [rbx + 7], al | *((rbx + 7)) = al; 0x0043993f mov rax, rcx | rax = rcx; 0x00439942 imul rax, rbp | rax *= rbp; 0x00439946 shr rax, 0x23 | rax >>= 0x23; 0x0043994a add eax, eax | eax += eax; 0x0043994c lea eax, [rax + rax*4] | eax = rax * 5; 0x0043994f sub ecx, eax | ecx -= eax; 0x00439951 or cl, 0x30 | cl |= 0x30; 0x00439954 mov byte [rbx + 6], cl | *((rbx + 6)) = cl; 0x00439957 mov byte [rbx + 8], 0 | *((rbx + 8)) = 0; 0x0043995b jmp 0x439a6a | | } else { 0x00439960 mov r15d, esi | r15d = esi; 0x00439963 mov edi, dword [r14] | 0x00439966 call 0x43d0a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(r14), rsi); 0x0043996b mov ecx, eax | ecx = eax; 0x0043996d mov ebp, 0xcccccccd | 0x00439972 imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x00439979 imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x00439980 imul rcx, rbp | rcx *= rbp; 0x00439984 shr rcx, 0x23 | rcx >>= 0x23; 0x00439988 lea edi, [rcx + rcx] | edi = rcx + rcx; 0x0043998b lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x0043998e sub eax, edi | eax -= edi; 0x00439990 or al, 0x30 | al |= 0x30; 0x00439992 mov byte [rsp + 3], al | *((rsp + 3)) = al; 0x00439996 mov rax, rcx | rax = rcx; 0x00439999 imul rax, rbp | rax *= rbp; 0x0043999d shr rax, 0x23 | rax >>= 0x23; 0x004399a1 add eax, eax | eax += eax; 0x004399a3 lea eax, [rax + rax*4] | eax = rax * 5; 0x004399a6 sub ecx, eax | ecx -= eax; 0x004399a8 or cl, 0x30 | cl |= 0x30; 0x004399ab mov byte [rsp + 2], cl | *((rsp + 2)) = cl; 0x004399af shr rdx, 0x25 | rdx >>= 0x25; 0x004399b3 mov rax, rdx | rax = rdx; 0x004399b6 imul rax, rbp | rax *= rbp; 0x004399ba shr rax, 0x23 | rax >>= 0x23; 0x004399be add eax, eax | eax += eax; 0x004399c0 lea eax, [rax + rax*4] | eax = rax * 5; 0x004399c3 sub edx, eax | edx -= eax; 0x004399c5 or dl, 0x30 | dl |= 0x30; 0x004399c8 mov byte [rsp + 1], dl | *((rsp + 1)) = dl; 0x004399cc shr rsi, 0x26 | rsi >>= 0x26; 0x004399d0 mov rax, rsi | rax = rsi; 0x004399d3 imul rax, rbp | rax *= rbp; 0x004399d7 shr rax, 0x23 | rax >>= 0x23; 0x004399db add eax, eax | eax += eax; 0x004399dd lea eax, [rax + rax*4] | eax = rax * 5; 0x004399e0 sub esi, eax | esi -= eax; 0x004399e2 or sil, 0x30 | sil |= 0x30; 0x004399e6 mov byte [rsp], sil | *(rsp) = sil; 0x004399ea mov edi, dword [r14] | 0x004399ed call 0x43d060 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r14), rsi); 0x004399f2 mov ecx, eax | ecx = eax; 0x004399f4 imul rcx, rbp | rcx *= rbp; 0x004399f8 shr rcx, 0x23 | rcx >>= 0x23; 0x004399fc lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004399ff lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00439a02 sub eax, edx | eax -= edx; 0x00439a04 or al, 0x30 | al |= 0x30; 0x00439a06 mov byte [rsp + 5], al | *((rsp + 5)) = al; 0x00439a0a mov rax, rcx | rax = rcx; 0x00439a0d imul rax, rbp | rax *= rbp; 0x00439a11 shr rax, 0x23 | rax >>= 0x23; 0x00439a15 add eax, eax | eax += eax; 0x00439a17 lea eax, [rax + rax*4] | eax = rax * 5; 0x00439a1a sub ecx, eax | ecx -= eax; 0x00439a1c or cl, 0x30 | cl |= 0x30; 0x00439a1f mov byte [rsp + 4], cl | *((rsp + 4)) = cl; 0x00439a23 mov edi, dword [r14] | 0x00439a26 call 0x43d020 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r14), rsi); 0x00439a2b mov ecx, eax | ecx = eax; 0x00439a2d imul rcx, rbp | rcx *= rbp; 0x00439a31 shr rcx, 0x23 | rcx >>= 0x23; 0x00439a35 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00439a38 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00439a3b sub eax, edx | eax -= edx; 0x00439a3d or al, 0x30 | al |= 0x30; 0x00439a3f mov byte [rsp + 7], al | *((rsp + 7)) = al; 0x00439a43 mov rax, rcx | rax = rcx; 0x00439a46 imul rax, rbp | rax *= rbp; 0x00439a4a shr rax, 0x23 | rax >>= 0x23; 0x00439a4e add eax, eax | eax += eax; 0x00439a50 lea eax, [rax + rax*4] | eax = rax * 5; 0x00439a53 sub ecx, eax | ecx -= eax; 0x00439a55 or cl, 0x30 | cl |= 0x30; 0x00439a58 mov byte [rsp + 6], cl | *((rsp + 6)) = cl; 0x00439a5c mov edx, r15d | 0x00439a5f mov rsi, rsp | 0x00439a62 mov rdi, rbx | 0x00439a65 call 0x4045b0 | memcpy (rbx, rsp, r15d); | } 0x00439a6a mov eax, 8 | eax = 8; 0x00439a6f add rsp, 8 | 0x00439a73 pop rbx | 0x00439a74 pop r14 | 0x00439a76 pop r15 | 0x00439a78 pop rbp | 0x00439a79 ret | return rax; | }