; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x4667f0 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generateRaw_char__BloombergLP::bdlt::Time_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | int64_t method_BloombergLP::bdlt::Iso8601Util_generateRaw_char_BloombergLP::bdlt::Time_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generateRaw(char*, BloombergLP::bdlt::Time const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x004667f0 push rbp | 0x004667f1 push r15 | 0x004667f3 push r14 | 0x004667f5 push r13 | 0x004667f7 push r12 | 0x004667f9 push rbx | 0x004667fa push rax | 0x004667fb mov r15, rdx | r15 = rdx; 0x004667fe mov r14, rsi | r14 = rsi; 0x00466801 mov r12, rdi | r12 = rdi; 0x00466804 movabs rdi, 0xffffffbfffffffff | rdi = 0xffffffbfffffffff; 0x0046680e movabs rbp, 0x4000000000 | 0x00466818 mov rcx, qword [rsi] | rcx = *(rsi); 0x0046681b cmp rcx, rbp | | if (rcx < rbp) { 0x0046681e jl 0x466da0 | goto label_6; | } 0x00466824 and rcx, rdi | rcx &= rdi; | label_1: 0x00466827 movabs rdx, 0x98b5bf2c03e529c5 | rdx = 0x98b5bf2c03e529c5; 0x00466831 mov rax, rcx | rax = rcx; 0x00466834 imul rdx | rdx:rax = rax * rdx; 0x00466837 add rdx, rcx | rdx += rcx; 0x0046683a mov rax, rdx | rax = rdx; 0x0046683d shr rax, 0x3f | rax >>= 0x3f; 0x00466841 sar rdx, 0x1f | rdx >>= 0x1f; 0x00466845 add rdx, rax | rdx += rax; 0x00466848 movsxd rax, edx | rax = (int64_t) edx; 0x0046684b imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00466852 mov rdx, rcx | rdx = rcx; 0x00466855 shr rdx, 0x3f | rdx >>= 0x3f; 0x00466859 sar rcx, 0x22 | rcx >>= 0x22; 0x0046685d add ecx, edx | ecx += edx; 0x0046685f lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00466862 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00466865 sub eax, edx | eax -= edx; 0x00466867 add al, 0x30 | al += 0x30; 0x00466869 mov byte [r12 + 1], al | *((r12 + 1)) = al; 0x0046686e movsxd rax, ecx | rax = (int64_t) ecx; 0x00466871 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00466878 mov rdx, rcx | rdx = rcx; 0x0046687b shr rdx, 0x3f | rdx >>= 0x3f; 0x0046687f sar rcx, 0x22 | rcx >>= 0x22; 0x00466883 add ecx, edx | ecx += edx; 0x00466885 add ecx, ecx | ecx += ecx; 0x00466887 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0046688a sub eax, ecx | eax -= ecx; 0x0046688c add al, 0x30 | al += 0x30; 0x0046688e mov byte [r12], al | *(r12) = al; 0x00466892 mov byte [r12 + 2], 0x3a | *((r12 + 2)) = 0x3a; 0x00466898 mov rsi, qword [r14] | rsi = *(r14); 0x0046689b cmp rsi, rbp | | if (rsi < rbp) { 0x0046689e jl 0x466db6 | goto label_7; | } 0x004668a4 and rsi, rdi | rsi &= rdi; | label_2: 0x004668a7 movabs rcx, 0x8f2a633943a6d729 | rcx = 0x8f2a633943a6d729; 0x004668b1 mov rax, rsi | rax = rsi; 0x004668b4 imul rcx | rdx:rax = rax * rcx; 0x004668b7 mov rcx, rdx | rcx = rdx; 0x004668ba add rcx, rsi | rcx += rsi; 0x004668bd mov rax, rcx | rax = rcx; 0x004668c0 shr rax, 0x3f | rax >>= 0x3f; 0x004668c4 sar rcx, 0x19 | rcx >>= 0x19; 0x004668c8 add rcx, rax | rcx += rax; 0x004668cb movabs rbx, 0x8888888888888889 | rbx = 0x8888888888888889; 0x004668d5 mov rax, rcx | rax = rcx; 0x004668d8 imul rbx | rdx:rax = rax * rbx; 0x004668db add rdx, rcx | rdx += rcx; 0x004668de mov rax, rdx | rax = rdx; 0x004668e1 shr rax, 0x3f | rax >>= 0x3f; 0x004668e5 sar rdx, 5 | rdx >>= 5; 0x004668e9 add rdx, rax | rdx += rax; 0x004668ec imul rax, rdx, 0x3c | rax = rdx * 0x3c; 0x004668f0 sub rcx, rax | rcx -= rax; 0x004668f3 movsx eax, cl | eax = (int32_t) cl; 0x004668f6 imul eax, eax, 0x67 | eax *= 0x67; 0x004668f9 movzx eax, ax | eax = (int32_t) ax; 0x004668fc movsx edx, ax | edx = (int32_t) ax; 0x004668ff shr eax, 0xf | eax >>= 0xf; 0x00466902 shr edx, 0xa | edx >>= 0xa; 0x00466905 add dl, al | dl += al; 0x00466907 movzx eax, dl | eax = (int32_t) dl; 0x0046690a lea edx, [rax + rax] | edx = rax + rax; 0x0046690d lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00466910 sub cl, dl | cl -= dl; 0x00466912 add cl, 0x30 | cl += 0x30; 0x00466915 mov byte [r12 + 4], cl | *((r12 + 4)) = cl; 0x0046691a movsx ecx, al | ecx = (int32_t) al; 0x0046691d imul ecx, ecx, 0x67 | ecx *= 0x67; 0x00466920 movzx edx, cx | edx = (int32_t) cx; 0x00466923 shr ecx, 0xa | ecx >>= 0xa; 0x00466926 shr edx, 0xf | edx >>= 0xf; 0x00466929 add dl, cl | dl += cl; 0x0046692b movzx ecx, dl | ecx = (int32_t) dl; 0x0046692e add ecx, ecx | ecx += ecx; 0x00466930 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466933 sub al, cl | al -= cl; 0x00466935 add al, 0x30 | al += 0x30; 0x00466937 mov byte [r12 + 3], al | *((r12 + 3)) = al; 0x0046693c mov byte [r12 + 5], 0x3a | *((r12 + 5)) = 0x3a; 0x00466942 mov eax, dword [r15] | eax = *(r15); 0x00466945 mov r15d, eax | r15d = *(r15); 0x00466948 and r15d, 7 | r15d &= 7; 0x0046694c test r15d, r15d | | if (r15d != 0) { 0x0046694f je 0x466aab | 0x00466955 test al, 0x10 | 0x00466957 sete r13b | r13b = ((al & 0x10) == 0) ? 1 : 0; 0x0046695b add r13b, r13b | r13b += r13b; 0x0046695e or r13b, 0x2c | r13b |= 0x2c; 0x00466962 mov rax, qword [r14] | rax = *(r14); 0x00466965 cmp rax, rbp | | if (rax < rbp) { 0x00466968 jl 0x466dcc | goto label_8; | } 0x0046696e and rax, rdi | rax &= rdi; | label_3: 0x00466971 movabs rcx, 0x431bde82d7b634db | rcx = 0x431bde82d7b634db; 0x0046697b imul rcx | rdx:rax = rax * rcx; 0x0046697e mov rcx, rdx | rcx = rdx; 0x00466981 mov rax, rdx | rax = rdx; 0x00466984 shr rax, 0x3f | rax >>= 0x3f; 0x00466988 sar rcx, 0x12 | rcx >>= 0x12; 0x0046698c add rcx, rax | rcx += rax; 0x0046698f mov rax, rcx | rax = rcx; 0x00466992 imul rbx | rdx:rax = rax * rbx; 0x00466995 add rdx, rcx | rdx += rcx; 0x00466998 mov rax, rdx | rax = rdx; 0x0046699b shr rax, 0x3f | rax >>= 0x3f; 0x0046699f sar rdx, 5 | rdx >>= 5; 0x004669a3 add rdx, rax | rdx += rax; 0x004669a6 imul rax, rdx, 0x3c | rax = rdx * 0x3c; 0x004669aa sub rcx, rax | rcx -= rax; 0x004669ad movsx eax, cl | eax = (int32_t) cl; 0x004669b0 imul eax, eax, 0x67 | eax *= 0x67; 0x004669b3 movzx eax, ax | eax = (int32_t) ax; 0x004669b6 mov edx, eax | edx = eax; 0x004669b8 shr edx, 0xf | edx >>= 0xf; 0x004669bb shr eax, 8 | eax >>= 8; 0x004669be sar al, 2 | al >>= 2; 0x004669c1 add al, dl | al += dl; 0x004669c3 movzx eax, al | eax = (int32_t) al; 0x004669c6 lea edx, [rax + rax] | edx = rax + rax; 0x004669c9 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004669cc sub cl, dl | cl -= dl; 0x004669ce add cl, 0x30 | cl += 0x30; 0x004669d1 mov byte [r12 + 7], cl | *((r12 + 7)) = cl; 0x004669d6 movsx ecx, al | ecx = (int32_t) al; 0x004669d9 imul ecx, ecx, 0x67 | ecx *= 0x67; 0x004669dc movzx ecx, cx | ecx = (int32_t) cx; 0x004669df mov edx, ecx | edx = ecx; 0x004669e1 shr edx, 0xf | edx >>= 0xf; 0x004669e4 shr ecx, 8 | ecx >>= 8; 0x004669e7 sar cl, 2 | cl >>= 2; 0x004669ea add cl, dl | cl += dl; 0x004669ec movzx ecx, cl | ecx = (int32_t) cl; 0x004669ef add ecx, ecx | ecx += ecx; 0x004669f1 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x004669f4 sub al, cl | al -= cl; 0x004669f6 add al, 0x30 | al += 0x30; 0x004669f8 mov byte [r12 + 6], al | *((r12 + 6)) = al; 0x004669fd mov byte [r12 + 8], r13b | *((r12 + 8)) = r13b; 0x00466a02 mov rbx, qword [r14] | rbx = *(r14); 0x00466a05 cmp rbx, rbp | | if (rbx < rbp) { 0x00466a08 jl 0x466de3 | goto label_9; | } 0x00466a0e and rbx, rdi | rbx &= rdi; 0x00466a11 mov rcx, rbx | rcx = rbx; | label_4: 0x00466a14 movabs rdi, 0x20c49ba5e353f7cf | rdi = 0x20c49ba5e353f7cf; 0x00466a1e mov rax, rbx | rax = rbx; 0x00466a21 imul rdi | rdx:rax = rax * rdi; 0x00466a24 mov rsi, rdx | rsi = rdx; 0x00466a27 mov rax, rdx | rax = rdx; 0x00466a2a shr rax, 0x3f | rax >>= 0x3f; 0x00466a2e sar rsi, 7 | rsi >>= 7; 0x00466a32 add rsi, rax | rsi += rax; 0x00466a35 mov rax, rsi | rax = rsi; 0x00466a38 imul rdi | rdx:rax = rax * rdi; 0x00466a3b mov rax, rdx | rax = rdx; 0x00466a3e shr rax, 0x3f | rax >>= 0x3f; 0x00466a42 shr rdx, 7 | rdx >>= 7; 0x00466a46 add edx, eax | edx += eax; 0x00466a48 imul eax, edx, 0x3e8 | eax = edx * 0x3e8; 0x00466a4e sub esi, eax | esi -= eax; 0x00466a50 mov rax, rcx | rax = rcx; 0x00466a53 imul rdi | rdx:rax = rax * rdi; 0x00466a56 imul eax, esi, 0x3e8 | eax = esi * 0x3e8; 0x00466a5c mov rsi, rdx | rsi = rdx; 0x00466a5f shr rsi, 0x3f | rsi >>= 0x3f; 0x00466a63 shr rdx, 7 | rdx >>= 7; 0x00466a67 add edx, esi | edx += esi; 0x00466a69 imul edx, edx, 0x3e8 | edx *= 0x3e8; 0x00466a6f sub ecx, edx | ecx -= edx; 0x00466a71 add ecx, eax | ecx += eax; 0x00466a73 cmp r15d, 6 | | if (r15d >= 6) { 0x00466a77 jae 0x466b64 | goto label_10; | } 0x00466a7d movsxd rax, ecx | rax = (int64_t) ecx; 0x00466a80 cmp r15d, 5 | | if (r15d < 5) { 0x00466a84 jae 0x466b50 | 0x00466a8a cmp r15d, 4 | | if (r15d != 4) { 0x00466a8e jne 0x466d4f | goto label_11; | } 0x00466a94 imul rcx, rax, 0x51eb851f | rcx = rax * 0x51eb851f; 0x00466a9b mov rax, rcx | rax = rcx; 0x00466a9e shr rax, 0x3f | rax >>= 0x3f; 0x00466aa2 sar rcx, 0x25 | rcx >>= 0x25; 0x00466aa6 jmp 0x466b62 | | } else { 0x00466aab mov rax, qword [r14] | rax = *(r14); 0x00466aae cmp rax, rbp | | if (rax < rbp) { 0x00466ab1 jl 0x466e01 | goto label_12; | } 0x00466ab7 and rax, rdi | rax &= rdi; | label_5: 0x00466aba movabs rcx, 0x431bde82d7b634db | rcx = 0x431bde82d7b634db; 0x00466ac4 imul rcx | rdx:rax = rax * rcx; 0x00466ac7 mov rcx, rdx | rcx = rdx; 0x00466aca mov rax, rdx | rax = rdx; 0x00466acd shr rax, 0x3f | rax >>= 0x3f; 0x00466ad1 sar rcx, 0x12 | rcx >>= 0x12; 0x00466ad5 add rcx, rax | rcx += rax; 0x00466ad8 mov rax, rcx | rax = rcx; 0x00466adb imul rbx | rdx:rax = rax * rbx; 0x00466ade add rdx, rcx | rdx += rcx; 0x00466ae1 mov rax, rdx | rax = rdx; 0x00466ae4 shr rax, 0x3f | rax >>= 0x3f; 0x00466ae8 sar rdx, 5 | rdx >>= 5; 0x00466aec add rdx, rax | rdx += rax; 0x00466aef imul rax, rdx, 0x3c | rax = rdx * 0x3c; 0x00466af3 sub rcx, rax | rcx -= rax; 0x00466af6 movsx eax, cl | eax = (int32_t) cl; 0x00466af9 imul eax, eax, 0x67 | eax *= 0x67; 0x00466afc movzx eax, ax | eax = (int32_t) ax; 0x00466aff mov edx, eax | edx = eax; 0x00466b01 shr edx, 0xf | edx >>= 0xf; 0x00466b04 shr eax, 8 | eax >>= 8; 0x00466b07 sar al, 2 | al >>= 2; 0x00466b0a add al, dl | al += dl; 0x00466b0c movzx eax, al | eax = (int32_t) al; 0x00466b0f lea edx, [rax + rax] | edx = rax + rax; 0x00466b12 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00466b15 sub cl, dl | cl -= dl; 0x00466b17 add cl, 0x30 | cl += 0x30; 0x00466b1a mov byte [r12 + 7], cl | *((r12 + 7)) = cl; 0x00466b1f movsx ecx, al | ecx = (int32_t) al; 0x00466b22 imul ecx, ecx, 0x67 | ecx *= 0x67; 0x00466b25 movzx ecx, cx | ecx = (int32_t) cx; 0x00466b28 mov edx, ecx | edx = ecx; 0x00466b2a shr edx, 0xf | edx >>= 0xf; 0x00466b2d shr ecx, 8 | ecx >>= 8; 0x00466b30 sar cl, 2 | cl >>= 2; 0x00466b33 add cl, dl | cl += dl; 0x00466b35 movzx ecx, cl | ecx = (int32_t) cl; 0x00466b38 add ecx, ecx | ecx += ecx; 0x00466b3a lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466b3d sub al, cl | al -= cl; 0x00466b3f add al, 0x30 | al += 0x30; 0x00466b41 mov byte [r12 + 6], al | *((r12 + 6)) = al; 0x00466b46 lea rax, [r12 + 8] | rax = r12 + 8; 0x00466b4b jmp 0x466d3d | goto label_13; | } 0x00466b50 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00466b57 mov rax, rcx | rax = rcx; 0x00466b5a shr rax, 0x3f | rax >>= 0x3f; 0x00466b5e sar rcx, 0x22 | rcx >>= 0x22; | } | do { | label_0: 0x00466b62 add ecx, eax | ecx += eax; | label_10: 0x00466b64 lea rax, [r12 + 9] | rax = r12 + 9; 0x00466b69 movsxd rdx, ecx | rdx = (int64_t) ecx; 0x00466b6c imul rsi, rdx, 0x66666667 | rsi = rdx * 0x66666667; 0x00466b73 mov rcx, rsi | rcx = rsi; 0x00466b76 shr rcx, 0x3f | rcx >>= 0x3f; 0x00466b7a sar rsi, 0x22 | rsi >>= 0x22; 0x00466b7e add esi, ecx | esi += ecx; 0x00466b80 lea ecx, [rsi + rsi] | ecx = rsi + rsi; 0x00466b83 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466b86 mov edi, edx | edi = edx; 0x00466b88 sub edi, ecx | edi -= ecx; 0x00466b8a add dil, 0x30 | dil += 0x30; 0x00466b8e mov byte [r12 + r15 + 8], dil | *((r12 + r15 + 8)) = dil; 0x00466b93 cmp r15d, 1 | | if (r15d > 1) { 0x00466b97 jbe 0x466d37 | 0x00466b9d lea rcx, [r15 + 9] | rcx = r15 + 9; 0x00466ba1 mov rdi, r15 | rdi = r15; 0x00466ba4 or rdi, 8 | rdi |= 8; 0x00466ba8 movsxd rbp, esi | rbp = (int64_t) esi; 0x00466bab imul rbp, rbp, 0x66666667 | rbp *= 0x66666667; 0x00466bb2 mov rbx, rbp | rbx = rbp; 0x00466bb5 shr rbx, 0x3f | rbx >>= 0x3f; 0x00466bb9 sar rbp, 0x22 | rbp >>= 0x22; 0x00466bbd add ebp, ebx | ebp += ebx; 0x00466bbf add ebp, ebp | ebp += ebp; 0x00466bc1 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x00466bc5 sub esi, ebp | esi -= ebp; 0x00466bc7 add sil, 0x30 | sil += 0x30; 0x00466bcb mov byte [r12 + rcx - 2], sil | *((r12 + rcx - 2)) = sil; 0x00466bd0 cmp edi, 0xb | | if (edi < 0xb) { 0x00466bd3 jb 0x466d37 | goto label_14; | } 0x00466bd9 lea rsi, [rcx - 2] | rsi = rcx - 2; 0x00466bdd imul rdi, rdx, 0x51eb851f | rdi = rdx * 0x51eb851f; 0x00466be4 mov rbp, rdi | 0x00466be7 shr rbp, 0x3f | rbp >>= 0x3f; 0x00466beb sar rdi, 0x25 | rdi >>= 0x25; 0x00466bef add edi, ebp | edi += ebp; 0x00466bf1 movsxd rdi, edi | rdi = (int64_t) edi; 0x00466bf4 imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00466bfb mov rbx, rbp | rbx = rbp; 0x00466bfe shr rbx, 0x3f | rbx >>= 0x3f; 0x00466c02 sar rbp, 0x22 | rbp >>= 0x22; 0x00466c06 add ebp, ebx | ebp += ebx; 0x00466c08 add ebp, ebp | ebp += ebp; 0x00466c0a lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x00466c0e sub edi, ebp | edi -= ebp; 0x00466c10 add dil, 0x30 | dil += 0x30; 0x00466c14 mov byte [r12 + rcx - 3], dil | *((r12 + rcx - 3)) = dil; 0x00466c19 cmp rsi, 0xb | | if (rsi < 0xb) { 0x00466c1d jb 0x466d37 | goto label_14; | } 0x00466c23 lea rsi, [rcx - 3] | rsi = rcx - 3; 0x00466c27 imul rdi, rdx, 0x10624dd3 | rdi = rdx * 0x10624dd3; 0x00466c2e mov rbp, rdi | 0x00466c31 shr rbp, 0x3f | rbp >>= 0x3f; 0x00466c35 sar rdi, 0x26 | rdi >>= 0x26; 0x00466c39 add edi, ebp | edi += ebp; 0x00466c3b movsxd rdi, edi | rdi = (int64_t) edi; 0x00466c3e imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00466c45 mov rbx, rbp | rbx = rbp; 0x00466c48 shr rbx, 0x3f | rbx >>= 0x3f; 0x00466c4c sar rbp, 0x22 | rbp >>= 0x22; 0x00466c50 add ebp, ebx | ebp += ebx; 0x00466c52 add ebp, ebp | ebp += ebp; 0x00466c54 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x00466c58 sub edi, ebp | edi -= ebp; 0x00466c5a add dil, 0x30 | dil += 0x30; 0x00466c5e mov byte [r12 + rcx - 4], dil | *((r12 + rcx - 4)) = dil; 0x00466c63 cmp rsi, 0xb | | if (rsi < 0xb) { 0x00466c67 jb 0x466d37 | goto label_14; | } 0x00466c6d lea rsi, [rcx - 4] | rsi = rcx - 4; 0x00466c71 imul rdi, rdx, 0x68db8bad | rdi = rdx * 0x68db8bad; 0x00466c78 mov rbp, rdi | 0x00466c7b shr rbp, 0x3f | rbp >>= 0x3f; 0x00466c7f sar rdi, 0x2c | rdi >>= 0x2c; 0x00466c83 add edi, ebp | edi += ebp; 0x00466c85 movsxd rdi, edi | rdi = (int64_t) edi; 0x00466c88 imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00466c8f mov rbx, rbp | rbx = rbp; 0x00466c92 shr rbx, 0x3f | rbx >>= 0x3f; 0x00466c96 sar rbp, 0x22 | rbp >>= 0x22; 0x00466c9a add ebp, ebx | ebp += ebx; 0x00466c9c add ebp, ebp | ebp += ebp; 0x00466c9e lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x00466ca2 sub edi, ebp | edi -= ebp; 0x00466ca4 add dil, 0x30 | dil += 0x30; 0x00466ca8 mov byte [r12 + rcx - 5], dil | *((r12 + rcx - 5)) = dil; 0x00466cad cmp rsi, 0xb | | if (rsi < 0xb) { 0x00466cb1 jb 0x466d37 | goto label_14; | } 0x00466cb7 lea rsi, [rcx - 5] | rsi = rcx - 5; 0x00466cbb imul rdi, rdx, 0x14f8b589 | rdi = rdx * 0x14f8b589; 0x00466cc2 mov rbp, rdi | 0x00466cc5 shr rbp, 0x3f | rbp >>= 0x3f; 0x00466cc9 sar rdi, 0x2d | rdi >>= 0x2d; 0x00466ccd add edi, ebp | edi += ebp; 0x00466ccf movsxd rdi, edi | rdi = (int64_t) edi; 0x00466cd2 imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00466cd9 mov rbx, rbp | rbx = rbp; 0x00466cdc shr rbx, 0x3f | rbx >>= 0x3f; 0x00466ce0 sar rbp, 0x22 | rbp >>= 0x22; 0x00466ce4 add ebp, ebx | ebp += ebx; 0x00466ce6 add ebp, ebp | ebp += ebp; 0x00466ce8 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x00466cec sub edi, ebp | edi -= ebp; 0x00466cee add dil, 0x30 | dil += 0x30; 0x00466cf2 mov byte [rcx + r12 - 6], dil | *((rcx + r12 - 6)) = dil; 0x00466cf7 cmp rsi, 0xb | | if (rsi < 0xb) { 0x00466cfb jb 0x466d37 | goto label_14; | } 0x00466cfd imul rdx, rdx, 0x431bde83 | rdx *= 0x431bde83; 0x00466d04 mov rsi, rdx | rsi = rdx; 0x00466d07 shr rsi, 0x3f | rsi >>= 0x3f; 0x00466d0b sar rdx, 0x32 | rdx >>= 0x32; 0x00466d0f add edx, esi | edx += esi; 0x00466d11 movsxd rdx, edx | rdx = (int64_t) edx; 0x00466d14 imul rsi, rdx, 0x66666667 | rsi = rdx * 0x66666667; 0x00466d1b mov rdi, rsi | rdi = rsi; 0x00466d1e shr rdi, 0x3f | rdi >>= 0x3f; 0x00466d22 shr rsi, 0x22 | rsi >>= 0x22; 0x00466d26 add esi, edi | esi += edi; 0x00466d28 add esi, esi | esi += esi; 0x00466d2a lea esi, [rsi + rsi*4] | esi = rsi * 5; 0x00466d2d sub edx, esi | edx -= esi; 0x00466d2f add dl, 0x30 | dl += 0x30; 0x00466d32 mov byte [rcx + r12 - 7], dl | *((rcx + r12 - 7)) = dl; | } | label_14: 0x00466d37 mov ecx, r15d | ecx = r15d; 0x00466d3a add rax, rcx | rax += rcx; | label_13: 0x00466d3d sub eax, r12d | eax -= r12d; 0x00466d40 add rsp, 8 | 0x00466d44 pop rbx | 0x00466d45 pop r12 | 0x00466d47 pop r13 | 0x00466d49 pop r14 | 0x00466d4b pop r15 | 0x00466d4d pop rbp | 0x00466d4e ret | return rax; | label_11: 0x00466d4f cmp r15d, 2 | | if (r15d > 2) { 0x00466d53 ja 0x466d72 | goto label_15; | } 0x00466d55 cmp r15d, 2 | | if (r15d != 2) { 0x00466d59 jne 0x466d89 | goto label_16; | } 0x00466d5b imul rcx, rax, 0x68db8bad | rcx = rax * 0x68db8bad; 0x00466d62 mov rax, rcx | rax = rcx; 0x00466d65 shr rax, 0x3f | rax >>= 0x3f; 0x00466d69 sar rcx, 0x2c | rcx >>= 0x2c; 0x00466d6d jmp 0x466b62 | | } while (1); | label_15: 0x00466d72 imul rcx, rax, 0x10624dd3 | rcx = rax * 0x10624dd3; 0x00466d79 mov rax, rcx | rax = rcx; 0x00466d7c shr rax, 0x3f | rax >>= 0x3f; 0x00466d80 sar rcx, 0x26 | rcx >>= 0x26; 0x00466d84 jmp 0x466b62 | goto label_0; | label_16: 0x00466d89 imul rcx, rax, 0x14f8b589 | rcx = rax * 0x14f8b589; 0x00466d90 mov rax, rcx | rax = rcx; 0x00466d93 shr rax, 0x3f | rax >>= 0x3f; 0x00466d97 sar rcx, 0x2d | rcx >>= 0x2d; 0x00466d9b jmp 0x466b62 | goto label_0; | label_6: 0x00466da0 mov rbx, rdi | rbx = rdi; 0x00466da3 mov rdi, r14 | 0x00466da6 call 0x46b280 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00466dab mov rdi, rbx | rdi = rbx; 0x00466dae mov rcx, rax | rcx = rax; 0x00466db1 jmp 0x466827 | goto label_1; | label_7: 0x00466db6 mov rbx, rdi | rbx = rdi; 0x00466db9 mov rdi, r14 | 0x00466dbc call 0x46b280 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00466dc1 mov rdi, rbx | rdi = rbx; 0x00466dc4 mov rsi, rax | rsi = rax; 0x00466dc7 jmp 0x4668a7 | goto label_2; | label_8: 0x00466dcc mov rdi, r14 | 0x00466dcf call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00466dd4 movabs rdi, 0xffffffbfffffffff | rdi = 0xffffffbfffffffff; 0x00466dde jmp 0x466971 | goto label_3; | label_9: 0x00466de3 mov r13, rdi | r13 = rdi; 0x00466de6 mov rdi, r14 | 0x00466de9 call 0x46b280 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00466dee mov rbx, rax | rbx = rax; 0x00466df1 mov rcx, qword [r14] | rcx = *(r14); 0x00466df4 cmp rcx, rbp | | if (rcx >= rbp) { 0x00466df7 jl 0x466e0e | 0x00466df9 and rcx, r13 | rcx &= r13; 0x00466dfc jmp 0x466a14 | goto label_4; | label_12: 0x00466e01 mov rdi, r14 | 0x00466e04 call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00466e09 jmp 0x466aba | goto label_5; | } 0x00466e0e mov rdi, r14 | 0x00466e11 call 0x46b280 | rax = BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00466e16 mov rcx, rax | rcx = rax; 0x00466e19 jmp 0x466a14 | goto label_4; | }