; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/assume @ 0x443e30 */ | #include | ; (fcn) method.BloombergLP::bdlb::BitStringUtil.orEqual_unsigned_long__unsigned_long__unsigned_long_const__unsigned_long__unsigned_long_ () | int64_t method_BloombergLP::bdlb::BitStringUtil_orEqual_unsigned_long_unsigned_long_unsigned_long_const_unsigned_long_unsigned_long_ (uint32_t arg5, uint32_t arg4, int64_t arg3, uint32_t arg2, int64_t arg1) { | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlb::BitStringUtil::orEqual(unsigned long*, unsigned long, unsigned long const*, unsigned long, unsigned long) */ 0x00443e30 push rbp | 0x00443e31 push r15 | 0x00443e33 push r14 | 0x00443e35 push r13 | 0x00443e37 push r12 | 0x00443e39 push rbx | 0x00443e3a mov r15, rcx | r15 = rcx; 0x00443e3d mov r14, rsi | r14 = rsi; 0x00443e40 shr r14, 6 | r14 >>= 6; 0x00443e44 lea r12, [rdi + r14*8] | r12 = rdi + r14*8; 0x00443e48 mov r9d, esi | r9d = esi; 0x00443e4b and r9d, 0x3f | r9d &= 0x3f; 0x00443e4f mov rbp, r12 | 0x00443e52 shr rbp, 3 | rbp >>= 3; 0x00443e56 mov r10, rcx | r10 = rcx; 0x00443e59 shr r10, 6 | r10 >>= 6; 0x00443e5d lea r11, [rdx + r10*8] | r11 = rdx + r10*8; 0x00443e61 and ecx, 0x3f | ecx &= 0x3f; 0x00443e64 mov rbx, r11 | rbx = r11; 0x00443e67 shr rbx, 3 | rbx >>= 3; 0x00443e6b sub rbp, rbx | rbp -= rbx; 0x00443e6e mov ebx, r9d | ebx = r9d; 0x00443e71 sub ebx, ecx | ebx -= ecx; 0x00443e73 xor eax, eax | eax = 0; 0x00443e75 cmp ebx, 0x3f | 0x00443e78 seta al | al = (ebx > 0x3f) ? 1 : 0; 0x00443e7b sub rbp, rax | rbp -= rax; 0x00443e7e test rbp, rbp | | if (rbp <= 0) { 0x00443e81 jg 0x443e9d | 0x00443e83 lea eax, [rbx + 0x40] | eax = rbx + 0x40; 0x00443e86 cmp ebx, 0x40 | | if (ebx < 0x40) { 0x00443e89 cmovb eax, ebx | eax = ebx; | } 0x00443e8c test eax, eax | | if (eax == 0) { 0x00443e8e je 0x443fe8 | goto label_3; | } 0x00443e94 test rbp, rbp | | if (rbp != 0) { 0x00443e97 jne 0x443fe8 | goto label_3; | } | } 0x00443e9d test r8, r8 | | if (r8 == 0) { 0x00443ea0 je 0x444869 | goto label_4; | } 0x00443ea6 add rsi, r8 | rsi += r8; 0x00443ea9 mov rbp, rsi | 0x00443eac shr rbp, 6 | rbp >>= 6; 0x00443eb0 mov qword [rsp - 0x30], rdi | *((rsp - 0x30)) = rdi; 0x00443eb5 lea r14, [rdi + rbp*8] | r14 = rdi + rbp*8; 0x00443eb9 and esi, 0x3f | esi &= 0x3f; 0x00443ebc add r15, r8 | r15 += r8; 0x00443ebf mov rbx, r15 | rbx = r15; 0x00443ec2 shr rbx, 6 | rbx >>= 6; 0x00443ec6 lea r13, [rdx + rbx*8] | r13 = rdx + rbx*8; 0x00443eca and r15d, 0x3f | r15d &= 0x3f; | if (r15d != 0) { 0x00443ece je 0x443f6b | 0x00443ed4 mov r9d, r15d | r9d = r15d; 0x00443ed7 cmp r9, r8 | | if (r9 >= r8) { 0x00443eda jae 0x444053 | goto label_5; | } 0x00443ee0 mov rdi, rbp | rdi = rbp; 0x00443ee3 lea eax, [rsi + 0x40] | eax = rsi + 0x40; 0x00443ee6 cmp esi, r15d | | if (esi >= r15d) { 0x00443ee9 cmovae eax, esi | eax = esi; | } 0x00443eec sbb r12, r12 | r12 -= r12; 0x00443eef mov esi, eax | esi = eax; 0x00443ef1 sub esi, r15d | esi -= r15d; 0x00443ef4 mov rax, r13 | rax = r13; 0x00443ef7 lea r13, [r14 + r12*8] | r13 = r14 + r12*8; 0x00443efb mov qword [rsp - 0x28], rax | *((rsp - 0x28)) = rax; 0x00443f00 mov r11, qword [rax] | r11 = *(rax); 0x00443f03 mov ecx, 0x40 | ecx = 0x40; 0x00443f08 sub ecx, esi | ecx -= esi; 0x00443f0a sub r15d, ecx | r15d -= ecx; | if (r15d <= 0) { 0x00443f0d jbe 0x4440da | goto label_6; | } 0x00443f13 mov rax, r14 | rax = r14; 0x00443f16 mov r10, 0xffffffffffffffff | r10 = 0xffffffffffffffff; 0x00443f1d shl r10, cl | r10 <<= cl; 0x00443f20 mov rbp, 0xffffffffffffffff | 0x00443f27 mov ecx, ecx | 0x00443f29 mov qword [rsp - 0x18], rcx | *((rsp - 0x18)) = rcx; 0x00443f2e mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x00443f35 test esi, esi | | if (esi != 0) { 0x00443f37 je 0x443f3f | 0x00443f39 not r10 | r10 = ~r10; 0x00443f3c mov r14, r10 | r14 = r10; | } 0x00443f3f and r14, r11 | r14 &= r11; 0x00443f42 mov ecx, esi | ecx = esi; 0x00443f44 shl r14, cl | r14 <<= cl; 0x00443f47 or qword [r13], r14 | *(r13) |= r14; 0x00443f4b mov rcx, qword [rsp - 0x18] | rcx = *((rsp - 0x18)); 0x00443f50 shr r11, cl | r11 >>= cl; 0x00443f53 mov ecx, r15d | ecx = r15d; 0x00443f56 shl rbp, cl | rbp <<= cl; 0x00443f59 add r13, 8 | r13 += 8; 0x00443f5d not rbp | rbp = ~rbp; 0x00443f60 and rbp, r11 | rbp &= r11; 0x00443f63 mov r14, rax | r14 = rax; 0x00443f66 jmp 0x4440f5 | goto label_7; | } 0x00443f6b xor r12d, r12d | r12d = 0; 0x00443f6e test esi, esi | | if (esi == 0) { 0x00443f70 je 0x44410c | goto label_8; | } | label_0: 0x00443f76 cmp r8, 0x40 | | if (r8 < 0x40) { 0x00443f7a jb 0x44412a | goto label_9; | } 0x00443f80 mov r10d, 0x40 | r10d = 0x40; 0x00443f86 sub r10d, esi | r10d -= esi; 0x00443f89 mov r9d, esi | r9d = esi; 0x00443f8c mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x00443f93 mov ecx, esi | ecx = esi; 0x00443f95 shl r11, cl | r11 <<= cl; 0x00443f98 not r11 | r11 = ~r11; 0x00443f9b add rbp, r12 | rbp += r12; 0x00443f9e mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00443fa3 lea rdi, [rax + rbp*8] | rdi = rax + rbp*8; 0x00443fa7 lea rdx, [rdx + rbx*8 - 8] | rdx = rdx + rbx*8 - 8; 0x00443fac xor ecx, ecx | ecx = 0; 0x00443fae nop | | do { 0x00443fb0 mov rbx, rcx | rbx = rcx; 0x00443fb3 mov rax, qword [rdx + rcx*8] | rax = *((rdx + rcx*8)); 0x00443fb7 mov rbp, rax | 0x00443fba mov ecx, r9d | ecx = r9d; 0x00443fbd shl rbp, cl | rbp <<= cl; 0x00443fc0 or qword [rdi + rbx*8 - 8], rbp | *((rdi + rbx*8 - 8)) |= rbp; 0x00443fc5 mov ecx, r10d | ecx = r10d; 0x00443fc8 shr rax, cl | rax >>= cl; 0x00443fcb and rax, r11 | rax &= r11; 0x00443fce or qword [rdi + rbx*8], rax | *((rdi + rbx*8)) |= rax; 0x00443fd2 lea rcx, [rbx - 1] | rcx = rbx - 1; 0x00443fd6 add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00443fda cmp r8, 0x3f | 0x00443fde ja 0x443fb0 | | } while (r8 > 0x3f); 0x00443fe0 add r12, rcx | r12 += rcx; 0x00443fe3 jmp 0x444648 | goto label_10; | label_3: 0x00443fe8 test r8, r8 | | if (r8 == 0) { 0x00443feb je 0x444869 | goto label_4; | } 0x00443ff1 test ecx, ecx | | if (ecx == 0) { 0x00443ff3 je 0x444152 | goto label_11; | } 0x00443ff9 mov ebp, 0x40 | 0x00443ffe mov eax, 0x40 | eax = 0x40; 0x00444003 sub eax, ecx | eax -= ecx; 0x00444005 mov rsi, qword [r11] | rsi = *(r11); 0x00444008 shr rsi, cl | rsi >>= cl; 0x0044400b cmp rax, r8 | | if (rax >= r8) { 0x0044400e jae 0x4441f4 | goto label_12; | } 0x00444014 cmp r9d, ecx | | if (r9d <= ecx) { 0x00444017 jbe 0x44429f | goto label_13; | } 0x0044401d mov rbx, rsi | rbx = rsi; 0x00444020 mov ecx, r9d | ecx = r9d; 0x00444023 shl rbx, cl | rbx <<= cl; 0x00444026 sub ebp, r9d | ebp -= r9d; 0x00444029 or qword [r12], rbx | *(r12) |= rbx; 0x0044402d mov ecx, ebp | ecx = ebp; 0x0044402f shr rsi, cl | rsi >>= cl; 0x00444032 mov ecx, eax | ecx = eax; 0x00444034 sub ecx, ebp | ecx -= ebp; 0x00444036 mov rbp, 0xffffffffffffffff | 0x0044403d shl rbp, cl | rbp <<= cl; 0x00444040 not rbp | rbp = ~rbp; 0x00444043 and rbp, rsi | rbp &= rsi; 0x00444046 or qword [r12 + 8], rbp | *((r12 + 8)) |= rbp; 0x0044404b add r9d, eax | r9d += eax; 0x0044404e jmp 0x4442c2 | goto label_14; | label_5: 0x00444053 lea edx, [rsi + 0x40] | edx = rsi + 0x40; 0x00444056 cmp esi, r8d | | if (esi >= r8d) { 0x00444059 cmovae edx, esi | edx = esi; | } 0x0044405c sbb r10, r10 | r10 -= r10; 0x0044405f sub r15d, r8d | r15d -= r8d; 0x00444062 mov rbp, qword [r13] | rbp = *(r13); 0x00444066 mov ecx, r15d | ecx = r15d; 0x00444069 shr rbp, cl | rbp >>= cl; 0x0044406c test r8d, r8d | | if (r8d == 0) { 0x0044406f je 0x444869 | goto label_4; | } 0x00444075 sub edx, r8d | edx -= r8d; 0x00444078 mov eax, 0x40 | eax = 0x40; 0x0044407d sub eax, edx | eax -= edx; 0x0044407f cmp eax, r8d | | if (eax >= r8d) { 0x00444082 jae 0x444131 | goto label_15; | } 0x00444088 mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x0044408f mov ecx, eax | ecx = eax; 0x00444091 shl rdi, cl | rdi <<= cl; 0x00444094 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x0044409b mov r9d, eax | r9d = eax; 0x0044409e mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004440a5 test edx, edx | | if (edx != 0) { 0x004440a7 je 0x4440af | 0x004440a9 not rdi | rdi = ~rdi; 0x004440ac mov rsi, rdi | rsi = rdi; | } 0x004440af and rsi, rbp | rsi &= rbp; 0x004440b2 mov ecx, edx | ecx = edx; 0x004440b4 shl rsi, cl | rsi <<= cl; 0x004440b7 or qword [r14 + r10*8], rsi | *((r14 + r10*8)) |= rsi; 0x004440bb mov ecx, r9d | ecx = r9d; 0x004440be shr rbp, cl | rbp >>= cl; 0x004440c1 sub r8d, eax | r8d -= eax; 0x004440c4 mov ecx, r8d | ecx = r8d; 0x004440c7 shl rbx, cl | rbx <<= cl; 0x004440ca not rbx | rbx = ~rbx; 0x004440cd and rbx, rbp | rbx &= rbp; 0x004440d0 or qword [r14 + r10*8 + 8], rbx | *((r14 + r10*8 + 8)) |= rbx; 0x004440d5 jmp 0x444869 | goto label_4; | label_6: 0x004440da mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004440e1 mov ecx, r9d | ecx = r9d; 0x004440e4 shl rax, cl | rax <<= cl; 0x004440e7 not rax | rax = ~rax; 0x004440ea and r11, rax | r11 &= rax; 0x004440ed mov ecx, esi | ecx = esi; 0x004440ef shl r11, cl | r11 <<= cl; 0x004440f2 mov rbp, r11 | | label_7: 0x004440f5 or qword [r13], rbp | *(r13) |= rbp; 0x004440f9 sub r8, r9 | r8 -= r9; 0x004440fc mov r13, qword [rsp - 0x28] | r13 = *((rsp - 0x28)); 0x00444101 mov rbp, rdi | 0x00444104 test esi, esi | | if (esi != 0) { 0x00444106 jne 0x443f76 | goto label_0; | } | label_8: 0x0044410c cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00444110 jb 0x44412a | 0x00444112 lea r11, [r8 - 0x40] | r11 = r8 - 0x40; 0x00444116 cmp r11, 0xc0 | | if (r11 >= 0xc0) { 0x0044411d jae 0x44425a | goto label_16; | } 0x00444123 xor ecx, ecx | ecx = 0; 0x00444125 jmp 0x444612 | goto label_17; | } | label_9: 0x0044412a xor ecx, ecx | ecx = 0; 0x0044412c jmp 0x444648 | goto label_10; | label_15: 0x00444131 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444138 mov ecx, r8d | ecx = r8d; 0x0044413b shl rax, cl | rax <<= cl; 0x0044413e not rax | rax = ~rax; 0x00444141 and rbp, rax | rbp &= rax; 0x00444144 mov ecx, edx | ecx = edx; 0x00444146 shl rbp, cl | rbp <<= cl; 0x00444149 or qword [r14 + r10*8], rbp | *((r14 + r10*8)) |= rbp; 0x0044414d jmp 0x444869 | goto label_4; | label_11: 0x00444152 xor ebp, ebp | ebp = 0; 0x00444154 test r9d, r9d | | if (r9d == 0) { 0x00444157 je 0x4442e1 | goto label_18; | } | do { 0x0044415d mov rsi, rbp | rsi = rbp; 0x00444160 cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444164 jb 0x44441e | goto label_19; | } | label_1: 0x0044416a mov qword [rsp - 0x30], r11 | *((rsp - 0x30)) = r11; 0x0044416f mov qword [rsp - 0x28], r12 | *((rsp - 0x28)) = r12; 0x00444174 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x00444179 mov rdx, rdi | rdx = rdi; 0x0044417c mov r13d, 0x40 | r13d = 0x40; 0x00444182 mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x00444189 mov ecx, r9d | ecx = r9d; 0x0044418c shl r11, cl | r11 <<= cl; 0x0044418f sub r13d, r9d | r13d -= r9d; 0x00444192 mov r15d, r9d | r15d = r9d; 0x00444195 not r11 | r11 = ~r11; 0x00444198 lea rcx, [r8 - 0x40] | rcx = r8 - 0x40; 0x0044419c mov r12, rcx | r12 = rcx; 0x0044419f shr r12, 6 | r12 >>= 6; 0x004441a3 lea rax, [rsi + r14] | rax = rsi + r14; 0x004441a7 mov rax, qword [rdi + rax*8] | rax = *((rdi + rax*8)); 0x004441ab test cl, 0x40 | | if ((cl & 0x40) != 0) { 0x004441ae jne 0x4444e7 | goto label_20; | } 0x004441b4 mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x004441b9 mov rdx, qword [rcx + rbp*8] | rdx = *((rcx + rbp*8)); 0x004441bd mov rbx, rdx | rbx = *((rcx + rbp*8)); 0x004441c0 mov ecx, r15d | ecx = r15d; 0x004441c3 shl rbx, cl | rbx <<= cl; 0x004441c6 or rax, rbx | rax |= rbx; 0x004441c9 mov ecx, r13d | ecx = r13d; 0x004441cc shr rdx, cl | rdx >>= cl; 0x004441cf mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x004441d4 mov qword [rcx + rsi*8], rax | *((rcx + rsi*8)) = rax; 0x004441d8 and rdx, r11 | rdx &= r11; 0x004441db or rdx, qword [rcx + rsi*8 + 8] | rdx |= *((rcx + rsi*8 + 8)); 0x004441e0 mov qword [rcx + rsi*8 + 8], rdx | *((rcx + rsi*8 + 8)) = rdx; 0x004441e5 inc rsi | rsi++; 0x004441e8 lea rcx, [rbp + 1] | rcx = rbp + 1; 0x004441ec mov rax, rdx | rax = rdx; 0x004441ef jmp 0x4444ea | goto label_21; | label_12: 0x004441f4 test r8d, r8d | | if (r8d == 0) { 0x004441f7 je 0x444869 | goto label_4; | } 0x004441fd mov eax, 0x40 | eax = 0x40; 0x00444202 sub eax, r9d | eax -= r9d; 0x00444205 cmp eax, r8d | | if (eax >= r8d) { 0x00444208 jae 0x44459a | goto label_22; | } 0x0044420e mov rbp, 0xffffffffffffffff | 0x00444215 mov ecx, eax | ecx = eax; 0x00444217 shl rbp, cl | rbp <<= cl; 0x0044421a mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00444221 mov edx, eax | edx = eax; 0x00444223 test r9d, r9d | | if (r9d == 0) { 0x00444226 je 0x444874 | goto label_23; | } 0x0044422c not rbp | rbp = ~rbp; | label_2: 0x0044422f and rbp, rsi | rbp &= rsi; 0x00444232 mov ecx, r9d | ecx = r9d; 0x00444235 shl rbp, cl | rbp <<= cl; 0x00444238 or qword [r12], rbp | *(r12) |= rbp; 0x0044423c mov ecx, edx | ecx = edx; 0x0044423e shr rsi, cl | rsi >>= cl; 0x00444241 sub r8d, eax | r8d -= eax; 0x00444244 mov ecx, r8d | ecx = r8d; 0x00444247 shl rdi, cl | rdi <<= cl; 0x0044424a not rdi | rdi = ~rdi; 0x0044424d and rdi, rsi | rdi &= rsi; 0x00444250 or qword [r12 + 8], rdi | *((r12 + 8)) |= rdi; 0x00444255 jmp 0x444869 | goto label_4; | label_16: 0x0044425a shr r11, 6 | r11 >>= 6; 0x0044425e mov r15, rbp | r15 = rbp; 0x00444261 lea rax, [r12 + rbp] | rax = r12 + rbp; 0x00444265 mov rcx, r11 | rcx = r11; 0x00444268 not rcx | rcx = ~rcx; 0x0044426b lea rbp, [rax + rcx] | rbp = rax + rcx; 0x0044426f mov rdi, qword [rsp - 0x30] | rdi = *((rsp - 0x30)); 0x00444274 lea rbp, [rdi + rbp*8] | rbp = rdi + rbp*8; 0x00444278 cmp rbp, r13 | | if (rbp >= r13) { 0x0044427b jae 0x444426 | goto label_24; | } 0x00444281 lea rbp, [rdi + rax*8] | rbp = rdi + rax*8; 0x00444285 add rcx, rbx | rcx += rbx; 0x00444288 lea rcx, [rdx + rcx*8] | rcx = rdx + rcx*8; 0x0044428c cmp rcx, rbp | | if (rcx >= rbp) { 0x0044428f jae 0x444426 | goto label_24; | } 0x00444295 xor ecx, ecx | ecx = 0; 0x00444297 mov rbp, r15 | 0x0044429a jmp 0x444612 | goto label_17; | label_13: 0x0044429f mov rbp, 0xffffffffffffffff | 0x004442a6 mov ecx, eax | ecx = eax; 0x004442a8 shl rbp, cl | rbp <<= cl; 0x004442ab not rbp | rbp = ~rbp; 0x004442ae and rsi, rbp | rsi &= rbp; 0x004442b1 mov ecx, r9d | ecx = r9d; 0x004442b4 shl rsi, cl | rsi <<= cl; 0x004442b7 lea ecx, [rax + r9] | ecx = rax + r9; 0x004442bb or qword [r12], rsi | *(r12) |= rsi; 0x004442bf mov r9d, ecx | r9d = ecx; | label_14: 0x004442c2 sub r8, rax | r8 -= rax; 0x004442c5 mov ebp, 1 | 0x004442ca cmp r9d, 0x40 | | if (r9d < 0x40) { 0x004442ce jb 0x444412 | goto label_25; | } 0x004442d4 add r9d, 0xffffffc0 | r9d += 0xffffffc0; 0x004442d8 test r9d, r9d | 0x004442db jne 0x44415d | | } while (r9d != 0); | label_18: 0x004442e1 mov qword [rsp - 0x30], r11 | *((rsp - 0x30)) = r11; 0x004442e6 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x004442eb xor r9d, r9d | r9d = 0; 0x004442ee mov r13b, 1 | r13b = 1; 0x004442f1 cmp r8, 0x40 | | if (r8 < 0x40) { 0x004442f5 jb 0x444592 | goto label_26; | } 0x004442fb mov qword [rsp - 0x28], r12 | *((rsp - 0x28)) = r12; 0x00444300 lea rax, [r8 - 0x40] | rax = r8 - 0x40; 0x00444304 mov r11, rax | r11 = rax; 0x00444307 shr r11, 6 | r11 >>= 6; 0x0044430b lea r15, [r11 + rbp] | r15 = r11 + rbp; 0x0044430f mov r12, rbp | r12 = rbp; 0x00444312 cmp rax, 0xc0 | 0x00444318 mov qword [rsp - 0x20], rbp | *((rsp - 0x20)) = rbp; | if (rax < 0xc0) { 0x0044431d jb 0x44473c | goto label_27; | } 0x00444323 lea rax, [rbp + r14] | rax = rbp + r14; 0x00444328 lea rdx, [rdi + rax*8] | rdx = rdi + rax*8; 0x0044432c lea rbx, [rbp + r10] | rbx = rbp + r10; 0x00444331 lea rbp, [rbx + r11] | rbp = rbx + r11; 0x00444335 mov rsi, qword [rsp - 0x18] | rsi = *((rsp - 0x18)); 0x0044433a lea rbp, [rsi + rbp*8 + 8] | rbp = rsi + rbp*8 + 8; 0x0044433f cmp rdx, rbp | 0x00444342 mov r12, qword [rsp - 0x20] | r12 = *((rsp - 0x20)); | if (rdx < rbp) { 0x00444347 jae 0x444363 | 0x00444349 add rax, r11 | rax += r11; 0x0044434c lea rax, [rdi + rax*8 + 8] | rax = rdi + rax*8 + 8; 0x00444351 mov rdx, qword [rsp - 0x18] | rdx = *((rsp - 0x18)); 0x00444356 lea rdx, [rdx + rbx*8] | rdx = rdx + rbx*8; 0x0044435a cmp rdx, rax | | if (rdx < rax) { 0x0044435d jb 0x44473c | goto label_27; | } | } 0x00444363 lea rcx, [r11 + 1] | rcx = r11 + 1; 0x00444367 mov rdx, rcx | rdx = rcx; 0x0044436a and rdx, 0xfffffffffffffffc | rdx &= 0xfffffffffffffffc; 0x0044436e lea rax, [rdx - 4] | rax = rdx - 4; 0x00444372 mov r12, rax | r12 = rax; 0x00444375 shr r12, 2 | r12 >>= 2; 0x00444379 inc r12 | r12++; 0x0044437c test rax, rax | | if (rax == 0) { 0x0044437f je 0x4446ef | goto label_28; | } 0x00444385 mov qword [rsp - 0x10], rdx | *((rsp - 0x10)) = rdx; 0x0044438a mov qword [rsp - 8], rcx | *((rsp - 8)) = rcx; 0x0044438f mov rax, r12 | rax = r12; 0x00444392 and rax, 0xfffffffffffffffe | rax &= 0xfffffffffffffffe; 0x00444396 neg rax | rax = -rax; 0x00444399 xor ebp, ebp | ebp = 0; 0x0044439b mov rbx, qword [rsp - 0x28] | rbx = *((rsp - 0x28)); 0x004443a0 mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); 0x004443a5 mov rcx, qword [rsp - 0x20] | rcx = *((rsp - 0x20)); | do { 0x004443aa mov rdx, rcx | rdx = *((rsp - 0x20)); 0x004443ad or rdx, rbp | rdx |= rbp; 0x004443b0 movups xmm0, xmmword [rsi + rdx*8] | __asm ("movups xmm0, xmmword [rsi + rdx*8]"); 0x004443b4 movups xmm1, xmmword [rsi + rdx*8 + 0x10] | __asm ("movups xmm1, xmmword [rsi + rdx*8 + 0x10]"); 0x004443b9 movups xmm2, xmmword [rbx + rdx*8] | __asm ("movups xmm2, xmmword [rbx + rdx*8]"); 0x004443bd orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x004443c0 movups xmm0, xmmword [rbx + rdx*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rdx*8 + 0x10]"); 0x004443c5 orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x004443c8 movups xmmword [rbx + rdx*8], xmm2 | __asm ("movups xmmword [rbx + rdx*8], xmm2"); 0x004443cc movups xmmword [rbx + rdx*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rdx*8 + 0x10], xmm0"); 0x004443d1 lea rdx, [rbp + 4] | rdx = rbp + 4; 0x004443d5 or rdx, rcx | rdx |= rcx; 0x004443d8 movups xmm0, xmmword [rsi + rdx*8] | __asm ("movups xmm0, xmmword [rsi + rdx*8]"); 0x004443dc movups xmm1, xmmword [rsi + rdx*8 + 0x10] | __asm ("movups xmm1, xmmword [rsi + rdx*8 + 0x10]"); 0x004443e1 movups xmm2, xmmword [rbx + rdx*8] | __asm ("movups xmm2, xmmword [rbx + rdx*8]"); 0x004443e5 orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x004443e8 movups xmm0, xmmword [rbx + rdx*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rdx*8 + 0x10]"); 0x004443ed orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x004443f0 movups xmmword [rbx + rdx*8], xmm2 | __asm ("movups xmmword [rbx + rdx*8], xmm2"); 0x004443f4 movups xmmword [rbx + rdx*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rdx*8 + 0x10], xmm0"); 0x004443f9 add rbp, 8 | rbp += 8; 0x004443fd add rax, 2 | rax += 2; 0x00444401 jne 0x4443aa | | } while (rax != 0); 0x00444403 mov rcx, qword [rsp - 8] | rcx = *((rsp - 8)); 0x00444408 mov rdx, qword [rsp - 0x10] | rdx = *((rsp - 0x10)); 0x0044440d jmp 0x4446f6 | goto label_29; | label_25: 0x00444412 xor esi, esi | esi = 0; 0x00444414 cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00444418 jae 0x44416a | goto label_1; | } | label_19: 0x0044441e xor r13d, r13d | r13d = 0; 0x00444421 jmp 0x4447e0 | goto label_30; | label_24: 0x00444426 inc r11 | r11++; 0x00444429 mov r9, r11 | r9 = r11; 0x0044442c and r9, 0xfffffffffffffffc | r9 &= 0xfffffffffffffffc; 0x00444430 lea rcx, [r9 - 4] | rcx = r9 - 4; 0x00444434 mov r10, rcx | r10 = rcx; 0x00444437 shr r10, 2 | r10 >>= 2; 0x0044443b inc r10 | r10++; 0x0044443e test rcx, rcx | | if (rcx == 0) { 0x00444441 je 0x4445bc | goto label_31; | } 0x00444447 mov qword [rsp - 0x28], r13 | *((rsp - 0x28)) = r13; 0x0044444c mov rdi, r14 | rdi = r14; 0x0044444f mov r14, rdx | r14 = rdx; 0x00444452 lea r13, [rdx + rbx*8 - 0x10] | r13 = rdx + rbx*8 - 0x10; 0x00444457 mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x0044445c lea rax, [rcx + rax*8 - 0x10] | rax = rcx + rax*8 - 0x10; 0x00444461 mov rcx, r10 | rcx = r10; 0x00444464 and rcx, 0xfffffffffffffffe | rcx &= 0xfffffffffffffffe; 0x00444468 neg rcx | rcx = -rcx; 0x0044446b mov rbp, 0xfffffffffffffffe | 0x00444472 nop word cs:[rax + rax] | 0x0044447c nop dword [rax] | | do { 0x00444480 movups xmm0, xmmword [r13 + rbp*8] | __asm ("movups xmm0, xmmword [r13 + rbp*8]"); 0x00444486 movups xmm1, xmmword [r13 + rbp*8 + 0x10] | __asm ("movups xmm1, xmmword [r13 + rbp*8 + 0x10]"); 0x0044448c movups xmm2, xmmword [rax + rbp*8 - 0x20] | __asm ("movups xmm2, xmmword [rax + rbp*8 - 0x20]"); 0x00444491 movups xmm3, xmmword [rax + rbp*8 - 0x10] | __asm ("movups xmm3, xmmword [rax + rbp*8 - 0x10]"); 0x00444496 movups xmm4, xmmword [rax + rbp*8] | __asm ("movups xmm4, xmmword [rax + rbp*8]"); 0x0044449a orps xmm4, xmm0 | __asm ("orps xmm4, xmm0"); 0x0044449d movups xmm0, xmmword [rax + rbp*8 + 0x10] | __asm ("movups xmm0, xmmword [rax + rbp*8 + 0x10]"); 0x004444a2 orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x004444a5 movups xmmword [rax + rbp*8 + 0x10], xmm0 | __asm ("movups xmmword [rax + rbp*8 + 0x10], xmm0"); 0x004444aa movups xmmword [rax + rbp*8], xmm4 | __asm ("movups xmmword [rax + rbp*8], xmm4"); 0x004444ae movups xmm0, xmmword [r13 + rbp*8 - 0x20] | __asm ("movups xmm0, xmmword [r13 + rbp*8 - 0x20]"); 0x004444b4 orps xmm0, xmm2 | __asm ("orps xmm0, xmm2"); 0x004444b7 movups xmm1, xmmword [r13 + rbp*8 - 0x10] | __asm ("movups xmm1, xmmword [r13 + rbp*8 - 0x10]"); 0x004444bd orps xmm1, xmm3 | __asm ("orps xmm1, xmm3"); 0x004444c0 movups xmmword [rax + rbp*8 - 0x10], xmm1 | __asm ("movups xmmword [rax + rbp*8 - 0x10], xmm1"); 0x004444c5 movups xmmword [rax + rbp*8 - 0x20], xmm0 | __asm ("movups xmmword [rax + rbp*8 - 0x20], xmm0"); 0x004444ca add rbp, 0xfffffffffffffff8 | rbp += 0xfffffffffffffff8; 0x004444ce add rcx, 2 | rcx += 2; 0x004444d2 jne 0x444480 | | } while (rcx != 0); 0x004444d4 inc rbp | rbp++; 0x004444d7 mov rdx, r14 | rdx = r14; 0x004444da mov r14, rdi | r14 = rdi; 0x004444dd mov r13, qword [rsp - 0x28] | r13 = *((rsp - 0x28)); 0x004444e2 jmp 0x4445c3 | goto label_32; | label_20: 0x004444e7 mov rcx, rbp | rcx = rbp; | label_21: 0x004444ea add rbp, r12 | rbp += r12; 0x004444ed test r12, r12 | | if (r12 == 0) { 0x004444f0 je 0x444583 | goto label_33; | } 0x004444f6 add r10, rcx | r10 += rcx; 0x004444f9 mov rdx, qword [rsp - 0x18] | rdx = *((rsp - 0x18)); 0x004444fe lea rdx, [rdx + r10*8 + 8] | rdx = rdx + r10*8 + 8; 0x00444503 mov qword [rsp - 0x20], rbp | *((rsp - 0x20)) = rbp; 0x00444508 mov r12, rbp | r12 = rbp; 0x0044450b sub r12, rcx | r12 -= rcx; 0x0044450e inc r12 | r12++; 0x00444511 mov r10, rsi | r10 = rsi; 0x00444514 add r14, rsi | r14 += rsi; 0x00444517 lea rbx, [rdi + r14*8 + 0x10] | rbx = rdi + r14*8 + 0x10; 0x0044451c xor edi, edi | edi = 0; 0x0044451e nop | | do { 0x00444520 mov rsi, qword [rdx + rdi*8 - 8] | rsi = *((rdx + rdi*8 - 8)); 0x00444525 mov rbp, rsi | 0x00444528 mov ecx, r15d | ecx = r15d; 0x0044452b shl rbp, cl | rbp <<= cl; 0x0044452e or rbp, rax | rbp |= rax; 0x00444531 mov qword [rbx + rdi*8 - 0x10], rbp | *((rbx + rdi*8 - 0x10)) = rbp; 0x00444536 mov ecx, r13d | ecx = r13d; 0x00444539 shr rsi, cl | rsi >>= cl; 0x0044453c and rsi, r11 | rsi &= r11; 0x0044453f or rsi, qword [rbx + rdi*8 - 8] | rsi |= *((rbx + rdi*8 - 8)); 0x00444544 mov qword [rbx + rdi*8 - 8], rsi | *((rbx + rdi*8 - 8)) = rsi; 0x00444549 mov rax, qword [rdx + rdi*8] | rax = *((rdx + rdi*8)); 0x0044454d mov rbp, rax | 0x00444550 mov ecx, r15d | ecx = r15d; 0x00444553 shl rbp, cl | rbp <<= cl; 0x00444556 or rbp, rsi | rbp |= rsi; 0x00444559 mov ecx, r13d | ecx = r13d; 0x0044455c shr rax, cl | rax >>= cl; 0x0044455f mov qword [rbx + rdi*8 - 8], rbp | *((rbx + rdi*8 - 8)) = rbp; 0x00444564 and rax, r11 | rax &= r11; 0x00444567 or rax, qword [rbx + rdi*8] | rax |= *((rbx + rdi*8)); 0x0044456b mov qword [rbx + rdi*8], rax | *((rbx + rdi*8)) = rax; 0x0044456f add rdi, 2 | rdi += 2; 0x00444573 cmp r12, rdi | 0x00444576 jne 0x444520 | | } while (r12 != rdi); 0x00444578 mov rsi, r10 | rsi = r10; 0x0044457b add rsi, rdi | rsi += rdi; 0x0044457e mov rbp, qword [rsp - 0x20] | rbp = *((rsp - 0x20)); | label_33: 0x00444583 inc rbp | rbp++; 0x00444586 and r8d, 0x3f | r8d &= 0x3f; 0x0044458a xor r13d, r13d | r13d = 0; 0x0044458d jmp 0x4447d6 | goto label_34; | label_26: 0x00444592 mov rsi, rbp | rsi = rbp; 0x00444595 jmp 0x4447db | goto label_35; | label_22: 0x0044459a mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004445a1 mov ecx, r8d | ecx = r8d; 0x004445a4 shl rax, cl | rax <<= cl; 0x004445a7 not rax | rax = ~rax; 0x004445aa and rsi, rax | rsi &= rax; 0x004445ad mov ecx, r9d | ecx = r9d; 0x004445b0 shl rsi, cl | rsi <<= cl; 0x004445b3 or qword [r12], rsi | *(r12) |= rsi; 0x004445b7 jmp 0x444869 | goto label_4; | label_31: 0x004445bc mov rbp, 0xffffffffffffffff | | label_32: 0x004445c3 mov rax, r9 | rax = r9; 0x004445c6 shl rax, 6 | rax <<= 6; 0x004445ca test r10b, 1 | | if ((r10b & 1) != 0) { 0x004445ce je 0x4445fe | 0x004445d0 lea rcx, [r12 + rbp] | rcx = r12 + rbp; 0x004445d4 movups xmm0, xmmword [r13 + rbp*8 - 0x18] | __asm ("movups xmm0, xmmword [r13 + rbp*8 - 0x18]"); 0x004445da movups xmm1, xmmword [r13 + rbp*8 - 8] | __asm ("movups xmm1, xmmword [r13 + rbp*8 - 8]"); 0x004445e0 movups xmm2, xmmword [r14 + rcx*8 - 0x18] | __asm ("movups xmm2, xmmword [r14 + rcx*8 - 0x18]"); 0x004445e6 orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x004445e9 movups xmm0, xmmword [r14 + rcx*8 - 8] | __asm ("movups xmm0, xmmword [r14 + rcx*8 - 8]"); 0x004445ef orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x004445f2 movups xmmword [r14 + rcx*8 - 8], xmm0 | __asm ("movups xmmword [r14 + rcx*8 - 8], xmm0"); 0x004445f8 movups xmmword [r14 + rcx*8 - 0x18], xmm2 | __asm ("movups xmmword [r14 + rcx*8 - 0x18], xmm2"); | } 0x004445fe sub r12, r9 | r12 -= r9; 0x00444601 mov rcx, r9 | rcx = r9; 0x00444604 neg rcx | rcx = -rcx; 0x00444607 sub r8, rax | r8 -= rax; 0x0044460a cmp r11, r9 | 0x0044460d mov rbp, r15 | | if (r11 == r9) { 0x00444610 je 0x444648 | goto label_10; | } | label_17: 0x00444612 mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00444617 lea rax, [rax + rbp*8 - 8] | rax = rax + rbp*8 - 8; 0x0044461c lea rdx, [rdx + rbx*8 - 8] | rdx = rdx + rbx*8 - 8; 0x00444621 nop word cs:[rax + rax] | 0x0044462b nop dword [rax + rax] | | do { 0x00444630 mov rdi, qword [rdx + rcx*8] | rdi = *((rdx + rcx*8)); 0x00444634 or qword [rax + r12*8], rdi | *((rax + r12*8)) |= rdi; 0x00444638 dec rcx | rcx--; 0x0044463b dec r12 | r12--; 0x0044463e add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00444642 cmp r8, 0x3f | 0x00444646 ja 0x444630 | | } while (r8 > 0x3f); | label_10: 0x00444648 test r8d, r8d | | if (r8d == 0) { 0x0044464b je 0x444869 | goto label_4; | } 0x00444651 mov eax, esi | eax = esi; 0x00444653 or eax, 0x40 | eax |= 0x40; 0x00444656 cmp esi, r8d | | if (esi >= r8d) { 0x00444659 cmovae eax, esi | eax = esi; | } 0x0044465c sbb r12, 0 | 0x00444660 mov rdi, qword [r13 + rcx*8 - 8] | rdi = *((r13 + rcx*8 - 8)); 0x00444665 mov ecx, r8d | ecx = r8d; 0x00444668 neg cl | cl = -cl; 0x0044466a shr rdi, cl | rdi >>= cl; 0x0044466d sub eax, r8d | eax -= r8d; 0x00444670 mov edx, 0x40 | edx = 0x40; 0x00444675 sub edx, eax | edx -= eax; 0x00444677 cmp edx, r8d | | if (edx < r8d) { 0x0044467a jae 0x4446ce | 0x0044467c mov rbp, 0xffffffffffffffff | 0x00444683 mov ecx, edx | ecx = edx; 0x00444685 shl rbp, cl | rbp <<= cl; 0x00444688 mov r10, 0xffffffffffffffff | r10 = 0xffffffffffffffff; 0x0044468f mov r9d, edx | r9d = edx; 0x00444692 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00444699 test eax, eax | | if (eax != 0) { 0x0044469b je 0x4446a3 | 0x0044469d not rbp | rbp = ~rbp; 0x004446a0 mov rsi, rbp | rsi = rbp; | } 0x004446a3 and rsi, rdi | rsi &= rdi; 0x004446a6 mov ecx, eax | ecx = eax; 0x004446a8 shl rsi, cl | rsi <<= cl; 0x004446ab or qword [r14 + r12*8], rsi | *((r14 + r12*8)) |= rsi; 0x004446af mov ecx, r9d | ecx = r9d; 0x004446b2 shr rdi, cl | rdi >>= cl; 0x004446b5 sub r8d, edx | r8d -= edx; 0x004446b8 mov ecx, r8d | ecx = r8d; 0x004446bb shl r10, cl | r10 <<= cl; 0x004446be not r10 | r10 = ~r10; 0x004446c1 and r10, rdi | r10 &= rdi; 0x004446c4 or qword [r14 + r12*8 + 8], r10 | *((r14 + r12*8 + 8)) |= r10; 0x004446c9 jmp 0x444869 | goto label_4; | } 0x004446ce mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x004446d5 mov ecx, r8d | ecx = r8d; 0x004446d8 shl rdx, cl | rdx <<= cl; 0x004446db not rdx | rdx = ~rdx; 0x004446de and rdi, rdx | rdi &= rdx; 0x004446e1 mov ecx, eax | ecx = eax; 0x004446e3 shl rdi, cl | rdi <<= cl; 0x004446e6 or qword [r14 + r12*8], rdi | *((r14 + r12*8)) |= rdi; 0x004446ea jmp 0x444869 | goto label_4; | label_28: 0x004446ef xor ebp, ebp | ebp = 0; 0x004446f1 mov rbx, qword [rsp - 0x28] | rbx = *((rsp - 0x28)); | label_29: 0x004446f6 test r12b, 1 | | if ((r12b & 1) != 0) { 0x004446fa je 0x444727 | 0x004446fc or rbp, qword [rsp - 0x20] | rbp |= *((rsp - 0x20)); 0x00444701 mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00444706 movups xmm0, xmmword [rax + rbp*8] | __asm ("movups xmm0, xmmword [rax + rbp*8]"); 0x0044470a movups xmm1, xmmword [rax + rbp*8 + 0x10] | __asm ("movups xmm1, xmmword [rax + rbp*8 + 0x10]"); 0x0044470f movups xmm2, xmmword [rbx + rbp*8] | __asm ("movups xmm2, xmmword [rbx + rbp*8]"); 0x00444713 orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x00444716 movups xmm0, xmmword [rbx + rbp*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rbp*8 + 0x10]"); 0x0044471b orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x0044471e movups xmmword [rbx + rbp*8], xmm2 | __asm ("movups xmmword [rbx + rbp*8], xmm2"); 0x00444722 movups xmmword [rbx + rbp*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rbp*8 + 0x10], xmm0"); | } 0x00444727 mov rax, qword [rsp - 0x20] | rax = *((rsp - 0x20)); 0x0044472c lea r12, [rax + rdx] | r12 = rax + rdx; 0x00444730 mov rsi, r12 | rsi = r12; 0x00444733 cmp rcx, rdx | | if (rcx == rdx) { 0x00444736 je 0x4447cc | goto label_36; | } | label_27: 0x0044473c mov ebp, r15d | 0x0044473f sub ebp, r12d | ebp -= r12d; 0x00444742 inc ebp | ebp++; 0x00444744 mov rcx, r15 | rcx = r15; 0x00444747 mov rax, r15 | rax = r15; 0x0044474a sub rax, r12 | rax -= r12; 0x0044474d and rbp, 3 | rbp &= 3; | if (rbp == 0) { 0x00444751 je 0x444774 | goto label_37; | } 0x00444753 mov rbx, r12 | rbx = r12; 0x00444756 mov r15, qword [rsp - 0x28] | r15 = *((rsp - 0x28)); 0x0044475b mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); | do { 0x00444760 lea r12, [rbx + 1] | r12 = rbx + 1; 0x00444764 mov rdx, qword [rsi + rbx*8] | rdx = *((rsi + rbx*8)); 0x00444768 or qword [r15 + rbx*8], rdx | *((r15 + rbx*8)) |= rdx; 0x0044476c mov rbx, r12 | rbx = r12; 0x0044476f dec rbp | rbp--; 0x00444772 jne 0x444760 | | } while (rbp != 0); | label_37: 0x00444774 mov rsi, r12 | rsi = r12; 0x00444777 cmp rax, 3 | 0x0044477b mov rax, qword [rsp - 0x20] | rax = *((rsp - 0x20)); 0x00444780 mov r15, rcx | r15 = rcx; | if (rax < 3) { 0x00444783 jb 0x4447cc | goto label_36; | } 0x00444785 lea rax, [rax + r11 + 1] | rax = rax + r11 + 1; 0x0044478a mov rcx, qword [rsp - 0x18] | rcx = *((rsp - 0x18)); 0x0044478f lea rcx, [rcx + r10*8 + 0x18] | rcx = rcx + r10*8 + 0x18; 0x00444794 lea rdx, [rdi + r14*8 + 0x18] | rdx = rdi + r14*8 + 0x18; | do { 0x00444799 mov rdi, qword [rcx + r12*8 - 0x18] | rdi = *((rcx + r12*8 - 0x18)); 0x0044479e or qword [rdx + r12*8 - 0x18], rdi | *((rdx + r12*8 - 0x18)) |= rdi; 0x004447a3 mov rdi, qword [rcx + r12*8 - 0x10] | rdi = *((rcx + r12*8 - 0x10)); 0x004447a8 or qword [rdx + r12*8 - 0x10], rdi | *((rdx + r12*8 - 0x10)) |= rdi; 0x004447ad mov rdi, qword [rcx + r12*8 - 8] | rdi = *((rcx + r12*8 - 8)); 0x004447b2 or qword [rdx + r12*8 - 8], rdi | *((rdx + r12*8 - 8)) |= rdi; 0x004447b7 lea rsi, [r12 + 4] | rsi = r12 + 4; 0x004447bc mov rdi, qword [rcx + r12*8] | rdi = *((rcx + r12*8)); 0x004447c0 or qword [rdx + r12*8], rdi | *((rdx + r12*8)) |= rdi; 0x004447c4 mov r12, rsi | r12 = rsi; 0x004447c7 cmp rax, rsi | 0x004447ca jne 0x444799 | | } while (rax != rsi); | label_36: 0x004447cc inc r15 | r15++; 0x004447cf and r8d, 0x3f | r8d &= 0x3f; 0x004447d3 mov rbp, r15 | | label_34: 0x004447d6 mov r12, qword [rsp - 0x28] | r12 = *((rsp - 0x28)); | label_35: 0x004447db mov r11, qword [rsp - 0x30] | r11 = *((rsp - 0x30)); | label_30: 0x004447e0 test r8, r8 | | if (r8 != 0) { 0x004447e3 je 0x444869 | 0x004447e9 mov rdi, qword [r11 + rbp*8] | rdi = *((r11 + rbp*8)); 0x004447ed mov eax, 0x40 | eax = 0x40; 0x004447f2 sub eax, r9d | eax -= r9d; 0x004447f5 cmp eax, r8d | | if (eax < r8d) { 0x004447f8 jae 0x44484c | 0x004447fa mov r10, rsi | r10 = rsi; 0x004447fd mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00444804 mov ecx, eax | ecx = eax; 0x00444806 shl rsi, cl | rsi <<= cl; 0x00444809 mov edx, eax | edx = eax; 0x0044480b mov rbp, 0xffffffffffffffff | 0x00444812 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x00444819 test r13b, r13b | | if (r13b == 0) { 0x0044481c jne 0x444824 | 0x0044481e not rsi | rsi = ~rsi; 0x00444821 mov rbx, rsi | rbx = rsi; | } 0x00444824 and rbx, rdi | rbx &= rdi; 0x00444827 mov ecx, r9d | ecx = r9d; 0x0044482a shl rbx, cl | rbx <<= cl; 0x0044482d or qword [r12 + r10*8], rbx | *((r12 + r10*8)) |= rbx; 0x00444831 mov ecx, edx | ecx = edx; 0x00444833 shr rdi, cl | rdi >>= cl; 0x00444836 sub r8d, eax | r8d -= eax; 0x00444839 mov ecx, r8d | ecx = r8d; 0x0044483c shl rbp, cl | rbp <<= cl; 0x0044483f not rbp | rbp = ~rbp; 0x00444842 and rbp, rdi | rbp &= rdi; 0x00444845 or qword [r12 + r10*8 + 8], rbp | *((r12 + r10*8 + 8)) |= rbp; 0x0044484a jmp 0x444869 | | } else { 0x0044484c mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444853 mov ecx, r8d | ecx = r8d; 0x00444856 shl rax, cl | rax <<= cl; 0x00444859 not rax | rax = ~rax; 0x0044485c and rdi, rax | rdi &= rax; 0x0044485f mov ecx, r9d | ecx = r9d; 0x00444862 shl rdi, cl | rdi <<= cl; 0x00444865 or qword [r12 + rsi*8], rdi | *((r12 + rsi*8)) |= rdi; | } | } | label_4: 0x00444869 pop rbx | 0x0044486a pop r12 | r12 = rbx; 0x0044486c pop r13 | r13 = rbx; 0x0044486e pop r14 | r14 = rbx; 0x00444870 pop r15 | r15 = rbx; 0x00444872 pop rbp | 0x00444873 ret | return rax; | label_23: 0x00444874 movabs rbp, 0x7fffffffffffffff | 0x0044487e jmp 0x44422f | goto label_2; | }