; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/none @ 0x444c10 */ | #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_ (int32_t arg5, uint32_t arg4, int64_t arg3, int32_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) */ 0x00444c10 push rbp | 0x00444c11 push r15 | 0x00444c13 push r14 | 0x00444c15 push r13 | 0x00444c17 push r12 | 0x00444c19 push rbx | 0x00444c1a mov r11, rcx | r11 = rcx; 0x00444c1d mov r15, rsi | r15 = rsi; 0x00444c20 shr r15, 6 | r15 >>= 6; 0x00444c24 lea r13, [rdi + r15*8] | r13 = rdi + r15*8; 0x00444c28 mov r9d, esi | r9d = esi; 0x00444c2b and r9d, 0x3f | r9d &= 0x3f; 0x00444c2f mov rbp, r13 | 0x00444c32 shr rbp, 3 | rbp >>= 3; 0x00444c36 mov r14, rcx | r14 = rcx; 0x00444c39 shr r14, 6 | r14 >>= 6; 0x00444c3d lea r10, [rdx + r14*8] | r10 = rdx + r14*8; 0x00444c41 and ecx, 0x3f | ecx &= 0x3f; 0x00444c44 mov rbx, r10 | rbx = r10; 0x00444c47 shr rbx, 3 | rbx >>= 3; 0x00444c4b sub rbp, rbx | rbp -= rbx; 0x00444c4e mov ebx, r9d | ebx = r9d; 0x00444c51 sub ebx, ecx | ebx -= ecx; 0x00444c53 xor eax, eax | eax = 0; 0x00444c55 cmp ebx, 0x3f | 0x00444c58 seta al | al = (ebx > 0x3f) ? 1 : 0; 0x00444c5b sub rbp, rax | rbp -= rax; 0x00444c5e test rbp, rbp | | if (rbp <= 0) { 0x00444c61 jg 0x444c7d | 0x00444c63 lea eax, [rbx + 0x40] | eax = rbx + 0x40; 0x00444c66 cmp ebx, 0x40 | | if (ebx < 0x40) { 0x00444c69 cmovb eax, ebx | eax = ebx; | } 0x00444c6c test eax, eax | | if (eax == 0) { 0x00444c6e je 0x444e16 | goto label_5; | } 0x00444c74 test rbp, rbp | | if (rbp != 0) { 0x00444c77 jne 0x444e16 | goto label_5; | } | } 0x00444c7d test r8, r8 | | if (r8 == 0) { 0x00444c80 je 0x445744 | goto label_6; | } 0x00444c86 add rsi, r8 | rsi += r8; 0x00444c89 mov r15, rsi | r15 = rsi; 0x00444c8c shr r15, 6 | r15 >>= 6; 0x00444c90 lea r10, [rdi + r15*8] | r10 = rdi + r15*8; 0x00444c94 and esi, 0x3f | esi &= 0x3f; 0x00444c97 add r11, r8 | r11 += r8; 0x00444c9a mov r12, r11 | r12 = r11; 0x00444c9d shr r12, 6 | r12 >>= 6; 0x00444ca1 lea r14, [rdx + r12*8] | r14 = rdx + r12*8; 0x00444ca5 and r11d, 0x3f | r11d &= 0x3f; | if (r11d != 0) { 0x00444ca9 je 0x444d60 | 0x00444caf mov r9d, r11d | r9d = r11d; 0x00444cb2 cmp r9, r8 | | if (r9 >= r8) { 0x00444cb5 jae 0x444e8c | goto label_7; | } 0x00444cbb lea eax, [rsi + 0x40] | eax = rsi + 0x40; 0x00444cbe cmp esi, r11d | | if (esi >= r11d) { 0x00444cc1 cmovae eax, esi | eax = esi; | } 0x00444cc4 sbb r13, r13 | r13 -= r13; 0x00444cc7 mov esi, eax | esi = eax; 0x00444cc9 sub esi, r11d | esi -= r11d; 0x00444ccc lea rbx, [r10 + r13*8] | rbx = r10 + r13*8; 0x00444cd0 mov rbp, qword [r14] | rbp = *(r14); 0x00444cd3 mov ecx, 0x40 | ecx = 0x40; 0x00444cd8 sub ecx, esi | ecx -= esi; 0x00444cda sub r11d, ecx | r11d -= ecx; | if (r11d <= 0) { 0x00444cdd jle 0x444f2b | goto label_8; | } 0x00444ce3 mov rax, rbx | rax = rbx; 0x00444ce6 mov qword [rsp - 0x28], r14 | *((rsp - 0x28)) = r14; 0x00444ceb mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x00444cf0 mov r10d, ecx | r10d = ecx; 0x00444cf3 cmp esi, 0x40 | | if (esi < 0x40) { 0x00444cf6 jge 0x444d1e | 0x00444cf8 mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x00444cff mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x00444d06 shl rbx, cl | rbx <<= cl; 0x00444d09 test esi, esi | | if (esi > 0) { 0x00444d0b jle 0x444d13 | 0x00444d0d not rbx | rbx = ~rbx; 0x00444d10 mov r14, rbx | r14 = rbx; | } 0x00444d13 and r14, rbp | r14 &= rbp; 0x00444d16 mov ecx, esi | ecx = esi; 0x00444d18 shl r14, cl | r14 <<= cl; 0x00444d1b xor qword [rax], r14 | *(rax) ^= r14; | } 0x00444d1e mov ecx, r10d | ecx = r10d; 0x00444d21 shr rbp, cl | rbp >>= cl; 0x00444d24 add rax, 8 | rax += 8; 0x00444d28 mov r10, 0xffffffffffffffff | r10 = 0xffffffffffffffff; 0x00444d2f mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x00444d36 mov ecx, r11d | ecx = r11d; 0x00444d39 shl rbx, cl | rbx <<= cl; 0x00444d3c cmp r11d, 0x3f | 0x00444d40 mov r14, qword [rsp - 0x28] | r14 = *((rsp - 0x28)); | if (r11d <= 0x3f) { 0x00444d45 jg 0x444d4d | 0x00444d47 not rbx | rbx = ~rbx; 0x00444d4a mov r10, rbx | r10 = rbx; | } 0x00444d4d and rbp, r10 | rbp &= r10; 0x00444d50 mov rbx, rax | rbx = rax; 0x00444d53 mov rax, qword [rax] | rax = *(rax); 0x00444d56 mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x00444d5b jmp 0x444f4e | goto label_9; | } 0x00444d60 xor r13d, r13d | r13d = 0; 0x00444d63 test esi, esi | | if (esi == 0) { 0x00444d65 je 0x444f5f | goto label_10; | } | label_0: 0x00444d6b cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444d6f jb 0x444fda | goto label_11; | } 0x00444d75 mov qword [rsp - 0x28], r14 | *((rsp - 0x28)) = r14; 0x00444d7a mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x00444d7f mov r10d, 0x40 | r10d = 0x40; 0x00444d85 sub r10d, esi | r10d -= esi; 0x00444d88 mov r9d, esi | r9d = esi; 0x00444d8b mov ecx, esi | ecx = esi; 0x00444d8d neg ecx | ecx = -ecx; 0x00444d8f mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x00444d96 mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x00444d9d shl r14, cl | r14 <<= cl; 0x00444da0 test esi, esi | 0x00444da2 not r14 | r14 = ~r14; | if (esi <= 0) { 0x00444da5 cmovle r14, r11 | r14 = r11; | } 0x00444da9 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444db0 mov ecx, esi | ecx = esi; 0x00444db2 shl rax, cl | rax <<= cl; 0x00444db5 cmp esi, 0x3f | | if (esi <= 0x3f) { 0x00444db8 jg 0x444dc0 | 0x00444dba not rax | rax = ~rax; 0x00444dbd mov r11, rax | r11 = rax; | } 0x00444dc0 add r15, r13 | r15 += r13; 0x00444dc3 lea rdi, [rdi + r15*8] | rdi = rdi + r15*8; 0x00444dc7 lea rdx, [rdx + r12*8 - 8] | rdx = rdx + r12*8 - 8; 0x00444dcc xor ebx, ebx | ebx = 0; 0x00444dce nop | | do { 0x00444dd0 mov rbp, qword [rdx + rbx*8] | rbp = *((rdx + rbx*8)); 0x00444dd4 cmp esi, 0x3f | | if (esi <= 0x3f) { 0x00444dd7 jg 0x444dea | 0x00444dd9 mov rax, rbp | rax = rbp; 0x00444ddc and rax, r14 | rax &= r14; 0x00444ddf mov ecx, r9d | ecx = r9d; 0x00444de2 shl rax, cl | rax <<= cl; 0x00444de5 xor qword [rdi + rbx*8 - 8], rax | *((rdi + rbx*8 - 8)) ^= rax; | } 0x00444dea mov ecx, r10d | ecx = r10d; 0x00444ded shr rbp, cl | rbp >>= cl; 0x00444df0 and rbp, r11 | rbp &= r11; 0x00444df3 xor qword [rdi + rbx*8], rbp | *((rdi + rbx*8)) ^= rbp; 0x00444df7 dec rbx | rbx--; 0x00444dfa add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00444dfe cmp r8, 0x3f | 0x00444e02 ja 0x444dd0 | | } while (r8 > 0x3f); 0x00444e04 add r13, rbx | r13 += rbx; 0x00444e07 mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x00444e0c mov r14, qword [rsp - 0x28] | r14 = *((rsp - 0x28)); 0x00444e11 jmp 0x444fdc | goto label_1; | label_5: 0x00444e16 test r8, r8 | | if (r8 == 0) { 0x00444e19 je 0x445744 | goto label_6; | } 0x00444e1f test ecx, ecx | | if (ecx == 0) { 0x00444e21 je 0x4450db | goto label_12; | } 0x00444e27 mov rbp, rdi | 0x00444e2a mov rdi, rdx | rdi = rdx; 0x00444e2d mov rdx, r10 | rdx = r10; 0x00444e30 mov r10d, 0x40 | r10d = 0x40; 0x00444e36 mov eax, 0x40 | eax = 0x40; 0x00444e3b sub eax, ecx | eax -= ecx; 0x00444e3d mov rsi, qword [rdx] | rsi = *(rdx); 0x00444e40 shr rsi, cl | rsi >>= cl; 0x00444e43 cmp rax, r8 | | if (rax >= r8) { 0x00444e46 jae 0x4450fb | goto label_13; | } 0x00444e4c mov rbx, rdx | rbx = rdx; 0x00444e4f cmp r9d, ecx | | if (r9d <= ecx) { 0x00444e52 jbe 0x445179 | goto label_14; | } 0x00444e58 mov rdx, rsi | rdx = rsi; 0x00444e5b mov ecx, r9d | ecx = r9d; 0x00444e5e shl rdx, cl | rdx <<= cl; 0x00444e61 sub r10d, r9d | r10d -= r9d; 0x00444e64 xor qword [r13], rdx | *(r13) ^= rdx; 0x00444e68 mov ecx, r10d | ecx = r10d; 0x00444e6b shr rsi, cl | rsi >>= cl; 0x00444e6e mov ecx, eax | ecx = eax; 0x00444e70 sub ecx, r10d | ecx -= r10d; 0x00444e73 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00444e7a shl rdx, cl | rdx <<= cl; 0x00444e7d lea rcx, [r13 + 8] | rcx = r13 + 8; 0x00444e81 not rdx | rdx = ~rdx; 0x00444e84 and rsi, rdx | rsi &= rdx; 0x00444e87 jmp 0x445194 | goto label_15; | label_7: 0x00444e8c lea edx, [rsi + 0x40] | edx = rsi + 0x40; 0x00444e8f cmp esi, r8d | | if (esi >= r8d) { 0x00444e92 cmovae edx, esi | edx = esi; | } 0x00444e95 sbb rdi, rdi | rdi -= rdi; 0x00444e98 sub r11d, r8d | r11d -= r8d; 0x00444e9b mov rbp, qword [r14] | rbp = *(r14); 0x00444e9e mov ecx, r11d | ecx = r11d; 0x00444ea1 shr rbp, cl | rbp >>= cl; 0x00444ea4 test r8d, r8d | | if (r8d == 0) { 0x00444ea7 je 0x445744 | goto label_6; | } 0x00444ead sub edx, r8d | edx -= r8d; 0x00444eb0 mov eax, 0x40 | eax = 0x40; 0x00444eb5 sub eax, edx | eax -= edx; 0x00444eb7 cmp eax, r8d | | if (eax >= r8d) { 0x00444eba jge 0x4450a1 | goto label_16; | } 0x00444ec0 cmp edx, 0x40 | | if (edx >= 0x40) { 0x00444ec3 jge 0x445756 | goto label_17; | } 0x00444ec9 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00444ed0 mov ecx, eax | ecx = eax; 0x00444ed2 shl rsi, cl | rsi <<= cl; 0x00444ed5 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x00444edc mov r9d, eax | r9d = eax; 0x00444edf test edx, edx | | if (edx > 0) { 0x00444ee1 jle 0x444ee9 | 0x00444ee3 not rsi | rsi = ~rsi; 0x00444ee6 mov rbx, rsi | rbx = rsi; | } 0x00444ee9 and rbx, rbp | rbx &= rbp; 0x00444eec mov ecx, edx | ecx = edx; 0x00444eee shl rbx, cl | rbx <<= cl; 0x00444ef1 xor qword [r10 + rdi*8], rbx | *((r10 + rdi*8)) ^= rbx; | label_4: 0x00444ef5 mov ecx, r9d | ecx = r9d; 0x00444ef8 shr rbp, cl | rbp >>= cl; 0x00444efb sub r8d, eax | r8d -= eax; 0x00444efe mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444f05 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00444f0c mov ecx, r8d | ecx = r8d; 0x00444f0f shl rdx, cl | rdx <<= cl; 0x00444f12 cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00444f16 jg 0x444f1e | 0x00444f18 not rdx | rdx = ~rdx; 0x00444f1b mov rax, rdx | rax = rdx; | } 0x00444f1e and rbp, rax | rbp &= rax; 0x00444f21 xor qword [r10 + rdi*8 + 8], rbp | *((r10 + rdi*8 + 8)) ^= rbp; 0x00444f26 jmp 0x445744 | goto label_6; | label_8: 0x00444f2b cmp esi, 0x3f | | if (esi <= 0x3f) { 0x00444f2e jg 0x444f54 | 0x00444f30 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444f37 mov ecx, r9d | ecx = r9d; 0x00444f3a shl rax, cl | rax <<= cl; 0x00444f3d not rax | rax = ~rax; 0x00444f40 and rbp, rax | rbp &= rax; 0x00444f43 mov ecx, esi | ecx = esi; 0x00444f45 shl rbp, cl | rbp <<= cl; 0x00444f48 mov rax, rbp | rax = rbp; 0x00444f4b mov rbp, qword [rbx] | rbp = *(rbx); | label_9: 0x00444f4e xor rax, rbp | rax ^= rbp; 0x00444f51 mov qword [rbx], rax | *(rbx) = rax; | } 0x00444f54 sub r8, r9 | r8 -= r9; 0x00444f57 test esi, esi | | if (esi != 0) { 0x00444f59 jne 0x444d6b | goto label_0; | } | label_10: 0x00444f5f cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444f63 jb 0x444fda | goto label_11; | } 0x00444f65 lea r11, [r8 - 0x40] | r11 = r8 - 0x40; 0x00444f69 cmp r11, 0xc0 | | if (r11 >= 0xc0) { 0x00444f70 jb 0x444fa7 | 0x00444f72 shr r11, 6 | r11 >>= 6; 0x00444f76 lea rbp, [r13 + r15] | rbp = r13 + r15; 0x00444f7b mov rcx, r11 | rcx = r11; 0x00444f7e not rcx | rcx = ~rcx; 0x00444f81 lea rbx, [rbp + rcx] | rbx = rbp + rcx; 0x00444f86 lea rbx, [rdi + rbx*8] | rbx = rdi + rbx*8; 0x00444f8a cmp rbx, r14 | | if (rbx >= r14) { 0x00444f8d jae 0x44539e | goto label_18; | } 0x00444f93 lea rbx, [rdi + rbp*8] | rbx = rdi + rbp*8; 0x00444f97 add rcx, r12 | rcx += r12; 0x00444f9a lea rcx, [rdx + rcx*8] | rcx = rdx + rcx*8; 0x00444f9e cmp rcx, rbx | | if (rcx >= rbx) { 0x00444fa1 jae 0x44539e | goto label_18; | } | } 0x00444fa7 xor ebx, ebx | ebx = 0; | label_2: 0x00444fa9 lea rax, [rdi + r15*8 - 8] | rax = rdi + r15*8 - 8; 0x00444fae lea rcx, [rdx + r12*8 - 8] | rcx = rdx + r12*8 - 8; 0x00444fb3 nop word cs:[rax + rax] | 0x00444fbd nop dword [rax] | | do { 0x00444fc0 mov rdx, qword [rcx + rbx*8] | rdx = *((rcx + rbx*8)); 0x00444fc4 xor qword [rax + r13*8], rdx | *((rax + r13*8)) ^= rdx; 0x00444fc8 dec rbx | rbx--; 0x00444fcb dec r13 | r13--; 0x00444fce add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00444fd2 cmp r8, 0x3f | 0x00444fd6 ja 0x444fc0 | | } while (r8 > 0x3f); 0x00444fd8 jmp 0x444fdc | goto label_1; | label_11: 0x00444fda xor ebx, ebx | ebx = 0; | label_1: 0x00444fdc test r8d, r8d | | if (r8d == 0) { 0x00444fdf je 0x445744 | goto label_6; | } 0x00444fe5 lea eax, [rsi + 0x40] | eax = rsi + 0x40; 0x00444fe8 cmp esi, r8d | | if (esi >= r8d) { 0x00444feb cmovae eax, esi | eax = esi; | } 0x00444fee sbb r13, 0 | 0x00444ff2 mov rdi, qword [r14 + rbx*8 - 8] | rdi = *((r14 + rbx*8 - 8)); 0x00444ff7 mov ecx, r8d | ecx = r8d; 0x00444ffa neg cl | cl = -cl; 0x00444ffc shr rdi, cl | rdi >>= cl; 0x00444fff sub eax, r8d | eax -= r8d; 0x00445002 mov edx, 0x40 | edx = 0x40; 0x00445007 sub edx, eax | edx -= eax; 0x00445009 cmp edx, r8d | | if (edx < r8d) { 0x0044500c jge 0x445077 | 0x0044500e cmp eax, 0x40 | | if (eax >= 0x40) { 0x00445011 jge 0x44574f | goto label_19; | } 0x00445017 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x0044501e mov ecx, edx | ecx = edx; 0x00445020 shl rbx, cl | rbx <<= cl; 0x00445023 mov rbp, 0xffffffffffffffff | 0x0044502a mov esi, edx | esi = edx; 0x0044502c test eax, eax | | if (eax > 0) { 0x0044502e jle 0x445036 | 0x00445030 not rbx | rbx = ~rbx; 0x00445033 mov rbp, rbx | | } 0x00445036 and rbp, rdi | rbp &= rdi; 0x00445039 mov ecx, eax | ecx = eax; 0x0044503b shl rbp, cl | rbp <<= cl; 0x0044503e xor qword [r10 + r13*8], rbp | *((r10 + r13*8)) ^= rbp; | label_3: 0x00445042 mov ecx, esi | ecx = esi; 0x00445044 shr rdi, cl | rdi >>= cl; 0x00445047 sub r8d, edx | r8d -= edx; 0x0044504a mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445051 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445058 mov ecx, r8d | ecx = r8d; 0x0044505b shl rdx, cl | rdx <<= cl; 0x0044505e cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00445062 jg 0x44506a | 0x00445064 not rdx | rdx = ~rdx; 0x00445067 mov rax, rdx | rax = rdx; | } 0x0044506a and rdi, rax | rdi &= rax; 0x0044506d xor qword [r10 + r13*8 + 8], rdi | *((r10 + r13*8 + 8)) ^= rdi; 0x00445072 jmp 0x445744 | goto label_6; | } 0x00445077 cmp eax, 0x3f | | if (eax > 0x3f) { 0x0044507a jg 0x445744 | goto label_6; | } 0x00445080 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445087 mov ecx, r8d | ecx = r8d; 0x0044508a shl rdx, cl | rdx <<= cl; 0x0044508d not rdx | rdx = ~rdx; 0x00445090 and rdi, rdx | rdi &= rdx; 0x00445093 mov ecx, eax | ecx = eax; 0x00445095 shl rdi, cl | rdi <<= cl; 0x00445098 xor qword [r10 + r13*8], rdi | *((r10 + r13*8)) ^= rdi; 0x0044509c jmp 0x445744 | goto label_6; | label_16: 0x004450a1 cmp edx, 0x3f | | if (edx > 0x3f) { 0x004450a4 jg 0x445744 | goto label_6; | } 0x004450aa mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004450b1 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004450b8 mov ecx, r8d | ecx = r8d; 0x004450bb shl rsi, cl | rsi <<= cl; 0x004450be cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x004450c2 jg 0x4450ca | 0x004450c4 not rsi | rsi = ~rsi; 0x004450c7 mov rax, rsi | rax = rsi; | } 0x004450ca and rbp, rax | rbp &= rax; 0x004450cd mov ecx, edx | ecx = edx; 0x004450cf shl rbp, cl | rbp <<= cl; 0x004450d2 xor qword [r10 + rdi*8], rbp | *((r10 + rdi*8)) ^= rbp; 0x004450d6 jmp 0x445744 | goto label_6; | label_12: 0x004450db xor esi, esi | esi = 0; 0x004450dd test r9d, r9d | | if (r9d == 0) { 0x004450e0 je 0x4451c3 | goto label_20; | } | do { 0x004450e6 mov ebx, r9d | ebx = r9d; 0x004450e9 mov rbp, rsi | 0x004450ec cmp r8, 0x40 | | if (r8 >= 0x40) { 0x004450f0 jae 0x4452e6 | goto label_21; | } 0x004450f6 jmp 0x4456a0 | goto label_22; | label_13: 0x004450fb test r8d, r8d | | if (r8d == 0) { 0x004450fe je 0x445744 | goto label_6; | } 0x00445104 movabs rbx, 0x7fffffffffffffff | rbx = 0x7fffffffffffffff; 0x0044510e mov eax, 0x40 | eax = 0x40; 0x00445113 sub eax, r9d | eax -= r9d; 0x00445116 cmp eax, r8d | | if (eax >= r8d) { 0x00445119 jge 0x44552d | goto label_23; | } 0x0044511f mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00445126 mov ecx, eax | ecx = eax; 0x00445128 shl rdi, cl | rdi <<= cl; 0x0044512b mov rbp, 0xffffffffffffffff | 0x00445132 mov edx, eax | edx = eax; 0x00445134 test r9d, r9d | | if (r9d != 0) { 0x00445137 je 0x44513f | 0x00445139 not rdi | rdi = ~rdi; 0x0044513c mov rbx, rdi | rbx = rdi; | } 0x0044513f and rbx, rsi | rbx &= rsi; 0x00445142 mov ecx, r9d | ecx = r9d; 0x00445145 shl rbx, cl | rbx <<= cl; 0x00445148 xor qword [r13], rbx | *(r13) ^= rbx; 0x0044514c mov ecx, edx | ecx = edx; 0x0044514e shr rsi, cl | rsi >>= cl; 0x00445151 sub r8d, eax | r8d -= eax; 0x00445154 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x0044515b mov ecx, r8d | ecx = r8d; 0x0044515e shl rax, cl | rax <<= cl; 0x00445161 cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00445165 jg 0x44516d | 0x00445167 not rax | rax = ~rax; 0x0044516a mov rbp, rax | | } 0x0044516d and rsi, rbp | rsi &= rbp; 0x00445170 xor qword [r13 + 8], rsi | *((r13 + 8)) ^= rsi; 0x00445174 jmp 0x445744 | goto label_6; | label_14: 0x00445179 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445180 mov ecx, eax | ecx = eax; 0x00445182 shl rdx, cl | rdx <<= cl; 0x00445185 not rdx | rdx = ~rdx; 0x00445188 and rsi, rdx | rsi &= rdx; 0x0044518b mov ecx, r9d | ecx = r9d; 0x0044518e shl rsi, cl | rsi <<= cl; 0x00445191 mov rcx, r13 | rcx = r13; | label_15: 0x00445194 mov rdx, rdi | rdx = rdi; 0x00445197 mov rdi, rbp | rdi = rbp; 0x0044519a mov r10, rbx | r10 = rbx; 0x0044519d xor qword [rcx], rsi | *(rcx) ^= rsi; 0x004451a0 lea ebx, [rax + r9] | ebx = rax + r9; 0x004451a4 sub r8, rax | r8 -= rax; 0x004451a7 mov esi, 1 | esi = 1; 0x004451ac cmp ebx, 0x40 | | if (ebx < 0x40) { 0x004451af jb 0x4452da | goto label_24; | } 0x004451b5 lea r9d, [rax + r9 - 0x40] | r9d = rax + r9 - 0x40; 0x004451ba test r9d, r9d | 0x004451bd jne 0x4450e6 | | } while (r9d != 0); | label_20: 0x004451c3 xor ebx, ebx | ebx = 0; 0x004451c5 cmp r8, 0x40 | | if (r8 < 0x40) { 0x004451c9 jb 0x445525 | goto label_25; | } 0x004451cf lea rax, [r8 - 0x40] | rax = r8 - 0x40; 0x004451d3 mov r11, rax | r11 = rax; 0x004451d6 shr r11, 6 | r11 >>= 6; 0x004451da lea r12, [r11 + rsi] | r12 = r11 + rsi; 0x004451de mov qword [rsp - 0x30], rsi | *((rsp - 0x30)) = rsi; 0x004451e3 mov rbx, rsi | rbx = rsi; 0x004451e6 cmp rax, 0xc0 | | if (rax < 0xc0) { 0x004451ec jb 0x445610 | goto label_26; | } 0x004451f2 mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x004451f7 lea rax, [rcx + r15] | rax = rcx + r15; 0x004451fb lea rbx, [rdi + rax*8] | rbx = rdi + rax*8; 0x004451ff lea rsi, [rcx + r14] | rsi = rcx + r14; 0x00445203 lea rbp, [rsi + r11] | rbp = rsi + r11; 0x00445207 lea rbp, [rdx + rbp*8 + 8] | rbp = rdx + rbp*8 + 8; 0x0044520c cmp rbx, rbp | | if (rbx < rbp) { 0x0044520f jae 0x44522b | 0x00445211 add rax, r11 | rax += r11; 0x00445214 lea rax, [rdi + rax*8 + 8] | rax = rdi + rax*8 + 8; 0x00445219 lea rsi, [rdx + rsi*8] | rsi = rdx + rsi*8; 0x0044521d mov rbx, qword [rsp - 0x30] | rbx = *((rsp - 0x30)); 0x00445222 cmp rsi, rax | | if (rsi < rax) { 0x00445225 jb 0x445610 | goto label_26; | } | } 0x0044522b mov qword [rsp - 0x28], r10 | *((rsp - 0x28)) = r10; 0x00445230 mov rcx, r13 | rcx = r13; 0x00445233 mov qword [rsp - 0x10], rdi | *((rsp - 0x10)) = rdi; 0x00445238 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x0044523d lea rdx, [r11 + 1] | rdx = r11 + 1; 0x00445241 mov r13, rdx | r13 = rdx; 0x00445244 and r13, 0xfffffffffffffffc | r13 &= 0xfffffffffffffffc; 0x00445248 lea rax, [r13 - 4] | rax = r13 - 4; 0x0044524c mov r9, rax | r9 = rax; 0x0044524f shr r9, 2 | r9 >>= 2; 0x00445253 inc r9 | r9++; 0x00445256 test rax, rax | | if (rax == 0) { 0x00445259 je 0x4455b5 | goto label_27; | } 0x0044525f mov rsi, r9 | rsi = r9; 0x00445262 and rsi, 0xfffffffffffffffe | rsi &= 0xfffffffffffffffe; 0x00445266 neg rsi | rsi = -rsi; 0x00445269 xor ebp, ebp | ebp = 0; 0x0044526b mov rbx, rcx | rbx = rcx; 0x0044526e mov r10, qword [rsp - 0x28] | r10 = *((rsp - 0x28)); 0x00445273 mov rdi, qword [rsp - 0x30] | rdi = *((rsp - 0x30)); | do { 0x00445278 mov rax, rdi | rax = *((rsp - 0x30)); 0x0044527b or rax, rbp | rax |= rbp; 0x0044527e movups xmm0, xmmword [r10 + rax*8] | __asm ("movups xmm0, xmmword [r10 + rax*8]"); 0x00445283 movups xmm1, xmmword [r10 + rax*8 + 0x10] | __asm ("movups xmm1, xmmword [r10 + rax*8 + 0x10]"); 0x00445289 movups xmm2, xmmword [rbx + rax*8] | __asm ("movups xmm2, xmmword [rbx + rax*8]"); 0x0044528d xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x00445290 movups xmm0, xmmword [rbx + rax*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rax*8 + 0x10]"); 0x00445295 xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x00445298 movups xmmword [rbx + rax*8], xmm2 | __asm ("movups xmmword [rbx + rax*8], xmm2"); 0x0044529c movups xmmword [rbx + rax*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rax*8 + 0x10], xmm0"); 0x004452a1 lea rax, [rbp + 4] | rax = rbp + 4; 0x004452a5 or rax, rdi | rax |= rdi; 0x004452a8 movups xmm0, xmmword [r10 + rax*8] | __asm ("movups xmm0, xmmword [r10 + rax*8]"); 0x004452ad movups xmm1, xmmword [r10 + rax*8 + 0x10] | __asm ("movups xmm1, xmmword [r10 + rax*8 + 0x10]"); 0x004452b3 movups xmm2, xmmword [rbx + rax*8] | __asm ("movups xmm2, xmmword [rbx + rax*8]"); 0x004452b7 xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x004452ba movups xmm0, xmmword [rbx + rax*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rax*8 + 0x10]"); 0x004452bf xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x004452c2 movups xmmword [rbx + rax*8], xmm2 | __asm ("movups xmmword [rbx + rax*8], xmm2"); 0x004452c6 movups xmmword [rbx + rax*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rax*8 + 0x10], xmm0"); 0x004452cb add rbp, 8 | rbp += 8; 0x004452cf add rsi, 2 | rsi += 2; 0x004452d3 jne 0x445278 | | } while (rsi != 0); 0x004452d5 jmp 0x4455b7 | goto label_28; | label_24: 0x004452da xor ebp, ebp | ebp = 0; 0x004452dc cmp r8, 0x40 | | if (r8 < 0x40) { 0x004452e0 jb 0x4456a0 | goto label_22; | } | label_21: 0x004452e6 mov qword [rsp - 0x28], r10 | *((rsp - 0x28)) = r10; 0x004452eb mov qword [rsp - 0x20], r13 | *((rsp - 0x20)) = r13; 0x004452f0 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x004452f5 mov r12d, 0x40 | r12d = 0x40; 0x004452fb sub r12d, ebx | r12d -= ebx; 0x004452fe mov r11, rbp | r11 = rbp; 0x00445301 mov r9d, ebx | r9d = ebx; 0x00445304 mov ecx, ebx | ecx = ebx; 0x00445306 neg ecx | ecx = -ecx; 0x00445308 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x0044530f mov rbp, 0xffffffffffffffff | 0x00445316 shl rbp, cl | rbp <<= cl; 0x00445319 test ebx, ebx | 0x0044531b not rbp | rbp = ~rbp; | if (ebx <= 0) { 0x0044531e cmovle rbp, r13 | | } 0x00445322 lea rdx, [r8 - 0x40] | rdx = r8 - 0x40; 0x00445326 mov rax, rdx | rax = rdx; 0x00445329 shr rax, 6 | rax >>= 6; 0x0044532d mov ecx, ebx | ecx = ebx; 0x0044532f shl r13, cl | r13 <<= cl; 0x00445332 not r13 | r13 = ~r13; 0x00445335 lea rcx, [r11 + r15] | rcx = r11 + r15; 0x00445339 mov qword [rsp - 0x10], rdi | *((rsp - 0x10)) = rdi; 0x0044533e mov r10, qword [rdi + rcx*8] | r10 = *((rdi + rcx*8)); 0x00445342 test dl, 0x40 | | if ((dl & 0x40) != 0) { 0x00445345 jne 0x44545e | goto label_29; | } 0x0044534b mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x00445350 mov rdx, qword [rcx + rsi*8] | rdx = *((rcx + rsi*8)); 0x00445354 mov rdi, rsi | rdi = rsi; 0x00445357 mov esi, ebx | esi = ebx; 0x00445359 mov rbx, rdx | rbx = rdx; 0x0044535c and rbx, rbp | rbx &= rbp; 0x0044535f mov ecx, r9d | ecx = r9d; 0x00445362 shl rbx, cl | rbx <<= cl; 0x00445365 xor rbx, r10 | rbx ^= r10; 0x00445368 mov ecx, r12d | ecx = r12d; 0x0044536b shr rdx, cl | rdx >>= cl; 0x0044536e mov rcx, qword [rsp - 0x20] | rcx = *((rsp - 0x20)); 0x00445373 mov qword [rcx + r11*8], rbx | *((rcx + r11*8)) = rbx; 0x00445377 mov ebx, esi | ebx = esi; 0x00445379 and rdx, r13 | rdx &= r13; 0x0044537c xor rdx, qword [rcx + r11*8 + 8] | rdx ^= *((rcx + r11*8 + 8)); 0x00445381 mov qword [rcx + r11*8 + 8], rdx | *((rcx + r11*8 + 8)) = rdx; 0x00445386 lea rsi, [r11 + 1] | rsi = r11 + 1; 0x0044538a lea rcx, [rdi + 1] | rcx = rdi + 1; 0x0044538e mov qword [rsp - 0x30], rsi | *((rsp - 0x30)) = rsi; 0x00445393 mov rsi, rdi | rsi = rdi; 0x00445396 mov r10, rdx | r10 = rdx; 0x00445399 jmp 0x445466 | goto label_30; | label_18: 0x0044539e inc r11 | r11++; 0x004453a1 mov rax, r11 | rax = r11; 0x004453a4 and rax, 0xfffffffffffffffc | rax &= 0xfffffffffffffffc; 0x004453a8 lea rcx, [rax - 4] | rcx = rax - 4; 0x004453ac mov r9, rcx | r9 = rcx; 0x004453af shr r9, 2 | r9 >>= 2; 0x004453b3 inc r9 | r9++; 0x004453b6 test rcx, rcx | | if (rcx == 0) { 0x004453b9 je 0x445558 | goto label_31; | } 0x004453bf mov qword [rsp - 0x20], rax | *((rsp - 0x20)) = rax; 0x004453c4 mov qword [rsp - 0x28], r14 | *((rsp - 0x28)) = r14; 0x004453c9 mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x004453ce mov rax, rdx | rax = rdx; 0x004453d1 lea rcx, [rdx + r12*8 - 0x10] | rcx = rdx + r12*8 - 0x10; 0x004453d6 mov r14, rdi | r14 = rdi; 0x004453d9 lea rbp, [rdi + rbp*8 - 0x10] | rbp = rdi + rbp*8 - 0x10; 0x004453de mov r10, r9 | r10 = r9; 0x004453e1 and r10, 0xfffffffffffffffe | r10 &= 0xfffffffffffffffe; 0x004453e5 neg r10 | r10 = -r10; 0x004453e8 mov rbx, 0xfffffffffffffffe | rbx = 0xfffffffffffffffe; 0x004453ef nop | | do { 0x004453f0 movups xmm0, xmmword [rcx + rbx*8] | __asm ("movups xmm0, xmmword [rcx + rbx*8]"); 0x004453f4 movups xmm1, xmmword [rcx + rbx*8 + 0x10] | __asm ("movups xmm1, xmmword [rcx + rbx*8 + 0x10]"); 0x004453f9 movups xmm2, xmmword [rbp + rbx*8 - 0x20] | __asm ("movups xmm2, xmmword [rbp + rbx*8 - 0x20]"); 0x004453fe movups xmm3, xmmword [rbp + rbx*8 - 0x10] | __asm ("movups xmm3, xmmword [rbp + rbx*8 - 0x10]"); 0x00445403 movups xmm4, xmmword [rbp + rbx*8] | __asm ("movups xmm4, xmmword [rbp + rbx*8]"); 0x00445408 xorps xmm4, xmm0 | __asm ("xorps xmm4, xmm0"); 0x0044540b movups xmm0, xmmword [rbp + rbx*8 + 0x10] | __asm ("movups xmm0, xmmword [rbp + rbx*8 + 0x10]"); 0x00445410 xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x00445413 movups xmmword [rbp + rbx*8 + 0x10], xmm0 | __asm ("movups xmmword [rbp + rbx*8 + 0x10], xmm0"); 0x00445418 movups xmmword [rbp + rbx*8], xmm4 | __asm ("movups xmmword [rbp + rbx*8], xmm4"); 0x0044541d movups xmm0, xmmword [rcx + rbx*8 - 0x20] | __asm ("movups xmm0, xmmword [rcx + rbx*8 - 0x20]"); 0x00445422 xorps xmm0, xmm2 | __asm ("xorps xmm0, xmm2"); 0x00445425 movups xmm1, xmmword [rcx + rbx*8 - 0x10] | __asm ("movups xmm1, xmmword [rcx + rbx*8 - 0x10]"); 0x0044542a xorps xmm1, xmm3 | __asm ("xorps xmm1, xmm3"); 0x0044542d movups xmmword [rbp + rbx*8 - 0x10], xmm1 | __asm ("movups xmmword [rbp + rbx*8 - 0x10], xmm1"); 0x00445432 movups xmmword [rbp + rbx*8 - 0x20], xmm0 | __asm ("movups xmmword [rbp + rbx*8 - 0x20], xmm0"); 0x00445437 add rbx, 0xfffffffffffffff8 | rbx += 0xfffffffffffffff8; 0x0044543b add r10, 2 | r10 += 2; 0x0044543f jne 0x4453f0 | | } while (r10 != 0); 0x00445441 inc rbx | rbx++; 0x00445444 mov rdx, rax | rdx = rax; 0x00445447 mov rdi, r14 | rdi = r14; 0x0044544a mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x0044544f mov r14, qword [rsp - 0x28] | r14 = *((rsp - 0x28)); 0x00445454 mov rax, qword [rsp - 0x20] | rax = *((rsp - 0x20)); 0x00445459 jmp 0x44555f | goto label_32; | label_29: 0x0044545e mov qword [rsp - 0x30], r11 | *((rsp - 0x30)) = r11; 0x00445463 mov rcx, rsi | rcx = rsi; | label_30: 0x00445466 add rsi, rax | rsi += rax; 0x00445469 test rax, rax | | if (rax == 0) { 0x0044546c je 0x44550a | goto label_33; | } 0x00445472 mov dword [rsp - 4], ebx | *((rsp - 4)) = ebx; 0x00445476 add r14, rcx | r14 += rcx; 0x00445479 mov rax, qword [rsp - 0x18] | rax = *((rsp - 0x18)); 0x0044547e lea rdx, [rax + r14*8 + 8] | rdx = rax + r14*8 + 8; 0x00445483 mov r14, rsi | r14 = rsi; 0x00445486 mov r11, rsi | r11 = rsi; 0x00445489 sub r11, rcx | r11 -= rcx; 0x0044548c inc r11 | r11++; 0x0044548f add r15, qword [rsp - 0x30] | r15 += *((rsp - 0x30)); 0x00445494 mov rax, qword [rsp - 0x10] | rax = *((rsp - 0x10)); 0x00445499 lea rax, [rax + r15*8 + 0x10] | rax = rax + r15*8 + 0x10; 0x0044549e xor edi, edi | edi = 0; | do { 0x004454a0 mov rsi, qword [rdx + rdi*8 - 8] | rsi = *((rdx + rdi*8 - 8)); 0x004454a5 mov rbx, rsi | rbx = *((rdx + rdi*8 - 8)); 0x004454a8 and rbx, rbp | rbx &= rbp; 0x004454ab mov ecx, r9d | ecx = r9d; 0x004454ae shl rbx, cl | rbx <<= cl; 0x004454b1 xor rbx, r10 | rbx ^= r10; 0x004454b4 mov qword [rax + rdi*8 - 0x10], rbx | *((rax + rdi*8 - 0x10)) = rbx; 0x004454b9 mov ecx, r12d | ecx = r12d; 0x004454bc shr rsi, cl | rsi >>= cl; 0x004454bf and rsi, r13 | rsi &= r13; 0x004454c2 xor rsi, qword [rax + rdi*8 - 8] | rsi ^= *((rax + rdi*8 - 8)); 0x004454c7 mov qword [rax + rdi*8 - 8], rsi | *((rax + rdi*8 - 8)) = rsi; 0x004454cc mov r10, qword [rdx + rdi*8] | r10 = *((rdx + rdi*8)); 0x004454d0 mov rbx, r10 | rbx = *((rdx + rdi*8)); 0x004454d3 and rbx, rbp | rbx &= rbp; 0x004454d6 mov ecx, r9d | ecx = r9d; 0x004454d9 shl rbx, cl | rbx <<= cl; 0x004454dc xor rbx, rsi | rbx ^= rsi; 0x004454df mov ecx, r12d | ecx = r12d; 0x004454e2 shr r10, cl | r10 >>= cl; 0x004454e5 mov qword [rax + rdi*8 - 8], rbx | *((rax + rdi*8 - 8)) = rbx; 0x004454ea and r10, r13 | r10 &= r13; 0x004454ed xor r10, qword [rax + rdi*8] | r10 ^= *((rax + rdi*8)); 0x004454f1 mov qword [rax + rdi*8], r10 | *((rax + rdi*8)) = r10; 0x004454f5 add rdi, 2 | rdi += 2; 0x004454f9 cmp r11, rdi | 0x004454fc jne 0x4454a0 | | } while (r11 != rdi); 0x004454fe add qword [rsp - 0x30], rdi | *((rsp - 0x30)) += rdi; 0x00445503 mov ebx, dword [rsp - 4] | ebx = *((rsp - 4)); 0x00445507 mov rsi, r14 | rsi = r14; | label_33: 0x0044550a inc rsi | rsi++; 0x0044550d and r8d, 0x3f | r8d &= 0x3f; 0x00445511 mov r13, qword [rsp - 0x20] | r13 = *((rsp - 0x20)); 0x00445516 mov r10, qword [rsp - 0x28] | r10 = *((rsp - 0x28)); 0x0044551b mov rbp, qword [rsp - 0x30] | rbp = *((rsp - 0x30)); 0x00445520 jmp 0x4456a0 | goto label_22; | label_25: 0x00445525 mov rbp, rsi | 0x00445528 jmp 0x4456a0 | goto label_22; | label_23: 0x0044552d mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445534 mov ecx, r8d | ecx = r8d; 0x00445537 shl rax, cl | rax <<= cl; 0x0044553a cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x0044553e jg 0x445546 | 0x00445540 not rax | rax = ~rax; 0x00445543 mov rbx, rax | rbx = rax; | } 0x00445546 and rsi, rbx | rsi &= rbx; 0x00445549 mov ecx, r9d | ecx = r9d; 0x0044554c shl rsi, cl | rsi <<= cl; 0x0044554f xor qword [r13], rsi | *(r13) ^= rsi; 0x00445553 jmp 0x445744 | goto label_6; | label_31: 0x00445558 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; | label_32: 0x0044555f mov rcx, rax | rcx = rax; 0x00445562 shl rcx, 6 | rcx <<= 6; 0x00445566 test r9b, 1 | | if ((r9b & 1) != 0) { 0x0044556a je 0x44559b | 0x0044556c lea rbp, [r13 + rbx] | rbp = r13 + rbx; 0x00445571 movups xmm0, xmmword [r14 + rbx*8 - 0x18] | __asm ("movups xmm0, xmmword [r14 + rbx*8 - 0x18]"); 0x00445577 movups xmm1, xmmword [r14 + rbx*8 - 8] | __asm ("movups xmm1, xmmword [r14 + rbx*8 - 8]"); 0x0044557d movups xmm2, xmmword [r10 + rbp*8 - 0x18] | __asm ("movups xmm2, xmmword [r10 + rbp*8 - 0x18]"); 0x00445583 xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x00445586 movups xmm0, xmmword [r10 + rbp*8 - 8] | __asm ("movups xmm0, xmmword [r10 + rbp*8 - 8]"); 0x0044558c xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x0044558f movups xmmword [r10 + rbp*8 - 8], xmm0 | __asm ("movups xmmword [r10 + rbp*8 - 8], xmm0"); 0x00445595 movups xmmword [r10 + rbp*8 - 0x18], xmm2 | __asm ("movups xmmword [r10 + rbp*8 - 0x18], xmm2"); | } 0x0044559b sub r13, rax | r13 -= rax; 0x0044559e mov rbx, rax | rbx = rax; 0x004455a1 neg rbx | rbx = -rbx; 0x004455a4 sub r8, rcx | r8 -= rcx; 0x004455a7 cmp r11, rax | | if (r11 == rax) { 0x004455aa je 0x444fdc | goto label_1; | } 0x004455b0 jmp 0x444fa9 | goto label_2; | label_27: 0x004455b5 xor ebp, ebp | ebp = 0; | label_28: 0x004455b7 test r9b, 1 | 0x004455bb mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); | if ((r9b & 1) != 0) { 0x004455c0 je 0x4455ee | 0x004455c2 or rbp, rsi | rbp |= rsi; 0x004455c5 mov rax, qword [rsp - 0x28] | rax = *((rsp - 0x28)); 0x004455ca movups xmm0, xmmword [rax + rbp*8] | __asm ("movups xmm0, xmmword [rax + rbp*8]"); 0x004455ce movups xmm1, xmmword [rax + rbp*8 + 0x10] | __asm ("movups xmm1, xmmword [rax + rbp*8 + 0x10]"); 0x004455d3 mov rax, rcx | rax = rcx; 0x004455d6 movups xmm2, xmmword [rcx + rbp*8] | __asm ("movups xmm2, xmmword [rcx + rbp*8]"); 0x004455da xorps xmm2, xmm0 | __asm ("xorps xmm2, xmm0"); 0x004455dd movups xmm0, xmmword [rcx + rbp*8 + 0x10] | __asm ("movups xmm0, xmmword [rcx + rbp*8 + 0x10]"); 0x004455e2 xorps xmm0, xmm1 | __asm ("xorps xmm0, xmm1"); 0x004455e5 movups xmmword [rcx + rbp*8], xmm2 | __asm ("movups xmmword [rcx + rbp*8], xmm2"); 0x004455e9 movups xmmword [rcx + rbp*8 + 0x10], xmm0 | __asm ("movups xmmword [rcx + rbp*8 + 0x10], xmm0"); | } 0x004455ee lea rbx, [rsi + r13] | rbx = rsi + r13; 0x004455f2 mov rbp, rbx | 0x004455f5 cmp rdx, r13 | 0x004455f8 mov rdx, qword [rsp - 0x18] | rdx = *((rsp - 0x18)); 0x004455fd mov rdi, qword [rsp - 0x10] | rdi = *((rsp - 0x10)); 0x00445602 mov r13, rcx | r13 = rcx; 0x00445605 mov r10, qword [rsp - 0x28] | r10 = *((rsp - 0x28)); | if (rdx == r13) { 0x0044560a je 0x445694 | goto label_34; | } | label_26: 0x00445610 mov eax, r12d | eax = r12d; 0x00445613 sub eax, ebx | eax -= ebx; 0x00445615 inc eax | eax++; 0x00445617 mov rsi, r12 | rsi = r12; 0x0044561a sub rsi, rbx | rsi -= rbx; 0x0044561d and rax, 3 | rax &= 3; | if (rax == 0) { 0x00445621 je 0x445645 | goto label_35; | } 0x00445623 mov rbp, rbx | 0x00445626 nop word cs:[rax + rax] | | do { 0x00445630 lea rbx, [rbp + 1] | rbx = rbp + 1; 0x00445634 mov rcx, qword [r10 + rbp*8] | rcx = *((r10 + rbp*8)); 0x00445638 xor qword [r13 + rbp*8], rcx | *((r13 + rbp*8)) ^= rcx; 0x0044563d mov rbp, rbx | 0x00445640 dec rax | rax--; 0x00445643 jne 0x445630 | | } while (rax != 0); | label_35: 0x00445645 mov rbp, rbx | 0x00445648 cmp rsi, 3 | | if (rsi < 3) { 0x0044564c jb 0x445694 | goto label_34; | } 0x0044564e mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00445653 lea rax, [rax + r11 + 1] | rax = rax + r11 + 1; 0x00445658 lea rcx, [rdx + r14*8 + 0x18] | rcx = rdx + r14*8 + 0x18; 0x0044565d lea rdx, [rdi + r15*8 + 0x18] | rdx = rdi + r15*8 + 0x18; | do { 0x00445662 mov rsi, qword [rcx + rbx*8 - 0x18] | rsi = *((rcx + rbx*8 - 0x18)); 0x00445667 xor qword [rdx + rbx*8 - 0x18], rsi | *((rdx + rbx*8 - 0x18)) ^= rsi; 0x0044566c mov rsi, qword [rcx + rbx*8 - 0x10] | rsi = *((rcx + rbx*8 - 0x10)); 0x00445671 xor qword [rdx + rbx*8 - 0x10], rsi | *((rdx + rbx*8 - 0x10)) ^= rsi; 0x00445676 mov rsi, qword [rcx + rbx*8 - 8] | rsi = *((rcx + rbx*8 - 8)); 0x0044567b xor qword [rdx + rbx*8 - 8], rsi | *((rdx + rbx*8 - 8)) ^= rsi; 0x00445680 lea rbp, [rbx + 4] | rbp = rbx + 4; 0x00445684 mov rsi, qword [rcx + rbx*8] | rsi = *((rcx + rbx*8)); 0x00445688 xor qword [rdx + rbx*8], rsi | *((rdx + rbx*8)) ^= rsi; 0x0044568c mov rbx, rbp | rbx = rbp; 0x0044568f cmp rax, rbp | 0x00445692 jne 0x445662 | | } while (rax != rbp); | label_34: 0x00445694 inc r12 | r12++; 0x00445697 and r8d, 0x3f | r8d &= 0x3f; 0x0044569b mov rsi, r12 | rsi = r12; 0x0044569e xor ebx, ebx | ebx = 0; | label_22: 0x004456a0 test r8, r8 | | if (r8 == 0) { 0x004456a3 je 0x445744 | goto label_6; | } 0x004456a9 mov rsi, qword [r10 + rsi*8] | rsi = *((r10 + rsi*8)); 0x004456ad mov eax, 0x40 | eax = 0x40; 0x004456b2 sub eax, ebx | eax -= ebx; 0x004456b4 cmp eax, r8d | | if (eax >= r8d) { 0x004456b7 jge 0x445722 | goto label_36; | } 0x004456b9 cmp ebx, 0x40 | | if (ebx >= 0x40) { 0x004456bc jge 0x44575e | goto label_37; | } 0x004456c2 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x004456c9 mov ecx, eax | ecx = eax; 0x004456cb shl rdx, cl | rdx <<= cl; 0x004456ce mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x004456d5 mov r9d, eax | r9d = eax; 0x004456d8 test ebx, ebx | | if (ebx > 0) { 0x004456da jle 0x4456e2 | 0x004456dc not rdx | rdx = ~rdx; 0x004456df mov rdi, rdx | rdi = rdx; | } 0x004456e2 and rdi, rsi | rdi &= rsi; 0x004456e5 mov ecx, ebx | ecx = ebx; 0x004456e7 shl rdi, cl | rdi <<= cl; 0x004456ea xor qword [r13 + rbp*8], rdi | *((r13 + rbp*8)) ^= rdi; | do { 0x004456ef mov ecx, r9d | ecx = r9d; 0x004456f2 shr rsi, cl | rsi >>= cl; 0x004456f5 sub r8d, eax | r8d -= eax; 0x004456f8 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004456ff mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445706 mov ecx, r8d | ecx = r8d; 0x00445709 shl rdx, cl | rdx <<= cl; 0x0044570c cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00445710 jg 0x445718 | 0x00445712 not rdx | rdx = ~rdx; 0x00445715 mov rax, rdx | rax = rdx; | } 0x00445718 and rsi, rax | rsi &= rax; 0x0044571b xor qword [r13 + rbp*8 + 8], rsi | *((r13 + rbp*8 + 8)) ^= rsi; 0x00445720 jmp 0x445744 | goto label_6; | label_36: 0x00445722 cmp ebx, 0x3f | | if (ebx <= 0x3f) { 0x00445725 jg 0x445744 | 0x00445727 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x0044572e mov ecx, r8d | ecx = r8d; 0x00445731 shl rax, cl | rax <<= cl; 0x00445734 not rax | rax = ~rax; 0x00445737 and rsi, rax | rsi &= rax; 0x0044573a mov ecx, ebx | ecx = ebx; 0x0044573c shl rsi, cl | rsi <<= cl; 0x0044573f xor qword [r13 + rbp*8], rsi | *((r13 + rbp*8)) ^= rsi; | } | label_6: 0x00445744 pop rbx | 0x00445745 pop r12 | r12 = rbx; 0x00445747 pop r13 | r13 = rbx; 0x00445749 pop r14 | r14 = rbx; 0x0044574b pop r15 | r15 = rbx; 0x0044574d pop rbp | 0x0044574e ret | return rax; | label_19: 0x0044574f mov esi, edx | esi = edx; 0x00445751 jmp 0x445042 | goto label_3; | label_17: 0x00445756 mov r9d, eax | r9d = eax; 0x00445759 jmp 0x444ef5 | goto label_4; | label_37: 0x0044575e mov r9d, eax | r9d = eax; 0x00445761 jmp 0x4456ef | | } while (1); | }