; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/assume @ 0x444890 */ | #include | ; (fcn) method.BloombergLP::bdlb::BitStringUtil.xorEqual_unsigned_long__unsigned_long__unsigned_long_const__unsigned_long__unsigned_long_ () | int64_t method_BloombergLP::bdlb::BitStringUtil_xorEqual_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::xorEqual(unsigned long*, unsigned long, unsigned long const*, unsigned long, unsigned long) */ 0x00444890 push rbp | 0x00444891 push r15 | 0x00444893 push r14 | 0x00444895 push r13 | 0x00444897 push r12 | 0x00444899 push rbx | 0x0044489a mov r15, rcx | r15 = rcx; 0x0044489d mov r14, rsi | r14 = rsi; 0x004448a0 shr r14, 6 | r14 >>= 6; 0x004448a4 lea r12, [rdi + r14*8] | r12 = rdi + r14*8; 0x004448a8 mov r9d, esi | r9d = esi; 0x004448ab and r9d, 0x3f | r9d &= 0x3f; 0x004448af mov rbp, r12 | 0x004448b2 shr rbp, 3 | rbp >>= 3; 0x004448b6 mov r10, rcx | r10 = rcx; 0x004448b9 shr r10, 6 | r10 >>= 6; 0x004448bd lea r11, [rdx + r10*8] | r11 = rdx + r10*8; 0x004448c1 and ecx, 0x3f | ecx &= 0x3f; 0x004448c4 mov rbx, r11 | rbx = r11; 0x004448c7 shr rbx, 3 | rbx >>= 3; 0x004448cb sub rbp, rbx | rbp -= rbx; 0x004448ce mov ebx, r9d | ebx = r9d; 0x004448d1 sub ebx, ecx | ebx -= ecx; 0x004448d3 xor eax, eax | eax = 0; 0x004448d5 cmp ebx, 0x3f | 0x004448d8 seta al | al = (ebx > 0x3f) ? 1 : 0; 0x004448db sub rbp, rax | rbp -= rax; 0x004448de test rbp, rbp | | if (rbp <= 0) { 0x004448e1 jg 0x4448fd | 0x004448e3 lea eax, [rbx + 0x40] | eax = rbx + 0x40; 0x004448e6 cmp ebx, 0x40 | | if (ebx < 0x40) { 0x004448e9 cmovb eax, ebx | eax = ebx; | } 0x004448ec test eax, eax | | if (eax == 0) { 0x004448ee je 0x444a48 | goto label_3; | } 0x004448f4 test rbp, rbp | | if (rbp != 0) { 0x004448f7 jne 0x444a48 | goto label_3; | } | } 0x004448fd test r8, r8 | | if (r8 == 0) { 0x00444900 je 0x4452c9 | goto label_4; | } 0x00444906 add rsi, r8 | rsi += r8; 0x00444909 mov rbp, rsi | 0x0044490c shr rbp, 6 | rbp >>= 6; 0x00444910 mov qword [rsp - 0x30], rdi | *((rsp - 0x30)) = rdi; 0x00444915 lea r14, [rdi + rbp*8] | r14 = rdi + rbp*8; 0x00444919 and esi, 0x3f | esi &= 0x3f; 0x0044491c add r15, r8 | r15 += r8; 0x0044491f mov rbx, r15 | rbx = r15; 0x00444922 shr rbx, 6 | rbx >>= 6; 0x00444926 lea r13, [rdx + rbx*8] | r13 = rdx + rbx*8; 0x0044492a and r15d, 0x3f | r15d &= 0x3f; | if (r15d != 0) { 0x0044492e je 0x4449cb | 0x00444934 mov r9d, r15d | r9d = r15d; 0x00444937 cmp r9, r8 | | if (r9 >= r8) { 0x0044493a jae 0x444ab3 | goto label_5; | } 0x00444940 mov rdi, rbp | rdi = rbp; 0x00444943 lea eax, [rsi + 0x40] | eax = rsi + 0x40; 0x00444946 cmp esi, r15d | | if (esi >= r15d) { 0x00444949 cmovae eax, esi | eax = esi; | } 0x0044494c sbb r12, r12 | r12 -= r12; 0x0044494f mov esi, eax | esi = eax; 0x00444951 sub esi, r15d | esi -= r15d; 0x00444954 mov rax, r13 | rax = r13; 0x00444957 lea r13, [r14 + r12*8] | r13 = r14 + r12*8; 0x0044495b mov qword [rsp - 0x28], rax | *((rsp - 0x28)) = rax; 0x00444960 mov r11, qword [rax] | r11 = *(rax); 0x00444963 mov ecx, 0x40 | ecx = 0x40; 0x00444968 sub ecx, esi | ecx -= esi; 0x0044496a sub r15d, ecx | r15d -= ecx; | if (r15d <= 0) { 0x0044496d jbe 0x444b3a | goto label_6; | } 0x00444973 mov rax, r14 | rax = r14; 0x00444976 mov r10, 0xffffffffffffffff | r10 = 0xffffffffffffffff; 0x0044497d shl r10, cl | r10 <<= cl; 0x00444980 mov rbp, 0xffffffffffffffff | 0x00444987 mov ecx, ecx | 0x00444989 mov qword [rsp - 0x18], rcx | *((rsp - 0x18)) = rcx; 0x0044498e mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x00444995 test esi, esi | | if (esi != 0) { 0x00444997 je 0x44499f | 0x00444999 not r10 | r10 = ~r10; 0x0044499c mov r14, r10 | r14 = r10; | } 0x0044499f and r14, r11 | r14 &= r11; 0x004449a2 mov ecx, esi | ecx = esi; 0x004449a4 shl r14, cl | r14 <<= cl; 0x004449a7 xor qword [r13], r14 | *(r13) ^= r14; 0x004449ab mov rcx, qword [rsp - 0x18] | rcx = *((rsp - 0x18)); 0x004449b0 shr r11, cl | r11 >>= cl; 0x004449b3 mov ecx, r15d | ecx = r15d; 0x004449b6 shl rbp, cl | rbp <<= cl; 0x004449b9 add r13, 8 | r13 += 8; 0x004449bd not rbp | rbp = ~rbp; 0x004449c0 and rbp, r11 | rbp &= r11; 0x004449c3 mov r14, rax | r14 = rax; 0x004449c6 jmp 0x444b55 | goto label_7; | } 0x004449cb xor r12d, r12d | r12d = 0; 0x004449ce test esi, esi | | if (esi == 0) { 0x004449d0 je 0x444b6c | goto label_8; | } | label_0: 0x004449d6 cmp r8, 0x40 | | if (r8 < 0x40) { 0x004449da jb 0x444b8a | goto label_9; | } 0x004449e0 mov r10d, 0x40 | r10d = 0x40; 0x004449e6 sub r10d, esi | r10d -= esi; 0x004449e9 mov r9d, esi | r9d = esi; 0x004449ec mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x004449f3 mov ecx, esi | ecx = esi; 0x004449f5 shl r11, cl | r11 <<= cl; 0x004449f8 not r11 | r11 = ~r11; 0x004449fb add rbp, r12 | rbp += r12; 0x004449fe mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00444a03 lea rdi, [rax + rbp*8] | rdi = rax + rbp*8; 0x00444a07 lea rdx, [rdx + rbx*8 - 8] | rdx = rdx + rbx*8 - 8; 0x00444a0c xor ecx, ecx | ecx = 0; 0x00444a0e nop | | do { 0x00444a10 mov rbx, rcx | rbx = rcx; 0x00444a13 mov rax, qword [rdx + rcx*8] | rax = *((rdx + rcx*8)); 0x00444a17 mov rbp, rax | 0x00444a1a mov ecx, r9d | ecx = r9d; 0x00444a1d shl rbp, cl | rbp <<= cl; 0x00444a20 xor qword [rdi + rbx*8 - 8], rbp | *((rdi + rbx*8 - 8)) ^= rbp; 0x00444a25 mov ecx, r10d | ecx = r10d; 0x00444a28 shr rax, cl | rax >>= cl; 0x00444a2b and rax, r11 | rax &= r11; 0x00444a2e xor qword [rdi + rbx*8], rax | *((rdi + rbx*8)) ^= rax; 0x00444a32 lea rcx, [rbx - 1] | rcx = rbx - 1; 0x00444a36 add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00444a3a cmp r8, 0x3f | 0x00444a3e ja 0x444a10 | | } while (r8 > 0x3f); 0x00444a40 add r12, rcx | r12 += rcx; 0x00444a43 jmp 0x4450a8 | goto label_10; | label_3: 0x00444a48 test r8, r8 | | if (r8 == 0) { 0x00444a4b je 0x4452c9 | goto label_4; | } 0x00444a51 test ecx, ecx | | if (ecx == 0) { 0x00444a53 je 0x444bb2 | goto label_11; | } 0x00444a59 mov ebp, 0x40 | 0x00444a5e mov eax, 0x40 | eax = 0x40; 0x00444a63 sub eax, ecx | eax -= ecx; 0x00444a65 mov rsi, qword [r11] | rsi = *(r11); 0x00444a68 shr rsi, cl | rsi >>= cl; 0x00444a6b cmp rax, r8 | | if (rax >= r8) { 0x00444a6e jae 0x444c54 | goto label_12; | } 0x00444a74 cmp r9d, ecx | | if (r9d <= ecx) { 0x00444a77 jbe 0x444cff | goto label_13; | } 0x00444a7d mov rbx, rsi | rbx = rsi; 0x00444a80 mov ecx, r9d | ecx = r9d; 0x00444a83 shl rbx, cl | rbx <<= cl; 0x00444a86 sub ebp, r9d | ebp -= r9d; 0x00444a89 xor qword [r12], rbx | *(r12) ^= rbx; 0x00444a8d mov ecx, ebp | ecx = ebp; 0x00444a8f shr rsi, cl | rsi >>= cl; 0x00444a92 mov ecx, eax | ecx = eax; 0x00444a94 sub ecx, ebp | ecx -= ebp; 0x00444a96 mov rbp, 0xffffffffffffffff | 0x00444a9d shl rbp, cl | rbp <<= cl; 0x00444aa0 not rbp | rbp = ~rbp; 0x00444aa3 and rbp, rsi | rbp &= rsi; 0x00444aa6 xor qword [r12 + 8], rbp | *((r12 + 8)) ^= rbp; 0x00444aab add r9d, eax | r9d += eax; 0x00444aae jmp 0x444d22 | goto label_14; | label_5: 0x00444ab3 lea edx, [rsi + 0x40] | edx = rsi + 0x40; 0x00444ab6 cmp esi, r8d | | if (esi >= r8d) { 0x00444ab9 cmovae edx, esi | edx = esi; | } 0x00444abc sbb r10, r10 | r10 -= r10; 0x00444abf sub r15d, r8d | r15d -= r8d; 0x00444ac2 mov rbp, qword [r13] | rbp = *(r13); 0x00444ac6 mov ecx, r15d | ecx = r15d; 0x00444ac9 shr rbp, cl | rbp >>= cl; 0x00444acc test r8d, r8d | | if (r8d == 0) { 0x00444acf je 0x4452c9 | goto label_4; | } 0x00444ad5 sub edx, r8d | edx -= r8d; 0x00444ad8 mov eax, 0x40 | eax = 0x40; 0x00444add sub eax, edx | eax -= edx; 0x00444adf cmp eax, r8d | | if (eax >= r8d) { 0x00444ae2 jae 0x444b91 | goto label_15; | } 0x00444ae8 mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00444aef mov ecx, eax | ecx = eax; 0x00444af1 shl rdi, cl | rdi <<= cl; 0x00444af4 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x00444afb mov r9d, eax | r9d = eax; 0x00444afe mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00444b05 test edx, edx | | if (edx != 0) { 0x00444b07 je 0x444b0f | 0x00444b09 not rdi | rdi = ~rdi; 0x00444b0c mov rsi, rdi | rsi = rdi; | } 0x00444b0f and rsi, rbp | rsi &= rbp; 0x00444b12 mov ecx, edx | ecx = edx; 0x00444b14 shl rsi, cl | rsi <<= cl; 0x00444b17 xor qword [r14 + r10*8], rsi | *((r14 + r10*8)) ^= rsi; 0x00444b1b mov ecx, r9d | ecx = r9d; 0x00444b1e shr rbp, cl | rbp >>= cl; 0x00444b21 sub r8d, eax | r8d -= eax; 0x00444b24 mov ecx, r8d | ecx = r8d; 0x00444b27 shl rbx, cl | rbx <<= cl; 0x00444b2a not rbx | rbx = ~rbx; 0x00444b2d and rbx, rbp | rbx &= rbp; 0x00444b30 xor qword [r14 + r10*8 + 8], rbx | *((r14 + r10*8 + 8)) ^= rbx; 0x00444b35 jmp 0x4452c9 | goto label_4; | label_6: 0x00444b3a mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444b41 mov ecx, r9d | ecx = r9d; 0x00444b44 shl rax, cl | rax <<= cl; 0x00444b47 not rax | rax = ~rax; 0x00444b4a and r11, rax | r11 &= rax; 0x00444b4d mov ecx, esi | ecx = esi; 0x00444b4f shl r11, cl | r11 <<= cl; 0x00444b52 mov rbp, r11 | | label_7: 0x00444b55 xor qword [r13], rbp | *(r13) ^= rbp; 0x00444b59 sub r8, r9 | r8 -= r9; 0x00444b5c mov r13, qword [rsp - 0x28] | r13 = *((rsp - 0x28)); 0x00444b61 mov rbp, rdi | 0x00444b64 test esi, esi | | if (esi != 0) { 0x00444b66 jne 0x4449d6 | goto label_0; | } | label_8: 0x00444b6c cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00444b70 jb 0x444b8a | 0x00444b72 lea r11, [r8 - 0x40] | r11 = r8 - 0x40; 0x00444b76 cmp r11, 0xc0 | | if (r11 >= 0xc0) { 0x00444b7d jae 0x444cba | goto label_16; | } 0x00444b83 xor ecx, ecx | ecx = 0; 0x00444b85 jmp 0x445072 | goto label_17; | } | label_9: 0x00444b8a xor ecx, ecx | ecx = 0; 0x00444b8c jmp 0x4450a8 | goto label_10; | label_15: 0x00444b91 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444b98 mov ecx, r8d | ecx = r8d; 0x00444b9b shl rax, cl | rax <<= cl; 0x00444b9e not rax | rax = ~rax; 0x00444ba1 and rbp, rax | rbp &= rax; 0x00444ba4 mov ecx, edx | ecx = edx; 0x00444ba6 shl rbp, cl | rbp <<= cl; 0x00444ba9 xor qword [r14 + r10*8], rbp | *((r14 + r10*8)) ^= rbp; 0x00444bad jmp 0x4452c9 | goto label_4; | label_11: 0x00444bb2 xor ebp, ebp | ebp = 0; 0x00444bb4 test r9d, r9d | | if (r9d == 0) { 0x00444bb7 je 0x444d41 | goto label_18; | } | do { 0x00444bbd mov rsi, rbp | rsi = rbp; 0x00444bc0 cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444bc4 jb 0x444e7e | goto label_19; | } | label_1: 0x00444bca mov qword [rsp - 0x30], r11 | *((rsp - 0x30)) = r11; 0x00444bcf mov qword [rsp - 0x28], r12 | *((rsp - 0x28)) = r12; 0x00444bd4 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x00444bd9 mov rdx, rdi | rdx = rdi; 0x00444bdc mov r13d, 0x40 | r13d = 0x40; 0x00444be2 mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x00444be9 mov ecx, r9d | ecx = r9d; 0x00444bec shl r11, cl | r11 <<= cl; 0x00444bef sub r13d, r9d | r13d -= r9d; 0x00444bf2 mov r15d, r9d | r15d = r9d; 0x00444bf5 not r11 | r11 = ~r11; 0x00444bf8 lea rcx, [r8 - 0x40] | rcx = r8 - 0x40; 0x00444bfc mov r12, rcx | r12 = rcx; 0x00444bff shr r12, 6 | r12 >>= 6; 0x00444c03 lea rax, [rsi + r14] | rax = rsi + r14; 0x00444c07 mov rax, qword [rdi + rax*8] | rax = *((rdi + rax*8)); 0x00444c0b test cl, 0x40 | | if ((cl & 0x40) != 0) { 0x00444c0e jne 0x444f47 | goto label_20; | } 0x00444c14 mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x00444c19 mov rdx, qword [rcx + rbp*8] | rdx = *((rcx + rbp*8)); 0x00444c1d mov rbx, rdx | rbx = *((rcx + rbp*8)); 0x00444c20 mov ecx, r15d | ecx = r15d; 0x00444c23 shl rbx, cl | rbx <<= cl; 0x00444c26 xor rax, rbx | rax ^= rbx; 0x00444c29 mov ecx, r13d | ecx = r13d; 0x00444c2c shr rdx, cl | rdx >>= cl; 0x00444c2f mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x00444c34 mov qword [rcx + rsi*8], rax | *((rcx + rsi*8)) = rax; 0x00444c38 and rdx, r11 | rdx &= r11; 0x00444c3b xor rdx, qword [rcx + rsi*8 + 8] | rdx ^= *((rcx + rsi*8 + 8)); 0x00444c40 mov qword [rcx + rsi*8 + 8], rdx | *((rcx + rsi*8 + 8)) = rdx; 0x00444c45 inc rsi | rsi++; 0x00444c48 lea rcx, [rbp + 1] | rcx = rbp + 1; 0x00444c4c mov rax, rdx | rax = rdx; 0x00444c4f jmp 0x444f4a | goto label_21; | label_12: 0x00444c54 test r8d, r8d | | if (r8d == 0) { 0x00444c57 je 0x4452c9 | goto label_4; | } 0x00444c5d mov eax, 0x40 | eax = 0x40; 0x00444c62 sub eax, r9d | eax -= r9d; 0x00444c65 cmp eax, r8d | | if (eax >= r8d) { 0x00444c68 jae 0x444ffa | goto label_22; | } 0x00444c6e mov rbp, 0xffffffffffffffff | 0x00444c75 mov ecx, eax | ecx = eax; 0x00444c77 shl rbp, cl | rbp <<= cl; 0x00444c7a mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00444c81 mov edx, eax | edx = eax; 0x00444c83 test r9d, r9d | | if (r9d == 0) { 0x00444c86 je 0x4452d4 | goto label_23; | } 0x00444c8c not rbp | rbp = ~rbp; | label_2: 0x00444c8f and rbp, rsi | rbp &= rsi; 0x00444c92 mov ecx, r9d | ecx = r9d; 0x00444c95 shl rbp, cl | rbp <<= cl; 0x00444c98 xor qword [r12], rbp | *(r12) ^= rbp; 0x00444c9c mov ecx, edx | ecx = edx; 0x00444c9e shr rsi, cl | rsi >>= cl; 0x00444ca1 sub r8d, eax | r8d -= eax; 0x00444ca4 mov ecx, r8d | ecx = r8d; 0x00444ca7 shl rdi, cl | rdi <<= cl; 0x00444caa not rdi | rdi = ~rdi; 0x00444cad and rdi, rsi | rdi &= rsi; 0x00444cb0 xor qword [r12 + 8], rdi | *((r12 + 8)) ^= rdi; 0x00444cb5 jmp 0x4452c9 | goto label_4; | label_16: 0x00444cba shr r11, 6 | r11 >>= 6; 0x00444cbe mov r15, rbp | r15 = rbp; 0x00444cc1 lea rax, [r12 + rbp] | rax = r12 + rbp; 0x00444cc5 mov rcx, r11 | rcx = r11; 0x00444cc8 not rcx | rcx = ~rcx; 0x00444ccb lea rbp, [rax + rcx] | rbp = rax + rcx; 0x00444ccf mov rdi, qword [rsp - 0x30] | rdi = *((rsp - 0x30)); 0x00444cd4 lea rbp, [rdi + rbp*8] | rbp = rdi + rbp*8; 0x00444cd8 cmp rbp, r13 | | if (rbp >= r13) { 0x00444cdb jae 0x444e86 | goto label_24; | } 0x00444ce1 lea rbp, [rdi + rax*8] | rbp = rdi + rax*8; 0x00444ce5 add rcx, rbx | rcx += rbx; 0x00444ce8 lea rcx, [rdx + rcx*8] | rcx = rdx + rcx*8; 0x00444cec cmp rcx, rbp | | if (rcx >= rbp) { 0x00444cef jae 0x444e86 | goto label_24; | } 0x00444cf5 xor ecx, ecx | ecx = 0; 0x00444cf7 mov rbp, r15 | 0x00444cfa jmp 0x445072 | goto label_17; | label_13: 0x00444cff mov rbp, 0xffffffffffffffff | 0x00444d06 mov ecx, eax | ecx = eax; 0x00444d08 shl rbp, cl | rbp <<= cl; 0x00444d0b not rbp | rbp = ~rbp; 0x00444d0e and rsi, rbp | rsi &= rbp; 0x00444d11 mov ecx, r9d | ecx = r9d; 0x00444d14 shl rsi, cl | rsi <<= cl; 0x00444d17 lea ecx, [rax + r9] | ecx = rax + r9; 0x00444d1b xor qword [r12], rsi | *(r12) ^= rsi; 0x00444d1f mov r9d, ecx | r9d = ecx; | label_14: 0x00444d22 sub r8, rax | r8 -= rax; 0x00444d25 mov ebp, 1 | 0x00444d2a cmp r9d, 0x40 | | if (r9d < 0x40) { 0x00444d2e jb 0x444e72 | goto label_25; | } 0x00444d34 add r9d, 0xffffffc0 | r9d += 0xffffffc0; 0x00444d38 test r9d, r9d | 0x00444d3b jne 0x444bbd | | } while (r9d != 0); | label_18: 0x00444d41 mov qword [rsp - 0x30], r11 | *((rsp - 0x30)) = r11; 0x00444d46 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x00444d4b xor r9d, r9d | r9d = 0; 0x00444d4e mov r13b, 1 | r13b = 1; 0x00444d51 cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444d55 jb 0x444ff2 | goto label_26; | } 0x00444d5b mov qword [rsp - 0x28], r12 | *((rsp - 0x28)) = r12; 0x00444d60 lea rax, [r8 - 0x40] | rax = r8 - 0x40; 0x00444d64 mov r11, rax | r11 = rax; 0x00444d67 shr r11, 6 | r11 >>= 6; 0x00444d6b lea r15, [r11 + rbp] | r15 = r11 + rbp; 0x00444d6f mov r12, rbp | r12 = rbp; 0x00444d72 cmp rax, 0xc0 | 0x00444d78 mov qword [rsp - 0x20], rbp | *((rsp - 0x20)) = rbp; | if (rax < 0xc0) { 0x00444d7d jb 0x44519c | goto label_27; | } 0x00444d83 lea rax, [rbp + r14] | rax = rbp + r14; 0x00444d88 lea rdx, [rdi + rax*8] | rdx = rdi + rax*8; 0x00444d8c lea rbx, [rbp + r10] | rbx = rbp + r10; 0x00444d91 lea rbp, [rbx + r11] | rbp = rbx + r11; 0x00444d95 mov rsi, qword [rsp - 0x18] | rsi = *((rsp - 0x18)); 0x00444d9a lea rbp, [rsi + rbp*8 + 8] | rbp = rsi + rbp*8 + 8; 0x00444d9f cmp rdx, rbp | 0x00444da2 mov r12, qword [rsp - 0x20] | r12 = *((rsp - 0x20)); | if (rdx < rbp) { 0x00444da7 jae 0x444dc3 | 0x00444da9 add rax, r11 | rax += r11; 0x00444dac lea rax, [rdi + rax*8 + 8] | rax = rdi + rax*8 + 8; 0x00444db1 mov rdx, qword [rsp - 0x18] | rdx = *((rsp - 0x18)); 0x00444db6 lea rdx, [rdx + rbx*8] | rdx = rdx + rbx*8; 0x00444dba cmp rdx, rax | | if (rdx < rax) { 0x00444dbd jb 0x44519c | goto label_27; | } | } 0x00444dc3 lea rcx, [r11 + 1] | rcx = r11 + 1; 0x00444dc7 mov rdx, rcx | rdx = rcx; 0x00444dca and rdx, 0xfffffffffffffffc | rdx &= 0xfffffffffffffffc; 0x00444dce lea rax, [rdx - 4] | rax = rdx - 4; 0x00444dd2 mov r12, rax | r12 = rax; 0x00444dd5 shr r12, 2 | r12 >>= 2; 0x00444dd9 inc r12 | r12++; 0x00444ddc test rax, rax | | if (rax == 0) { 0x00444ddf je 0x44514f | goto label_28; | } 0x00444de5 mov qword [rsp - 0x10], rdx | *((rsp - 0x10)) = rdx; 0x00444dea mov qword [rsp - 8], rcx | *((rsp - 8)) = rcx; 0x00444def mov rax, r12 | rax = r12; 0x00444df2 and rax, 0xfffffffffffffffe | rax &= 0xfffffffffffffffe; 0x00444df6 neg rax | rax = -rax; 0x00444df9 xor ebp, ebp | ebp = 0; 0x00444dfb mov rbx, qword [rsp - 0x28] | rbx = *((rsp - 0x28)); 0x00444e00 mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); 0x00444e05 mov rcx, qword [rsp - 0x20] | rcx = *((rsp - 0x20)); | do { 0x00444e0a mov rdx, rcx | rdx = *((rsp - 0x20)); 0x00444e0d or rdx, rbp | rdx |= rbp; 0x00444e10 movups xmm0, xmmword [rsi + rdx*8] | __asm ("movups xmm0, xmmword [rsi + rdx*8]"); 0x00444e14 movups xmm1, xmmword [rsi + rdx*8 + 0x10] | __asm ("movups xmm1, xmmword [rsi + rdx*8 + 0x10]"); 0x00444e19 movups xmm2, xmmword [rbx + rdx*8] | __asm ("movups xmm2, xmmword [rbx + rdx*8]"); 0x00444e1d xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x00444e20 movups xmm0, xmmword [rbx + rdx*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rdx*8 + 0x10]"); 0x00444e25 xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x00444e28 movups xmmword [rbx + rdx*8], xmm2 | __asm ("movups xmmword [rbx + rdx*8], xmm2"); 0x00444e2c movups xmmword [rbx + rdx*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rdx*8 + 0x10], xmm0"); 0x00444e31 lea rdx, [rbp + 4] | rdx = rbp + 4; 0x00444e35 or rdx, rcx | rdx |= rcx; 0x00444e38 movups xmm0, xmmword [rsi + rdx*8] | __asm ("movups xmm0, xmmword [rsi + rdx*8]"); 0x00444e3c movups xmm1, xmmword [rsi + rdx*8 + 0x10] | __asm ("movups xmm1, xmmword [rsi + rdx*8 + 0x10]"); 0x00444e41 movups xmm2, xmmword [rbx + rdx*8] | __asm ("movups xmm2, xmmword [rbx + rdx*8]"); 0x00444e45 xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x00444e48 movups xmm0, xmmword [rbx + rdx*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rdx*8 + 0x10]"); 0x00444e4d xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x00444e50 movups xmmword [rbx + rdx*8], xmm2 | __asm ("movups xmmword [rbx + rdx*8], xmm2"); 0x00444e54 movups xmmword [rbx + rdx*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rdx*8 + 0x10], xmm0"); 0x00444e59 add rbp, 8 | rbp += 8; 0x00444e5d add rax, 2 | rax += 2; 0x00444e61 jne 0x444e0a | | } while (rax != 0); 0x00444e63 mov rcx, qword [rsp - 8] | rcx = *((rsp - 8)); 0x00444e68 mov rdx, qword [rsp - 0x10] | rdx = *((rsp - 0x10)); 0x00444e6d jmp 0x445156 | goto label_29; | label_25: 0x00444e72 xor esi, esi | esi = 0; 0x00444e74 cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00444e78 jae 0x444bca | goto label_1; | } | label_19: 0x00444e7e xor r13d, r13d | r13d = 0; 0x00444e81 jmp 0x445240 | goto label_30; | label_24: 0x00444e86 inc r11 | r11++; 0x00444e89 mov r9, r11 | r9 = r11; 0x00444e8c and r9, 0xfffffffffffffffc | r9 &= 0xfffffffffffffffc; 0x00444e90 lea rcx, [r9 - 4] | rcx = r9 - 4; 0x00444e94 mov r10, rcx | r10 = rcx; 0x00444e97 shr r10, 2 | r10 >>= 2; 0x00444e9b inc r10 | r10++; 0x00444e9e test rcx, rcx | | if (rcx == 0) { 0x00444ea1 je 0x44501c | goto label_31; | } 0x00444ea7 mov qword [rsp - 0x28], r13 | *((rsp - 0x28)) = r13; 0x00444eac mov rdi, r14 | rdi = r14; 0x00444eaf mov r14, rdx | r14 = rdx; 0x00444eb2 lea r13, [rdx + rbx*8 - 0x10] | r13 = rdx + rbx*8 - 0x10; 0x00444eb7 mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x00444ebc lea rax, [rcx + rax*8 - 0x10] | rax = rcx + rax*8 - 0x10; 0x00444ec1 mov rcx, r10 | rcx = r10; 0x00444ec4 and rcx, 0xfffffffffffffffe | rcx &= 0xfffffffffffffffe; 0x00444ec8 neg rcx | rcx = -rcx; 0x00444ecb mov rbp, 0xfffffffffffffffe | 0x00444ed2 nop word cs:[rax + rax] | 0x00444edc nop dword [rax] | | do { 0x00444ee0 movups xmm0, xmmword [r13 + rbp*8] | __asm ("movups xmm0, xmmword [r13 + rbp*8]"); 0x00444ee6 movups xmm1, xmmword [r13 + rbp*8 + 0x10] | __asm ("movups xmm1, xmmword [r13 + rbp*8 + 0x10]"); 0x00444eec movups xmm2, xmmword [rax + rbp*8 - 0x20] | __asm ("movups xmm2, xmmword [rax + rbp*8 - 0x20]"); 0x00444ef1 movups xmm3, xmmword [rax + rbp*8 - 0x10] | __asm ("movups xmm3, xmmword [rax + rbp*8 - 0x10]"); 0x00444ef6 movups xmm4, xmmword [rax + rbp*8] | __asm ("movups xmm4, xmmword [rax + rbp*8]"); 0x00444efa xorps xmm4, xmm0 | __asm ("xorps xmm4, xmm0"); 0x00444efd movups xmm0, xmmword [rax + rbp*8 + 0x10] | __asm ("movups xmm0, xmmword [rax + rbp*8 + 0x10]"); 0x00444f02 xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x00444f05 movups xmmword [rax + rbp*8 + 0x10], xmm0 | __asm ("movups xmmword [rax + rbp*8 + 0x10], xmm0"); 0x00444f0a movups xmmword [rax + rbp*8], xmm4 | __asm ("movups xmmword [rax + rbp*8], xmm4"); 0x00444f0e movups xmm0, xmmword [r13 + rbp*8 - 0x20] | __asm ("movups xmm0, xmmword [r13 + rbp*8 - 0x20]"); 0x00444f14 xorps xmm0, xmm2 | __asm ("xorps xmm0, xmm2"); 0x00444f17 movups xmm1, xmmword [r13 + rbp*8 - 0x10] | __asm ("movups xmm1, xmmword [r13 + rbp*8 - 0x10]"); 0x00444f1d xorps xmm1, xmm3 | __asm ("xorps xmm1, xmm3"); 0x00444f20 movups xmmword [rax + rbp*8 - 0x10], xmm1 | __asm ("movups xmmword [rax + rbp*8 - 0x10], xmm1"); 0x00444f25 movups xmmword [rax + rbp*8 - 0x20], xmm0 | __asm ("movups xmmword [rax + rbp*8 - 0x20], xmm0"); 0x00444f2a add rbp, 0xfffffffffffffff8 | rbp += 0xfffffffffffffff8; 0x00444f2e add rcx, 2 | rcx += 2; 0x00444f32 jne 0x444ee0 | | } while (rcx != 0); 0x00444f34 inc rbp | rbp++; 0x00444f37 mov rdx, r14 | rdx = r14; 0x00444f3a mov r14, rdi | r14 = rdi; 0x00444f3d mov r13, qword [rsp - 0x28] | r13 = *((rsp - 0x28)); 0x00444f42 jmp 0x445023 | goto label_32; | label_20: 0x00444f47 mov rcx, rbp | rcx = rbp; | label_21: 0x00444f4a add rbp, r12 | rbp += r12; 0x00444f4d test r12, r12 | | if (r12 == 0) { 0x00444f50 je 0x444fe3 | goto label_33; | } 0x00444f56 add r10, rcx | r10 += rcx; 0x00444f59 mov rdx, qword [rsp - 0x18] | rdx = *((rsp - 0x18)); 0x00444f5e lea rdx, [rdx + r10*8 + 8] | rdx = rdx + r10*8 + 8; 0x00444f63 mov qword [rsp - 0x20], rbp | *((rsp - 0x20)) = rbp; 0x00444f68 mov r12, rbp | r12 = rbp; 0x00444f6b sub r12, rcx | r12 -= rcx; 0x00444f6e inc r12 | r12++; 0x00444f71 mov r10, rsi | r10 = rsi; 0x00444f74 add r14, rsi | r14 += rsi; 0x00444f77 lea rbx, [rdi + r14*8 + 0x10] | rbx = rdi + r14*8 + 0x10; 0x00444f7c xor edi, edi | edi = 0; 0x00444f7e nop | | do { 0x00444f80 mov rsi, qword [rdx + rdi*8 - 8] | rsi = *((rdx + rdi*8 - 8)); 0x00444f85 mov rbp, rsi | 0x00444f88 mov ecx, r15d | ecx = r15d; 0x00444f8b shl rbp, cl | rbp <<= cl; 0x00444f8e xor rbp, rax | rbp ^= rax; 0x00444f91 mov qword [rbx + rdi*8 - 0x10], rbp | *((rbx + rdi*8 - 0x10)) = rbp; 0x00444f96 mov ecx, r13d | ecx = r13d; 0x00444f99 shr rsi, cl | rsi >>= cl; 0x00444f9c and rsi, r11 | rsi &= r11; 0x00444f9f xor rsi, qword [rbx + rdi*8 - 8] | rsi ^= *((rbx + rdi*8 - 8)); 0x00444fa4 mov qword [rbx + rdi*8 - 8], rsi | *((rbx + rdi*8 - 8)) = rsi; 0x00444fa9 mov rax, qword [rdx + rdi*8] | rax = *((rdx + rdi*8)); 0x00444fad mov rbp, rax | 0x00444fb0 mov ecx, r15d | ecx = r15d; 0x00444fb3 shl rbp, cl | rbp <<= cl; 0x00444fb6 xor rbp, rsi | rbp ^= rsi; 0x00444fb9 mov ecx, r13d | ecx = r13d; 0x00444fbc shr rax, cl | rax >>= cl; 0x00444fbf mov qword [rbx + rdi*8 - 8], rbp | *((rbx + rdi*8 - 8)) = rbp; 0x00444fc4 and rax, r11 | rax &= r11; 0x00444fc7 xor rax, qword [rbx + rdi*8] | rax ^= *((rbx + rdi*8)); 0x00444fcb mov qword [rbx + rdi*8], rax | *((rbx + rdi*8)) = rax; 0x00444fcf add rdi, 2 | rdi += 2; 0x00444fd3 cmp r12, rdi | 0x00444fd6 jne 0x444f80 | | } while (r12 != rdi); 0x00444fd8 mov rsi, r10 | rsi = r10; 0x00444fdb add rsi, rdi | rsi += rdi; 0x00444fde mov rbp, qword [rsp - 0x20] | rbp = *((rsp - 0x20)); | label_33: 0x00444fe3 inc rbp | rbp++; 0x00444fe6 and r8d, 0x3f | r8d &= 0x3f; 0x00444fea xor r13d, r13d | r13d = 0; 0x00444fed jmp 0x445236 | goto label_34; | label_26: 0x00444ff2 mov rsi, rbp | rsi = rbp; 0x00444ff5 jmp 0x44523b | goto label_35; | label_22: 0x00444ffa mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445001 mov ecx, r8d | ecx = r8d; 0x00445004 shl rax, cl | rax <<= cl; 0x00445007 not rax | rax = ~rax; 0x0044500a and rsi, rax | rsi &= rax; 0x0044500d mov ecx, r9d | ecx = r9d; 0x00445010 shl rsi, cl | rsi <<= cl; 0x00445013 xor qword [r12], rsi | *(r12) ^= rsi; 0x00445017 jmp 0x4452c9 | goto label_4; | label_31: 0x0044501c mov rbp, 0xffffffffffffffff | | label_32: 0x00445023 mov rax, r9 | rax = r9; 0x00445026 shl rax, 6 | rax <<= 6; 0x0044502a test r10b, 1 | | if ((r10b & 1) != 0) { 0x0044502e je 0x44505e | 0x00445030 lea rcx, [r12 + rbp] | rcx = r12 + rbp; 0x00445034 movups xmm0, xmmword [r13 + rbp*8 - 0x18] | __asm ("movups xmm0, xmmword [r13 + rbp*8 - 0x18]"); 0x0044503a movups xmm1, xmmword [r13 + rbp*8 - 8] | __asm ("movups xmm1, xmmword [r13 + rbp*8 - 8]"); 0x00445040 movups xmm2, xmmword [r14 + rcx*8 - 0x18] | __asm ("movups xmm2, xmmword [r14 + rcx*8 - 0x18]"); 0x00445046 xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x00445049 movups xmm0, xmmword [r14 + rcx*8 - 8] | __asm ("movups xmm0, xmmword [r14 + rcx*8 - 8]"); 0x0044504f xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x00445052 movups xmmword [r14 + rcx*8 - 8], xmm0 | __asm ("movups xmmword [r14 + rcx*8 - 8], xmm0"); 0x00445058 movups xmmword [r14 + rcx*8 - 0x18], xmm2 | __asm ("movups xmmword [r14 + rcx*8 - 0x18], xmm2"); | } 0x0044505e sub r12, r9 | r12 -= r9; 0x00445061 mov rcx, r9 | rcx = r9; 0x00445064 neg rcx | rcx = -rcx; 0x00445067 sub r8, rax | r8 -= rax; 0x0044506a cmp r11, r9 | 0x0044506d mov rbp, r15 | | if (r11 == r9) { 0x00445070 je 0x4450a8 | goto label_10; | } | label_17: 0x00445072 mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00445077 lea rax, [rax + rbp*8 - 8] | rax = rax + rbp*8 - 8; 0x0044507c lea rdx, [rdx + rbx*8 - 8] | rdx = rdx + rbx*8 - 8; 0x00445081 nop word cs:[rax + rax] | 0x0044508b nop dword [rax + rax] | | do { 0x00445090 mov rdi, qword [rdx + rcx*8] | rdi = *((rdx + rcx*8)); 0x00445094 xor qword [rax + r12*8], rdi | *((rax + r12*8)) ^= rdi; 0x00445098 dec rcx | rcx--; 0x0044509b dec r12 | r12--; 0x0044509e add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x004450a2 cmp r8, 0x3f | 0x004450a6 ja 0x445090 | | } while (r8 > 0x3f); | label_10: 0x004450a8 test r8d, r8d | | if (r8d == 0) { 0x004450ab je 0x4452c9 | goto label_4; | } 0x004450b1 mov eax, esi | eax = esi; 0x004450b3 or eax, 0x40 | eax |= 0x40; 0x004450b6 cmp esi, r8d | | if (esi >= r8d) { 0x004450b9 cmovae eax, esi | eax = esi; | } 0x004450bc sbb r12, 0 | 0x004450c0 mov rdi, qword [r13 + rcx*8 - 8] | rdi = *((r13 + rcx*8 - 8)); 0x004450c5 mov ecx, r8d | ecx = r8d; 0x004450c8 neg cl | cl = -cl; 0x004450ca shr rdi, cl | rdi >>= cl; 0x004450cd sub eax, r8d | eax -= r8d; 0x004450d0 mov edx, 0x40 | edx = 0x40; 0x004450d5 sub edx, eax | edx -= eax; 0x004450d7 cmp edx, r8d | | if (edx < r8d) { 0x004450da jae 0x44512e | 0x004450dc mov rbp, 0xffffffffffffffff | 0x004450e3 mov ecx, edx | ecx = edx; 0x004450e5 shl rbp, cl | rbp <<= cl; 0x004450e8 mov r10, 0xffffffffffffffff | r10 = 0xffffffffffffffff; 0x004450ef mov r9d, edx | r9d = edx; 0x004450f2 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004450f9 test eax, eax | | if (eax != 0) { 0x004450fb je 0x445103 | 0x004450fd not rbp | rbp = ~rbp; 0x00445100 mov rsi, rbp | rsi = rbp; | } 0x00445103 and rsi, rdi | rsi &= rdi; 0x00445106 mov ecx, eax | ecx = eax; 0x00445108 shl rsi, cl | rsi <<= cl; 0x0044510b xor qword [r14 + r12*8], rsi | *((r14 + r12*8)) ^= rsi; 0x0044510f mov ecx, r9d | ecx = r9d; 0x00445112 shr rdi, cl | rdi >>= cl; 0x00445115 sub r8d, edx | r8d -= edx; 0x00445118 mov ecx, r8d | ecx = r8d; 0x0044511b shl r10, cl | r10 <<= cl; 0x0044511e not r10 | r10 = ~r10; 0x00445121 and r10, rdi | r10 &= rdi; 0x00445124 xor qword [r14 + r12*8 + 8], r10 | *((r14 + r12*8 + 8)) ^= r10; 0x00445129 jmp 0x4452c9 | goto label_4; | } 0x0044512e mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445135 mov ecx, r8d | ecx = r8d; 0x00445138 shl rdx, cl | rdx <<= cl; 0x0044513b not rdx | rdx = ~rdx; 0x0044513e and rdi, rdx | rdi &= rdx; 0x00445141 mov ecx, eax | ecx = eax; 0x00445143 shl rdi, cl | rdi <<= cl; 0x00445146 xor qword [r14 + r12*8], rdi | *((r14 + r12*8)) ^= rdi; 0x0044514a jmp 0x4452c9 | goto label_4; | label_28: 0x0044514f xor ebp, ebp | ebp = 0; 0x00445151 mov rbx, qword [rsp - 0x28] | rbx = *((rsp - 0x28)); | label_29: 0x00445156 test r12b, 1 | | if ((r12b & 1) != 0) { 0x0044515a je 0x445187 | 0x0044515c or rbp, qword [rsp - 0x20] | rbp |= *((rsp - 0x20)); 0x00445161 mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00445166 movups xmm0, xmmword [rax + rbp*8] | __asm ("movups xmm0, xmmword [rax + rbp*8]"); 0x0044516a movups xmm1, xmmword [rax + rbp*8 + 0x10] | __asm ("movups xmm1, xmmword [rax + rbp*8 + 0x10]"); 0x0044516f movups xmm2, xmmword [rbx + rbp*8] | __asm ("movups xmm2, xmmword [rbx + rbp*8]"); 0x00445173 xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x00445176 movups xmm0, xmmword [rbx + rbp*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rbp*8 + 0x10]"); 0x0044517b xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x0044517e movups xmmword [rbx + rbp*8], xmm2 | __asm ("movups xmmword [rbx + rbp*8], xmm2"); 0x00445182 movups xmmword [rbx + rbp*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rbp*8 + 0x10], xmm0"); | } 0x00445187 mov rax, qword [rsp - 0x20] | rax = *((rsp - 0x20)); 0x0044518c lea r12, [rax + rdx] | r12 = rax + rdx; 0x00445190 mov rsi, r12 | rsi = r12; 0x00445193 cmp rcx, rdx | | if (rcx == rdx) { 0x00445196 je 0x44522c | goto label_36; | } | label_27: 0x0044519c mov ebp, r15d | 0x0044519f sub ebp, r12d | ebp -= r12d; 0x004451a2 inc ebp | ebp++; 0x004451a4 mov rcx, r15 | rcx = r15; 0x004451a7 mov rax, r15 | rax = r15; 0x004451aa sub rax, r12 | rax -= r12; 0x004451ad and rbp, 3 | rbp &= 3; | if (rbp == 0) { 0x004451b1 je 0x4451d4 | goto label_37; | } 0x004451b3 mov rbx, r12 | rbx = r12; 0x004451b6 mov r15, qword [rsp - 0x28] | r15 = *((rsp - 0x28)); 0x004451bb mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); | do { 0x004451c0 lea r12, [rbx + 1] | r12 = rbx + 1; 0x004451c4 mov rdx, qword [rsi + rbx*8] | rdx = *((rsi + rbx*8)); 0x004451c8 xor qword [r15 + rbx*8], rdx | *((r15 + rbx*8)) ^= rdx; 0x004451cc mov rbx, r12 | rbx = r12; 0x004451cf dec rbp | rbp--; 0x004451d2 jne 0x4451c0 | | } while (rbp != 0); | label_37: 0x004451d4 mov rsi, r12 | rsi = r12; 0x004451d7 cmp rax, 3 | 0x004451db mov rax, qword [rsp - 0x20] | rax = *((rsp - 0x20)); 0x004451e0 mov r15, rcx | r15 = rcx; | if (rax < 3) { 0x004451e3 jb 0x44522c | goto label_36; | } 0x004451e5 lea rax, [rax + r11 + 1] | rax = rax + r11 + 1; 0x004451ea mov rcx, qword [rsp - 0x18] | rcx = *((rsp - 0x18)); 0x004451ef lea rcx, [rcx + r10*8 + 0x18] | rcx = rcx + r10*8 + 0x18; 0x004451f4 lea rdx, [rdi + r14*8 + 0x18] | rdx = rdi + r14*8 + 0x18; | do { 0x004451f9 mov rdi, qword [rcx + r12*8 - 0x18] | rdi = *((rcx + r12*8 - 0x18)); 0x004451fe xor qword [rdx + r12*8 - 0x18], rdi | *((rdx + r12*8 - 0x18)) ^= rdi; 0x00445203 mov rdi, qword [rcx + r12*8 - 0x10] | rdi = *((rcx + r12*8 - 0x10)); 0x00445208 xor qword [rdx + r12*8 - 0x10], rdi | *((rdx + r12*8 - 0x10)) ^= rdi; 0x0044520d mov rdi, qword [rcx + r12*8 - 8] | rdi = *((rcx + r12*8 - 8)); 0x00445212 xor qword [rdx + r12*8 - 8], rdi | *((rdx + r12*8 - 8)) ^= rdi; 0x00445217 lea rsi, [r12 + 4] | rsi = r12 + 4; 0x0044521c mov rdi, qword [rcx + r12*8] | rdi = *((rcx + r12*8)); 0x00445220 xor qword [rdx + r12*8], rdi | *((rdx + r12*8)) ^= rdi; 0x00445224 mov r12, rsi | r12 = rsi; 0x00445227 cmp rax, rsi | 0x0044522a jne 0x4451f9 | | } while (rax != rsi); | label_36: 0x0044522c inc r15 | r15++; 0x0044522f and r8d, 0x3f | r8d &= 0x3f; 0x00445233 mov rbp, r15 | | label_34: 0x00445236 mov r12, qword [rsp - 0x28] | r12 = *((rsp - 0x28)); | label_35: 0x0044523b mov r11, qword [rsp - 0x30] | r11 = *((rsp - 0x30)); | label_30: 0x00445240 test r8, r8 | | if (r8 != 0) { 0x00445243 je 0x4452c9 | 0x00445249 mov rdi, qword [r11 + rbp*8] | rdi = *((r11 + rbp*8)); 0x0044524d mov eax, 0x40 | eax = 0x40; 0x00445252 sub eax, r9d | eax -= r9d; 0x00445255 cmp eax, r8d | | if (eax < r8d) { 0x00445258 jae 0x4452ac | 0x0044525a mov r10, rsi | r10 = rsi; 0x0044525d mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00445264 mov ecx, eax | ecx = eax; 0x00445266 shl rsi, cl | rsi <<= cl; 0x00445269 mov edx, eax | edx = eax; 0x0044526b mov rbp, 0xffffffffffffffff | 0x00445272 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x00445279 test r13b, r13b | | if (r13b == 0) { 0x0044527c jne 0x445284 | 0x0044527e not rsi | rsi = ~rsi; 0x00445281 mov rbx, rsi | rbx = rsi; | } 0x00445284 and rbx, rdi | rbx &= rdi; 0x00445287 mov ecx, r9d | ecx = r9d; 0x0044528a shl rbx, cl | rbx <<= cl; 0x0044528d xor qword [r12 + r10*8], rbx | *((r12 + r10*8)) ^= rbx; 0x00445291 mov ecx, edx | ecx = edx; 0x00445293 shr rdi, cl | rdi >>= cl; 0x00445296 sub r8d, eax | r8d -= eax; 0x00445299 mov ecx, r8d | ecx = r8d; 0x0044529c shl rbp, cl | rbp <<= cl; 0x0044529f not rbp | rbp = ~rbp; 0x004452a2 and rbp, rdi | rbp &= rdi; 0x004452a5 xor qword [r12 + r10*8 + 8], rbp | *((r12 + r10*8 + 8)) ^= rbp; 0x004452aa jmp 0x4452c9 | | } else { 0x004452ac mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004452b3 mov ecx, r8d | ecx = r8d; 0x004452b6 shl rax, cl | rax <<= cl; 0x004452b9 not rax | rax = ~rax; 0x004452bc and rdi, rax | rdi &= rax; 0x004452bf mov ecx, r9d | ecx = r9d; 0x004452c2 shl rdi, cl | rdi <<= cl; 0x004452c5 xor qword [r12 + rsi*8], rdi | *((r12 + rsi*8)) ^= rdi; | } | } | label_4: 0x004452c9 pop rbx | 0x004452ca pop r12 | r12 = rbx; 0x004452cc pop r13 | r13 = rbx; 0x004452ce pop r14 | r14 = rbx; 0x004452d0 pop r15 | r15 = rbx; 0x004452d2 pop rbp | 0x004452d3 ret | return rax; | label_23: 0x004452d4 movabs rbp, 0x7fffffffffffffff | 0x004452de jmp 0x444c8f | goto label_2; | }