; assembly | /* r2dec pseudo code output */ | /* bdlt_fixutil.t/none @ 0x43abd0 */ | #include | ; (fcn) method.BloombergLP::bdlt::FixUtil.generateRaw_char__BloombergLP::bdlt::DateTz_const__BloombergLP::bdlt::FixUtilConfiguration_const_ () | int64_t method_BloombergLP::bdlt::FixUtil_generateRaw_char_BloombergLP::bdlt::DateTz_const_BloombergLP::bdlt::FixUtilConfiguration_const_ (char * arg3, char * arg2, char * arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::FixUtil::generateRaw(char*, BloombergLP::bdlt::DateTz const&, BloombergLP::bdlt::FixUtilConfiguration const&) */ 0x0043abd0 push rbp | 0x0043abd1 push r15 | 0x0043abd3 push r14 | 0x0043abd5 push rbx | 0x0043abd6 push rax | 0x0043abd7 mov r14, rdx | r14 = rdx; 0x0043abda mov r15, rsi | r15 = rsi; 0x0043abdd mov rbx, rdi | rbx = rdi; 0x0043abe0 mov ebp, dword [rsi] | ebp = *(rsi); 0x0043abe2 mov edi, ebp | 0x0043abe4 call 0x43d240 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(rsi), rsi); 0x0043abe9 movsxd rcx, eax | rcx = (int64_t) eax; 0x0043abec imul rax, rcx, 0x66666667 | rax = rcx * 0x66666667; 0x0043abf3 mov rdx, rax | rdx = rax; 0x0043abf6 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043abfa sar rax, 0x22 | rax >>= 0x22; 0x0043abfe add eax, edx | eax += edx; 0x0043ac00 lea edx, [rax + rax] | edx = rax + rax; 0x0043ac03 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x0043ac06 imul rsi, rcx, 0x51eb851f | rsi = rcx * 0x51eb851f; 0x0043ac0d imul rdi, rcx, 0x10624dd3 | rdi = rcx * 0x10624dd3; 0x0043ac14 sub ecx, edx | ecx -= edx; 0x0043ac16 add cl, 0x30 | cl += 0x30; 0x0043ac19 mov byte [rbx + 3], cl | *((rbx + 3)) = cl; 0x0043ac1c cdqe | rax = (int64_t) eax; 0x0043ac1e imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043ac25 mov rdx, rcx | rdx = rcx; 0x0043ac28 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043ac2c sar rcx, 0x22 | rcx >>= 0x22; 0x0043ac30 add ecx, edx | ecx += edx; 0x0043ac32 add ecx, ecx | ecx += ecx; 0x0043ac34 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0043ac37 sub eax, ecx | eax -= ecx; 0x0043ac39 add al, 0x30 | al += 0x30; 0x0043ac3b mov byte [rbx + 2], al | *((rbx + 2)) = al; 0x0043ac3e mov rax, rsi | rax = rsi; 0x0043ac41 shr rax, 0x3f | rax >>= 0x3f; 0x0043ac45 sar rsi, 0x25 | rsi >>= 0x25; 0x0043ac49 add esi, eax | esi += eax; 0x0043ac4b movsxd rax, esi | rax = (int64_t) esi; 0x0043ac4e imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043ac55 mov rdx, rcx | rdx = rcx; 0x0043ac58 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043ac5c sar rcx, 0x22 | rcx >>= 0x22; 0x0043ac60 add ecx, edx | ecx += edx; 0x0043ac62 add ecx, ecx | ecx += ecx; 0x0043ac64 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0043ac67 sub eax, ecx | eax -= ecx; 0x0043ac69 add al, 0x30 | al += 0x30; 0x0043ac6b mov byte [rbx + 1], al | *((rbx + 1)) = al; 0x0043ac6e mov rax, rdi | rax = rdi; 0x0043ac71 shr rax, 0x3f | rax >>= 0x3f; 0x0043ac75 sar rdi, 0x26 | rdi >>= 0x26; 0x0043ac79 add edi, eax | edi += eax; 0x0043ac7b movsxd rax, edi | rax = (int64_t) edi; 0x0043ac7e imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043ac85 mov rdx, rcx | rdx = rcx; 0x0043ac88 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043ac8c sar rcx, 0x22 | rcx >>= 0x22; 0x0043ac90 add ecx, edx | ecx += edx; 0x0043ac92 add ecx, ecx | ecx += ecx; 0x0043ac94 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0043ac97 sub eax, ecx | eax -= ecx; 0x0043ac99 add al, 0x30 | al += 0x30; 0x0043ac9b mov byte [rbx], al | *(rbx) = al; 0x0043ac9d mov edi, ebp | 0x0043ac9f call 0x43d200 | rax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (ebp, rsi); 0x0043aca4 cdqe | rax = (int64_t) eax; 0x0043aca6 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043acad mov rdx, rcx | rdx = rcx; 0x0043acb0 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043acb4 sar rcx, 0x22 | rcx >>= 0x22; 0x0043acb8 add ecx, edx | ecx += edx; 0x0043acba lea edx, [rcx + rcx] | edx = rcx + rcx; 0x0043acbd lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x0043acc0 sub eax, edx | eax -= edx; 0x0043acc2 add al, 0x30 | al += 0x30; 0x0043acc4 mov byte [rbx + 5], al | *((rbx + 5)) = al; 0x0043acc7 movsxd rax, ecx | rax = (int64_t) ecx; 0x0043acca imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043acd1 mov rdx, rcx | rdx = rcx; 0x0043acd4 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043acd8 sar rcx, 0x22 | rcx >>= 0x22; 0x0043acdc add ecx, edx | ecx += edx; 0x0043acde add ecx, ecx | ecx += ecx; 0x0043ace0 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0043ace3 sub eax, ecx | eax -= ecx; 0x0043ace5 add al, 0x30 | al += 0x30; 0x0043ace7 mov byte [rbx + 4], al | *((rbx + 4)) = al; 0x0043acea mov edi, ebp | 0x0043acec call 0x43d1c0 | rax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (ebp, rsi); 0x0043acf1 cdqe | rax = (int64_t) eax; 0x0043acf3 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043acfa mov rdx, rcx | rdx = rcx; 0x0043acfd shr rdx, 0x3f | rdx >>= 0x3f; 0x0043ad01 sar rcx, 0x22 | rcx >>= 0x22; 0x0043ad05 add ecx, edx | ecx += edx; 0x0043ad07 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x0043ad0a lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x0043ad0d sub eax, edx | eax -= edx; 0x0043ad0f add al, 0x30 | al += 0x30; 0x0043ad11 mov byte [rbx + 7], al | *((rbx + 7)) = al; 0x0043ad14 movsxd rax, ecx | rax = (int64_t) ecx; 0x0043ad17 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0043ad1e mov rdx, rcx | rdx = rcx; 0x0043ad21 shr rdx, 0x3f | rdx >>= 0x3f; 0x0043ad25 sar rcx, 0x22 | rcx >>= 0x22; 0x0043ad29 add ecx, edx | ecx += edx; 0x0043ad2b add ecx, ecx | ecx += ecx; 0x0043ad2d lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0043ad30 sub eax, ecx | eax -= ecx; 0x0043ad32 add al, 0x30 | al += 0x30; 0x0043ad34 mov byte [rbx + 6], al | *((rbx + 6)) = al; 0x0043ad37 lea rax, [rbx + 8] | rax = rbx + 8; 0x0043ad3b mov edx, dword [r15 + 4] | edx = *((r15 + 4)); 0x0043ad3f test edx, edx | | if (edx == 0) { 0x0043ad41 jne 0x43ad4d | 0x0043ad43 test byte [r14], 8 | | if ((*(r14) & 8) != 0) { 0x0043ad47 jne 0x43addf | goto label_0; | } | } 0x0043ad4d mov ecx, edx | ecx = edx; 0x0043ad4f neg ecx | ecx = -ecx; | if ((*(r14) & 8) < 0) { 0x0043ad51 cmovl ecx, edx | ecx = edx; | } 0x0043ad54 shr edx, 0x1f | edx >>= 0x1f; 0x0043ad57 add dl, dl | dl += dl; 0x0043ad59 add dl, 0x2b | dl += 0x2b; 0x0043ad5c mov byte [rbx + 8], dl | *((rbx + 8)) = dl; 0x0043ad5f mov esi, 0x88888889 | esi = 0x88888889; 0x0043ad64 imul rsi, rcx | rsi *= rcx; 0x0043ad68 shr rsi, 0x25 | rsi >>= 0x25; 0x0043ad6c mov edx, 0xcccccccd | edx = 0xcccccccd; 0x0043ad71 mov edi, esi | edi = esi; 0x0043ad73 imul ebp, esi, 0x3c | ebp = esi * 0x3c; 0x0043ad76 imul rsi, rdx | rsi *= rdx; 0x0043ad7a shr rsi, 0x23 | rsi >>= 0x23; 0x0043ad7e add esi, esi | esi += esi; 0x0043ad80 lea esi, [rsi + rsi*4] | esi = rsi * 5; 0x0043ad83 sub edi, esi | edi -= esi; 0x0043ad85 or dil, 0x30 | dil |= 0x30; 0x0043ad89 mov byte [rbx + 0xa], dil | *((rbx + 0xa)) = dil; 0x0043ad8d imul rsi, rcx, 0x1b4e81b5 | rsi = rcx * 0x1b4e81b5; 0x0043ad94 shr rsi, 0x26 | rsi >>= 0x26; 0x0043ad98 mov rdi, rsi | rdi = rsi; 0x0043ad9b imul rdi, rdx | rdi *= rdx; 0x0043ad9f shr rdi, 0x23 | rdi >>= 0x23; 0x0043ada3 add edi, edi | edi += edi; 0x0043ada5 lea edx, [rdi + rdi*4] | edx = rdi * 5; 0x0043ada8 sub esi, edx | esi -= edx; 0x0043adaa or sil, 0x30 | sil |= 0x30; 0x0043adae mov byte [rbx + 9], sil | *((rbx + 9)) = sil; 0x0043adb2 mov byte [rbx + 0xb], 0x3a | *((rbx + 0xb)) = 0x3a; 0x0043adb6 sub ecx, ebp | ecx -= ebp; 0x0043adb8 imul edx, ecx, 0xcd | edx = ecx * 0xcd; 0x0043adbe movzx edx, dx | edx = (int32_t) dx; 0x0043adc1 shr edx, 0xb | edx >>= 0xb; 0x0043adc4 lea esi, [rdx + rdx] | esi = rdx + rdx; 0x0043adc7 lea esi, [rsi + rsi*4] | esi = rsi * 5; 0x0043adca sub cl, sil | cl -= sil; 0x0043adcd or cl, 0x30 | cl |= 0x30; 0x0043add0 mov byte [rbx + 0xd], cl | *((rbx + 0xd)) = cl; 0x0043add3 or dl, 0x30 | dl |= 0x30; 0x0043add6 mov byte [rbx + 0xc], dl | *((rbx + 0xc)) = dl; 0x0043add9 add rbx, 0xe | rbx += 0xe; 0x0043addd jmp 0x43ade7 | goto label_1; | label_0: 0x0043addf mov byte [rbx + 8], 0x5a | *((rbx + 8)) = 0x5a; 0x0043ade3 add rbx, 9 | rbx += 9; | label_1: 0x0043ade7 sub ebx, eax | ebx -= eax; 0x0043ade9 add ebx, 8 | ebx += 8; 0x0043adec mov eax, ebx | eax = ebx; 0x0043adee add rsp, 8 | 0x0043adf2 pop rbx | 0x0043adf3 pop r14 | 0x0043adf5 pop r15 | 0x0043adf7 pop rbp | 0x0043adf8 ret | return rax; | }