; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x466d10 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generateRaw_char__BloombergLP::bdlt::Datetime_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::Iso8601Util_generateRaw_char_BloombergLP::bdlt::Datetime_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg3, int64_t arg2, int64_t arg1) { | char * var_8h; | int64_t var_10h; | char * var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generateRaw(char*, BloombergLP::bdlt::Datetime const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x00466d10 push rbp | 0x00466d11 push r15 | 0x00466d13 push r14 | 0x00466d15 push r13 | 0x00466d17 push r12 | 0x00466d19 push rbx | 0x00466d1a sub rsp, 0x28 | 0x00466d1e mov r15, rdx | r15 = rdx; 0x00466d21 mov r14, rsi | r14 = rsi; 0x00466d24 mov r12, rdi | r12 = rdi; 0x00466d27 mov rbx, qword [rsi] | rbx = *(rsi); 0x00466d2a test rbx, rbx | | if (rbx >= 0) { 0x00466d2d jns 0x4672c0 | goto label_7; | } | label_1: 0x00466d33 shr rbx, 0x25 | rbx >>= 0x25; 0x00466d37 and ebx, 0x3ffffff | ebx &= 0x3ffffff; 0x00466d3d inc ebx | ebx++; 0x00466d3f mov edi, ebx | 0x00466d41 call 0x46a320 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (ebx, rsi); 0x00466d46 mov ecx, eax | ecx = eax; 0x00466d48 mov r13d, 0xcccccccd | r13d = 0xcccccccd; 0x00466d4e imul rdx, rcx, 0x51eb851f | rdx = rcx * 0x51eb851f; 0x00466d55 imul rsi, rcx, 0x10624dd3 | rsi = rcx * 0x10624dd3; 0x00466d5c imul rcx, r13 | rcx *= r13; 0x00466d60 shr rcx, 0x23 | rcx >>= 0x23; 0x00466d64 lea edi, [rcx + rcx] | edi = rcx + rcx; 0x00466d67 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x00466d6a sub eax, edi | eax -= edi; 0x00466d6c or al, 0x30 | al |= 0x30; 0x00466d6e mov byte [r12 + 3], al | *((r12 + 3)) = al; 0x00466d73 mov rax, rcx | rax = rcx; 0x00466d76 imul rax, r13 | rax *= r13; 0x00466d7a shr rax, 0x23 | rax >>= 0x23; 0x00466d7e add eax, eax | eax += eax; 0x00466d80 lea eax, [rax + rax*4] | eax = rax * 5; 0x00466d83 sub ecx, eax | ecx -= eax; 0x00466d85 or cl, 0x30 | cl |= 0x30; 0x00466d88 mov byte [r12 + 2], cl | *((r12 + 2)) = cl; 0x00466d8d shr rdx, 0x25 | rdx >>= 0x25; 0x00466d91 mov rax, rdx | rax = rdx; 0x00466d94 imul rax, r13 | rax *= r13; 0x00466d98 shr rax, 0x23 | rax >>= 0x23; 0x00466d9c add eax, eax | eax += eax; 0x00466d9e lea eax, [rax + rax*4] | eax = rax * 5; 0x00466da1 sub edx, eax | edx -= eax; 0x00466da3 or dl, 0x30 | dl |= 0x30; 0x00466da6 mov byte [r12 + 1], dl | *((r12 + 1)) = dl; 0x00466dab shr rsi, 0x26 | rsi >>= 0x26; 0x00466daf mov rax, rsi | rax = rsi; 0x00466db2 imul rax, r13 | rax *= r13; 0x00466db6 shr rax, 0x23 | rax >>= 0x23; 0x00466dba add eax, eax | eax += eax; 0x00466dbc lea eax, [rax + rax*4] | eax = rax * 5; 0x00466dbf sub esi, eax | esi -= eax; 0x00466dc1 or sil, 0x30 | sil |= 0x30; 0x00466dc5 mov byte [r12], sil | *(r12) = sil; 0x00466dc9 mov byte [r12 + 4], 0x2d | *((r12 + 4)) = 0x2d; 0x00466dcf mov edi, ebx | 0x00466dd1 call 0x46a2e0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (ebx, rsi); 0x00466dd6 mov ecx, eax | ecx = eax; 0x00466dd8 imul rcx, r13 | rcx *= r13; 0x00466ddc shr rcx, 0x23 | rcx >>= 0x23; 0x00466de0 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00466de3 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00466de6 sub eax, edx | eax -= edx; 0x00466de8 or al, 0x30 | al |= 0x30; 0x00466dea mov byte [r12 + 6], al | *((r12 + 6)) = al; 0x00466def mov rax, rcx | rax = rcx; 0x00466df2 imul rax, r13 | rax *= r13; 0x00466df6 shr rax, 0x23 | rax >>= 0x23; 0x00466dfa add eax, eax | eax += eax; 0x00466dfc lea eax, [rax + rax*4] | eax = rax * 5; 0x00466dff sub ecx, eax | ecx -= eax; 0x00466e01 or cl, 0x30 | cl |= 0x30; 0x00466e04 mov byte [r12 + 5], cl | *((r12 + 5)) = cl; 0x00466e09 mov byte [r12 + 7], 0x2d | *((r12 + 7)) = 0x2d; 0x00466e0f mov edi, ebx | 0x00466e11 call 0x46a2a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (ebx, rsi); 0x00466e16 mov ecx, eax | ecx = eax; 0x00466e18 imul rcx, r13 | rcx *= r13; 0x00466e1c shr rcx, 0x23 | rcx >>= 0x23; 0x00466e20 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00466e23 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00466e26 sub eax, edx | eax -= edx; 0x00466e28 or al, 0x30 | al |= 0x30; 0x00466e2a mov byte [r12 + 9], al | *((r12 + 9)) = al; 0x00466e2f mov rax, rcx | rax = rcx; 0x00466e32 imul rax, r13 | rax *= r13; 0x00466e36 shr rax, 0x23 | rax >>= 0x23; 0x00466e3a add eax, eax | eax += eax; 0x00466e3c lea eax, [rax + rax*4] | eax = rax * 5; 0x00466e3f sub ecx, eax | ecx -= eax; 0x00466e41 or cl, 0x30 | cl |= 0x30; 0x00466e44 mov byte [r12 + 8], cl | *((r12 + 8)) = cl; 0x00466e49 mov byte [r12 + 0xa], 0x54 | *((r12 + 0xa)) = 0x54; 0x00466e4f mov rcx, qword [r14] | rcx = *(r14); 0x00466e52 test rcx, rcx | | if (rcx >= 0) { 0x00466e55 jns 0x46732f | goto label_8; | } | label_2: 0x00466e5b movabs r13, 0x1fffffffc0 | r13 = 0x1fffffffc0; 0x00466e65 lea rax, [r13 - 0x3c0] | rax = r13 - 0x3c0; 0x00466e6c and rax, rcx | rax &= rcx; 0x00466e6f movabs rcx, 0x98b5bf2c03e529c5 | rcx = 0x98b5bf2c03e529c5; 0x00466e79 mul rcx | rdx:rax = rax * rcx; 0x00466e7c shr rdx, 0x1f | rdx >>= 0x1f; 0x00466e80 imul eax, edx, 0xcd | eax = edx * 0xcd; 0x00466e86 movzx eax, ax | eax = (int32_t) ax; 0x00466e89 shr eax, 0xb | eax >>= 0xb; 0x00466e8c lea ecx, [rax + rax] | ecx = rax + rax; 0x00466e8f lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466e92 sub dl, cl | dl -= cl; 0x00466e94 or dl, 0x30 | dl |= 0x30; 0x00466e97 mov byte [r12 + 0xc], dl | *((r12 + 0xc)) = dl; 0x00466e9c imul ecx, eax, 0xcd | ecx = eax * 0xcd; 0x00466ea2 shr ecx, 0xa | ecx >>= 0xa; 0x00466ea5 and ecx, 0xfffffffe | ecx &= 0xfffffffe; 0x00466ea8 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466eab sub al, cl | al -= cl; 0x00466ead or al, 0x30 | al |= 0x30; 0x00466eaf mov byte [r12 + 0xb], al | *((r12 + 0xb)) = al; 0x00466eb4 mov byte [r12 + 0xd], 0x3a | *((r12 + 0xd)) = 0x3a; 0x00466eba mov rcx, qword [r14] | rcx = *(r14); 0x00466ebd test rcx, rcx | | if (rcx >= 0) { 0x00466ec0 jns 0x467384 | goto label_9; | } | label_3: 0x00466ec6 lea rax, [r13 - 0xc0] | rax = r13 - 0xc0; 0x00466ecd and rax, rcx | rax &= rcx; 0x00466ed0 shr rax, 8 | rax >>= 8; 0x00466ed4 movabs rcx, 0x11e54c672874daf | rcx = 0x11e54c672874daf; 0x00466ede mul rcx | rdx:rax = rax * rcx; 0x00466ee1 shr rdx, 0xa | rdx >>= 0xa; 0x00466ee5 movzx eax, dx | eax = (int32_t) dx; 0x00466ee8 imul eax, eax, 0x8889 | eax *= 0x8889; 0x00466eee shr eax, 0x15 | eax >>= 0x15; 0x00466ef1 imul eax, eax, 0x3c | eax *= 0x3c; 0x00466ef4 sub edx, eax | edx -= eax; 0x00466ef6 imul eax, edx, 0xcd | eax = edx * 0xcd; 0x00466efc movzx eax, ax | eax = (int32_t) ax; 0x00466eff shr eax, 0xb | eax >>= 0xb; 0x00466f02 lea ecx, [rax + rax] | ecx = rax + rax; 0x00466f05 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466f08 sub dl, cl | dl -= cl; 0x00466f0a or dl, 0x30 | dl |= 0x30; 0x00466f0d mov byte [r12 + 0xf], dl | *((r12 + 0xf)) = dl; 0x00466f12 or al, 0x30 | al |= 0x30; 0x00466f14 mov byte [r12 + 0xe], al | *((r12 + 0xe)) = al; 0x00466f19 mov byte [r12 + 0x10], 0x3a | *((r12 + 0x10)) = 0x3a; 0x00466f1f mov eax, dword [r15] | eax = *(r15); 0x00466f22 mov r15d, eax | r15d = *(r15); 0x00466f25 and r15d, 7 | r15d &= 7; 0x00466f29 test r15d, r15d | | if (r15d != 0) { 0x00466f2c je 0x467025 | 0x00466f32 test al, 0x10 | 0x00466f34 sete bl | bl = ((al & 0x10) == 0) ? 1 : 0; 0x00466f37 add bl, bl | bl += bl; 0x00466f39 or bl, 0x2c | bl |= 0x2c; 0x00466f3c mov rax, qword [r14] | rax = *(r14); 0x00466f3f test rax, rax | | if (rax >= 0) { 0x00466f42 jns 0x4673d9 | goto label_10; | } | label_4: 0x00466f48 and rax, r13 | rax &= r13; 0x00466f4b movabs rcx, 0x431bde82d7b634db | rcx = 0x431bde82d7b634db; 0x00466f55 mul rcx | rdx:rax = rax * rcx; 0x00466f58 shr rdx, 0x12 | rdx >>= 0x12; 0x00466f5c mov eax, 0x88888889 | eax = 0x88888889; 0x00466f61 imul rax, rdx | rax *= rdx; 0x00466f65 shr rax, 0x25 | rax >>= 0x25; 0x00466f69 imul eax, eax, 0x3c | eax *= 0x3c; 0x00466f6c sub edx, eax | edx -= eax; 0x00466f6e imul eax, edx, 0xcd | eax = edx * 0xcd; 0x00466f74 movzx eax, ax | eax = (int32_t) ax; 0x00466f77 shr eax, 0xb | eax >>= 0xb; 0x00466f7a lea ecx, [rax + rax] | ecx = rax + rax; 0x00466f7d lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00466f80 sub dl, cl | dl -= cl; 0x00466f82 or dl, 0x30 | dl |= 0x30; 0x00466f85 mov byte [r12 + 0x12], dl | *((r12 + 0x12)) = dl; 0x00466f8a or al, 0x30 | al |= 0x30; 0x00466f8c mov byte [r12 + 0x11], al | *((r12 + 0x11)) = al; 0x00466f91 mov byte [r12 + 0x13], bl | *((r12 + 0x13)) = bl; 0x00466f96 mov rbp, qword [r14] | rbp = *(r14); 0x00466f99 mov rcx, rbp | rcx = *(r14); 0x00466f9c test rbp, rbp | | if (rbp >= 0) { 0x00466f9f jns 0x46742e | goto label_11; | } | label_5: 0x00466fa5 lea rax, [r13 + 0x38] | rax = r13 + 0x38; 0x00466fa9 and rax, rbp | rax &= rbp; 0x00466fac shr rax, 3 | rax >>= 3; 0x00466fb0 movabs rsi, 0x20c49ba5e353f7cf | rsi = 0x20c49ba5e353f7cf; 0x00466fba mul rsi | rdx:rax = rax * rsi; 0x00466fbd shr rdx, 4 | rdx >>= 4; 0x00466fc1 imul rax, rdx, 0x10624dd3 | rax = rdx * 0x10624dd3; 0x00466fc8 shr rax, 0x26 | rax >>= 0x26; 0x00466fcc imul eax, eax, 0x3e8 | eax *= 0x3e8; 0x00466fd2 sub edx, eax | edx -= eax; 0x00466fd4 imul edi, edx, 0x3e8 | edi = edx * 0x3e8; 0x00466fda add r13, 0x3f | r13 += 0x3f; 0x00466fde and r13, rcx | r13 &= rcx; 0x00466fe1 mov rax, r13 | rax = r13; 0x00466fe4 shr rax, 3 | rax >>= 3; 0x00466fe8 mul rsi | rdx:rax = rax * rsi; 0x00466feb shr rdx, 4 | rdx >>= 4; 0x00466fef imul eax, edx, 0x3e8 | eax = edx * 0x3e8; 0x00466ff5 sub r13d, eax | r13d -= eax; 0x00466ff8 add r13d, edi | r13d += edi; 0x00466ffb cmp r15d, 6 | | if (r15d >= 6) { 0x00466fff jae 0x467092 | goto label_0; | } 0x00467005 mov eax, r13d | eax = r13d; 0x00467008 cmp r15d, 5 | | if (r15d < 5) { 0x0046700c jae 0x467084 | 0x0046700e cmp r15d, 4 | | if (r15d != 4) { 0x00467012 jne 0x46727d | goto label_12; | } 0x00467018 imul r13, rax, 0x51eb851f | r13 = rax * 0x51eb851f; 0x0046701f shr r13, 0x25 | r13 >>= 0x25; 0x00467023 jmp 0x467092 | | } else { 0x00467025 mov rax, qword [r14] | rax = *(r14); 0x00467028 test rax, rax | | if (rax >= 0) { 0x0046702b jns 0x4674d8 | goto label_13; | } | label_6: 0x00467031 and rax, r13 | rax &= r13; 0x00467034 movabs rcx, 0x431bde82d7b634db | rcx = 0x431bde82d7b634db; 0x0046703e mul rcx | rdx:rax = rax * rcx; 0x00467041 shr rdx, 0x12 | rdx >>= 0x12; 0x00467045 mov eax, 0x88888889 | eax = 0x88888889; 0x0046704a imul rax, rdx | rax *= rdx; 0x0046704e shr rax, 0x25 | rax >>= 0x25; 0x00467052 imul eax, eax, 0x3c | eax *= 0x3c; 0x00467055 sub edx, eax | edx -= eax; 0x00467057 imul eax, edx, 0xcd | eax = edx * 0xcd; 0x0046705d movzx eax, ax | eax = (int32_t) ax; 0x00467060 shr eax, 0xb | eax >>= 0xb; 0x00467063 lea ecx, [rax + rax] | ecx = rax + rax; 0x00467066 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00467069 sub dl, cl | dl -= cl; 0x0046706b or dl, 0x30 | dl |= 0x30; 0x0046706e mov byte [r12 + 0x12], dl | *((r12 + 0x12)) = dl; 0x00467073 or al, 0x30 | al |= 0x30; 0x00467075 mov byte [r12 + 0x11], al | *((r12 + 0x11)) = al; 0x0046707a lea rax, [r12 + 0x13] | rax = r12 + 0x13; 0x0046707f jmp 0x46726b | goto label_14; | } 0x00467084 mov r13d, 0xcccccccd | r13d = 0xcccccccd; 0x0046708a imul r13, rax | r13 *= rax; 0x0046708e shr r13, 0x23 | r13 >>= 0x23; | } | do { | label_0: 0x00467092 lea rax, [r12 + 0x14] | rax = r12 + 0x14; 0x00467097 movsxd rdx, r13d | rdx = (int64_t) r13d; 0x0046709a imul rsi, rdx, 0x66666667 | rsi = rdx * 0x66666667; 0x004670a1 mov rcx, rsi | rcx = rsi; 0x004670a4 shr rcx, 0x3f | rcx >>= 0x3f; 0x004670a8 sar rsi, 0x22 | rsi >>= 0x22; 0x004670ac add esi, ecx | esi += ecx; 0x004670ae lea ecx, [rsi + rsi] | ecx = rsi + rsi; 0x004670b1 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x004670b4 mov edi, edx | edi = edx; 0x004670b6 sub edi, ecx | edi -= ecx; 0x004670b8 add dil, 0x30 | dil += 0x30; 0x004670bc mov byte [r12 + r15 + 0x13], dil | *((r12 + r15 + 0x13)) = dil; 0x004670c1 cmp r15d, 1 | | if (r15d > 1) { 0x004670c5 jbe 0x467265 | 0x004670cb lea rcx, [r15 + 0x14] | rcx = r15 + 0x14; 0x004670cf mov rdi, r15 | rdi = r15; 0x004670d2 add rdi, 0x13 | rdi += 0x13; 0x004670d6 movsxd rbp, esi | rbp = (int64_t) esi; 0x004670d9 imul rbp, rbp, 0x66666667 | rbp *= 0x66666667; 0x004670e0 mov rbx, rbp | rbx = rbp; 0x004670e3 shr rbx, 0x3f | rbx >>= 0x3f; 0x004670e7 sar rbp, 0x22 | rbp >>= 0x22; 0x004670eb add ebp, ebx | ebp += ebx; 0x004670ed add ebp, ebp | ebp += ebp; 0x004670ef lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x004670f3 sub esi, ebp | esi -= ebp; 0x004670f5 add sil, 0x30 | sil += 0x30; 0x004670f9 mov byte [r12 + rcx - 2], sil | *((r12 + rcx - 2)) = sil; 0x004670fe cmp edi, 0x16 | | if (edi < 0x16) { 0x00467101 jb 0x467265 | goto label_15; | } 0x00467107 lea rsi, [rcx - 2] | rsi = rcx - 2; 0x0046710b imul rdi, rdx, 0x51eb851f | rdi = rdx * 0x51eb851f; 0x00467112 mov rbp, rdi | 0x00467115 shr rbp, 0x3f | rbp >>= 0x3f; 0x00467119 sar rdi, 0x25 | rdi >>= 0x25; 0x0046711d add edi, ebp | edi += ebp; 0x0046711f movsxd rdi, edi | rdi = (int64_t) edi; 0x00467122 imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00467129 mov rbx, rbp | rbx = rbp; 0x0046712c shr rbx, 0x3f | rbx >>= 0x3f; 0x00467130 sar rbp, 0x22 | rbp >>= 0x22; 0x00467134 add ebp, ebx | ebp += ebx; 0x00467136 add ebp, ebp | ebp += ebp; 0x00467138 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x0046713c sub edi, ebp | edi -= ebp; 0x0046713e add dil, 0x30 | dil += 0x30; 0x00467142 mov byte [r12 + rcx - 3], dil | *((r12 + rcx - 3)) = dil; 0x00467147 cmp rsi, 0x16 | | if (rsi < 0x16) { 0x0046714b jb 0x467265 | goto label_15; | } 0x00467151 lea rsi, [rcx - 3] | rsi = rcx - 3; 0x00467155 imul rdi, rdx, 0x10624dd3 | rdi = rdx * 0x10624dd3; 0x0046715c mov rbp, rdi | 0x0046715f shr rbp, 0x3f | rbp >>= 0x3f; 0x00467163 sar rdi, 0x26 | rdi >>= 0x26; 0x00467167 add edi, ebp | edi += ebp; 0x00467169 movsxd rdi, edi | rdi = (int64_t) edi; 0x0046716c imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00467173 mov rbx, rbp | rbx = rbp; 0x00467176 shr rbx, 0x3f | rbx >>= 0x3f; 0x0046717a sar rbp, 0x22 | rbp >>= 0x22; 0x0046717e add ebp, ebx | ebp += ebx; 0x00467180 add ebp, ebp | ebp += ebp; 0x00467182 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x00467186 sub edi, ebp | edi -= ebp; 0x00467188 add dil, 0x30 | dil += 0x30; 0x0046718c mov byte [r12 + rcx - 4], dil | *((r12 + rcx - 4)) = dil; 0x00467191 cmp rsi, 0x16 | | if (rsi < 0x16) { 0x00467195 jb 0x467265 | goto label_15; | } 0x0046719b lea rsi, [rcx - 4] | rsi = rcx - 4; 0x0046719f imul rdi, rdx, 0x68db8bad | rdi = rdx * 0x68db8bad; 0x004671a6 mov rbp, rdi | 0x004671a9 shr rbp, 0x3f | rbp >>= 0x3f; 0x004671ad sar rdi, 0x2c | rdi >>= 0x2c; 0x004671b1 add edi, ebp | edi += ebp; 0x004671b3 movsxd rdi, edi | rdi = (int64_t) edi; 0x004671b6 imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x004671bd mov rbx, rbp | rbx = rbp; 0x004671c0 shr rbx, 0x3f | rbx >>= 0x3f; 0x004671c4 sar rbp, 0x22 | rbp >>= 0x22; 0x004671c8 add ebp, ebx | ebp += ebx; 0x004671ca add ebp, ebp | ebp += ebp; 0x004671cc lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x004671d0 sub edi, ebp | edi -= ebp; 0x004671d2 add dil, 0x30 | dil += 0x30; 0x004671d6 mov byte [r12 + rcx - 5], dil | *((r12 + rcx - 5)) = dil; 0x004671db cmp rsi, 0x16 | | if (rsi < 0x16) { 0x004671df jb 0x467265 | goto label_15; | } 0x004671e5 lea rsi, [rcx - 5] | rsi = rcx - 5; 0x004671e9 imul rdi, rdx, 0x14f8b589 | rdi = rdx * 0x14f8b589; 0x004671f0 mov rbp, rdi | 0x004671f3 shr rbp, 0x3f | rbp >>= 0x3f; 0x004671f7 sar rdi, 0x2d | rdi >>= 0x2d; 0x004671fb add edi, ebp | edi += ebp; 0x004671fd movsxd rdi, edi | rdi = (int64_t) edi; 0x00467200 imul rbp, rdi, 0x66666667 | rbp = rdi * 0x66666667; 0x00467207 mov rbx, rbp | rbx = rbp; 0x0046720a shr rbx, 0x3f | rbx >>= 0x3f; 0x0046720e sar rbp, 0x22 | rbp >>= 0x22; 0x00467212 add ebp, ebx | ebp += ebx; 0x00467214 add ebp, ebp | ebp += ebp; 0x00467216 lea ebp, [rbp + rbp*4] | ebp = rbp + rbp*4; 0x0046721a sub edi, ebp | edi -= ebp; 0x0046721c add dil, 0x30 | dil += 0x30; 0x00467220 mov byte [rcx + r12 - 6], dil | *((rcx + r12 - 6)) = dil; 0x00467225 cmp rsi, 0x16 | | if (rsi < 0x16) { 0x00467229 jb 0x467265 | goto label_15; | } 0x0046722b imul rdx, rdx, 0x431bde83 | rdx *= 0x431bde83; 0x00467232 mov rsi, rdx | rsi = rdx; 0x00467235 shr rsi, 0x3f | rsi >>= 0x3f; 0x00467239 sar rdx, 0x32 | rdx >>= 0x32; 0x0046723d add edx, esi | edx += esi; 0x0046723f movsxd rdx, edx | rdx = (int64_t) edx; 0x00467242 imul rsi, rdx, 0x66666667 | rsi = rdx * 0x66666667; 0x00467249 mov rdi, rsi | rdi = rsi; 0x0046724c shr rdi, 0x3f | rdi >>= 0x3f; 0x00467250 shr rsi, 0x22 | rsi >>= 0x22; 0x00467254 add esi, edi | esi += edi; 0x00467256 add esi, esi | esi += esi; 0x00467258 lea esi, [rsi + rsi*4] | esi = rsi * 5; 0x0046725b sub edx, esi | edx -= esi; 0x0046725d add dl, 0x30 | dl += 0x30; 0x00467260 mov byte [rcx + r12 - 7], dl | *((rcx + r12 - 7)) = dl; | } | label_15: 0x00467265 mov ecx, r15d | ecx = r15d; 0x00467268 add rax, rcx | rax += rcx; | label_14: 0x0046726b sub eax, r12d | eax -= r12d; 0x0046726e add rsp, 0x28 | 0x00467272 pop rbx | 0x00467273 pop r12 | 0x00467275 pop r13 | 0x00467277 pop r14 | 0x00467279 pop r15 | 0x0046727b pop rbp | 0x0046727c ret | return rax; | label_12: 0x0046727d cmp r15d, 2 | | if (r15d > 2) { 0x00467281 ja 0x46729c | goto label_16; | } 0x00467283 cmp r15d, 2 | | if (r15d != 2) { 0x00467287 jne 0x4672ac | goto label_17; | } 0x00467289 mov r13d, 0xd1b71759 | r13d = 0xd1b71759; 0x0046728f imul r13, rax | r13 *= rax; 0x00467293 shr r13, 0x2d | r13 >>= 0x2d; 0x00467297 jmp 0x467092 | | } while (1); | label_16: 0x0046729c imul r13, rax, 0x10624dd3 | r13 = rax * 0x10624dd3; 0x004672a3 shr r13, 0x26 | r13 >>= 0x26; 0x004672a7 jmp 0x467092 | goto label_0; | label_17: 0x004672ac shr r13d, 5 | r13d >>= 5; 0x004672b0 imul r13, r13, 0xa7c5ac5 | r13 *= 0xa7c5ac5; 0x004672b7 shr r13, 0x27 | r13 >>= 0x27; 0x004672bb jmp 0x467092 | goto label_0; | label_7: 0x004672c0 mov edi, 0x6f73bc | 0x004672c5 call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004672ca mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x004672d2 mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x004672db mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x004672e3 mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x004672ec mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x004672f0 mov rdi, rsp | rdi = rsp; 0x004672f3 call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x004672f8 mov rax, qword [r14] | rax = *(r14); 0x004672fb mov rcx, rax | rcx = *(r14); 0x004672fe shr rcx, 0x20 | rcx >>= 0x20; 0x00467302 shl rax, 0x25 | rax <<= 0x25; 0x00467306 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x00467310 add rdx, rax | rdx += rax; 0x00467313 imul rax, rcx, 0x3e8 | rax = rcx * 0x3e8; 0x0046731a movabs rbx, 0x8000000000000000 | rbx = 0x8000000000000000; 0x00467324 or rbx, rdx | rbx |= rdx; 0x00467327 or rbx, rax | rbx |= rax; 0x0046732a jmp 0x466d33 | goto label_1; | label_8: 0x0046732f mov edi, 0x6f73bc | 0x00467334 call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00467339 mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00467341 mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x0046734a mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x00467352 mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x0046735b mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x0046735f mov rdi, rsp | rdi = rsp; 0x00467362 call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00467367 mov eax, dword [r14 + 4] | eax = *((r14 + 4)); 0x0046736b imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x00467372 movabs rcx, 0xffffffe000000000 | rcx = 0xffffffe000000000; 0x0046737c or rcx, rax | rcx |= rax; 0x0046737f jmp 0x466e5b | goto label_2; | label_9: 0x00467384 mov edi, 0x6f73bc | 0x00467389 call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0046738e mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00467396 mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x0046739f mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x004673a7 mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x004673b0 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x004673b4 mov rdi, rsp | rdi = rsp; 0x004673b7 call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x004673bc mov eax, dword [r14 + 4] | eax = *((r14 + 4)); 0x004673c0 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x004673c7 movabs rcx, 0xffffffe000000000 | rcx = 0xffffffe000000000; 0x004673d1 or rcx, rax | rcx |= rax; 0x004673d4 jmp 0x466ec6 | goto label_3; | label_10: 0x004673d9 mov edi, 0x6f73bc | 0x004673de call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004673e3 mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x004673eb mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x004673f4 mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x004673fc mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x00467405 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x00467409 mov rdi, rsp | rdi = rsp; 0x0046740c call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00467411 mov eax, dword [r14 + 4] | eax = *((r14 + 4)); 0x00467415 imul rcx, rax, 0x3e8 | rcx = rax * 0x3e8; 0x0046741c movabs rax, 0xffffffe000000000 | rax = 0xffffffe000000000; 0x00467426 or rax, rcx | rax |= rcx; 0x00467429 jmp 0x466f48 | goto label_4; | label_11: 0x0046742e movabs rbx, 0xffffffe000000000 | rbx = 0xffffffe000000000; 0x00467438 mov edi, 0x6f73bc | 0x0046743d call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00467442 mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0046744a mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x00467453 mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x0046745b mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x00467464 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x00467468 mov rdi, rsp | rdi = rsp; 0x0046746b call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00467470 mov rcx, qword [r14] | rcx = *(r14); 0x00467473 mov rax, rcx | rax = *(r14); 0x00467476 shr rax, 0x20 | rax >>= 0x20; 0x0046747a imul rbp, rax, 0x3e8 | rbp = rax * 0x3e8; 0x00467481 or rbp, rbx | rbp |= rbx; 0x00467484 test rcx, rcx | | if (rcx < 0) { 0x00467487 js 0x466fa5 | goto label_5; | } 0x0046748d mov edi, 0x6f73bc | 0x00467492 call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00467497 mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0046749f mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x004674a8 mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x004674b0 mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x004674b9 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x004674bd mov rdi, rsp | rdi = rsp; 0x004674c0 call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x004674c5 mov eax, dword [r14 + 4] | eax = *((r14 + 4)); 0x004674c9 imul rcx, rax, 0x3e8 | rcx = rax * 0x3e8; 0x004674d0 or rcx, rbx | rcx |= rbx; 0x004674d3 jmp 0x466fa5 | goto label_5; | label_13: 0x004674d8 mov edi, 0x6f73bc | 0x004674dd call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004674e2 mov qword [rsp], 0x49a5a5 | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x004674ea mov qword [rsp + 8], 0x49a5db | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x004674f3 mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x004674fb mov qword [rsp + 0x18], 0x4cd41a | *((rsp + 0x18)) = "R-INV"; 0x00467504 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x00467508 mov rdi, rsp | rdi = rsp; 0x0046750b call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00467510 mov eax, dword [r14 + 4] | eax = *((r14 + 4)); 0x00467514 imul rcx, rax, 0x3e8 | rcx = rax * 0x3e8; 0x0046751b movabs rax, 0xffffffe000000000 | rax = 0xffffffe000000000; 0x00467525 or rax, rcx | rax |= rcx; 0x00467528 jmp 0x467031 | goto label_6; | }