; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/none @ 0x4440b0 */ | #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_ (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::orEqual(unsigned long*, unsigned long, unsigned long const*, unsigned long, unsigned long) */ 0x004440b0 push rbp | 0x004440b1 push r15 | 0x004440b3 push r14 | 0x004440b5 push r13 | 0x004440b7 push r12 | 0x004440b9 push rbx | 0x004440ba mov r11, rcx | r11 = rcx; 0x004440bd mov r15, rsi | r15 = rsi; 0x004440c0 shr r15, 6 | r15 >>= 6; 0x004440c4 lea r13, [rdi + r15*8] | r13 = rdi + r15*8; 0x004440c8 mov r9d, esi | r9d = esi; 0x004440cb and r9d, 0x3f | r9d &= 0x3f; 0x004440cf mov rbp, r13 | 0x004440d2 shr rbp, 3 | rbp >>= 3; 0x004440d6 mov r14, rcx | r14 = rcx; 0x004440d9 shr r14, 6 | r14 >>= 6; 0x004440dd lea r10, [rdx + r14*8] | r10 = rdx + r14*8; 0x004440e1 and ecx, 0x3f | ecx &= 0x3f; 0x004440e4 mov rbx, r10 | rbx = r10; 0x004440e7 shr rbx, 3 | rbx >>= 3; 0x004440eb sub rbp, rbx | rbp -= rbx; 0x004440ee mov ebx, r9d | ebx = r9d; 0x004440f1 sub ebx, ecx | ebx -= ecx; 0x004440f3 xor eax, eax | eax = 0; 0x004440f5 cmp ebx, 0x3f | 0x004440f8 seta al | al = (ebx > 0x3f) ? 1 : 0; 0x004440fb sub rbp, rax | rbp -= rax; 0x004440fe test rbp, rbp | | if (rbp <= 0) { 0x00444101 jg 0x44411d | 0x00444103 lea eax, [rbx + 0x40] | eax = rbx + 0x40; 0x00444106 cmp ebx, 0x40 | | if (ebx < 0x40) { 0x00444109 cmovb eax, ebx | eax = ebx; | } 0x0044410c test eax, eax | | if (eax == 0) { 0x0044410e je 0x4442b6 | goto label_5; | } 0x00444114 test rbp, rbp | | if (rbp != 0) { 0x00444117 jne 0x4442b6 | goto label_5; | } | } 0x0044411d test r8, r8 | | if (r8 == 0) { 0x00444120 je 0x444be4 | goto label_6; | } 0x00444126 add rsi, r8 | rsi += r8; 0x00444129 mov r15, rsi | r15 = rsi; 0x0044412c shr r15, 6 | r15 >>= 6; 0x00444130 lea r10, [rdi + r15*8] | r10 = rdi + r15*8; 0x00444134 and esi, 0x3f | esi &= 0x3f; 0x00444137 add r11, r8 | r11 += r8; 0x0044413a mov r12, r11 | r12 = r11; 0x0044413d shr r12, 6 | r12 >>= 6; 0x00444141 lea r14, [rdx + r12*8] | r14 = rdx + r12*8; 0x00444145 and r11d, 0x3f | r11d &= 0x3f; | if (r11d != 0) { 0x00444149 je 0x444200 | 0x0044414f mov r9d, r11d | r9d = r11d; 0x00444152 cmp r9, r8 | | if (r9 >= r8) { 0x00444155 jae 0x44432c | goto label_7; | } 0x0044415b lea eax, [rsi + 0x40] | eax = rsi + 0x40; 0x0044415e cmp esi, r11d | | if (esi >= r11d) { 0x00444161 cmovae eax, esi | eax = esi; | } 0x00444164 sbb r13, r13 | r13 -= r13; 0x00444167 mov esi, eax | esi = eax; 0x00444169 sub esi, r11d | esi -= r11d; 0x0044416c lea rbx, [r10 + r13*8] | rbx = r10 + r13*8; 0x00444170 mov rbp, qword [r14] | rbp = *(r14); 0x00444173 mov ecx, 0x40 | ecx = 0x40; 0x00444178 sub ecx, esi | ecx -= esi; 0x0044417a sub r11d, ecx | r11d -= ecx; | if (r11d <= 0) { 0x0044417d jle 0x4443cb | goto label_8; | } 0x00444183 mov rax, rbx | rax = rbx; 0x00444186 mov qword [rsp - 0x28], r14 | *((rsp - 0x28)) = r14; 0x0044418b mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x00444190 mov r10d, ecx | r10d = ecx; 0x00444193 cmp esi, 0x40 | | if (esi < 0x40) { 0x00444196 jge 0x4441be | 0x00444198 mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x0044419f mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x004441a6 shl rbx, cl | rbx <<= cl; 0x004441a9 test esi, esi | | if (esi > 0) { 0x004441ab jle 0x4441b3 | 0x004441ad not rbx | rbx = ~rbx; 0x004441b0 mov r14, rbx | r14 = rbx; | } 0x004441b3 and r14, rbp | r14 &= rbp; 0x004441b6 mov ecx, esi | ecx = esi; 0x004441b8 shl r14, cl | r14 <<= cl; 0x004441bb or qword [rax], r14 | *(rax) |= r14; | } 0x004441be mov ecx, r10d | ecx = r10d; 0x004441c1 shr rbp, cl | rbp >>= cl; 0x004441c4 add rax, 8 | rax += 8; 0x004441c8 mov r10, 0xffffffffffffffff | r10 = 0xffffffffffffffff; 0x004441cf mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x004441d6 mov ecx, r11d | ecx = r11d; 0x004441d9 shl rbx, cl | rbx <<= cl; 0x004441dc cmp r11d, 0x3f | 0x004441e0 mov r14, qword [rsp - 0x28] | r14 = *((rsp - 0x28)); | if (r11d <= 0x3f) { 0x004441e5 jg 0x4441ed | 0x004441e7 not rbx | rbx = ~rbx; 0x004441ea mov r10, rbx | r10 = rbx; | } 0x004441ed and rbp, r10 | rbp &= r10; 0x004441f0 mov rbx, rax | rbx = rax; 0x004441f3 mov rax, qword [rax] | rax = *(rax); 0x004441f6 mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x004441fb jmp 0x4443ee | goto label_9; | } 0x00444200 xor r13d, r13d | r13d = 0; 0x00444203 test esi, esi | | if (esi == 0) { 0x00444205 je 0x4443ff | goto label_10; | } | label_0: 0x0044420b cmp r8, 0x40 | | if (r8 < 0x40) { 0x0044420f jb 0x44447a | goto label_11; | } 0x00444215 mov qword [rsp - 0x28], r14 | *((rsp - 0x28)) = r14; 0x0044421a mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x0044421f mov r10d, 0x40 | r10d = 0x40; 0x00444225 sub r10d, esi | r10d -= esi; 0x00444228 mov r9d, esi | r9d = esi; 0x0044422b mov ecx, esi | ecx = esi; 0x0044422d neg ecx | ecx = -ecx; 0x0044422f mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x00444236 mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x0044423d shl r14, cl | r14 <<= cl; 0x00444240 test esi, esi | 0x00444242 not r14 | r14 = ~r14; | if (esi <= 0) { 0x00444245 cmovle r14, r11 | r14 = r11; | } 0x00444249 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444250 mov ecx, esi | ecx = esi; 0x00444252 shl rax, cl | rax <<= cl; 0x00444255 cmp esi, 0x3f | | if (esi <= 0x3f) { 0x00444258 jg 0x444260 | 0x0044425a not rax | rax = ~rax; 0x0044425d mov r11, rax | r11 = rax; | } 0x00444260 add r15, r13 | r15 += r13; 0x00444263 lea rdi, [rdi + r15*8] | rdi = rdi + r15*8; 0x00444267 lea rdx, [rdx + r12*8 - 8] | rdx = rdx + r12*8 - 8; 0x0044426c xor ebx, ebx | ebx = 0; 0x0044426e nop | | do { 0x00444270 mov rbp, qword [rdx + rbx*8] | rbp = *((rdx + rbx*8)); 0x00444274 cmp esi, 0x3f | | if (esi <= 0x3f) { 0x00444277 jg 0x44428a | 0x00444279 mov rax, rbp | rax = rbp; 0x0044427c and rax, r14 | rax &= r14; 0x0044427f mov ecx, r9d | ecx = r9d; 0x00444282 shl rax, cl | rax <<= cl; 0x00444285 or qword [rdi + rbx*8 - 8], rax | *((rdi + rbx*8 - 8)) |= rax; | } 0x0044428a mov ecx, r10d | ecx = r10d; 0x0044428d shr rbp, cl | rbp >>= cl; 0x00444290 and rbp, r11 | rbp &= r11; 0x00444293 or qword [rdi + rbx*8], rbp | *((rdi + rbx*8)) |= rbp; 0x00444297 dec rbx | rbx--; 0x0044429a add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x0044429e cmp r8, 0x3f | 0x004442a2 ja 0x444270 | | } while (r8 > 0x3f); 0x004442a4 add r13, rbx | r13 += rbx; 0x004442a7 mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x004442ac mov r14, qword [rsp - 0x28] | r14 = *((rsp - 0x28)); 0x004442b1 jmp 0x44447c | goto label_1; | label_5: 0x004442b6 test r8, r8 | | if (r8 == 0) { 0x004442b9 je 0x444be4 | goto label_6; | } 0x004442bf test ecx, ecx | | if (ecx == 0) { 0x004442c1 je 0x44457b | goto label_12; | } 0x004442c7 mov rbp, rdi | 0x004442ca mov rdi, rdx | rdi = rdx; 0x004442cd mov rdx, r10 | rdx = r10; 0x004442d0 mov r10d, 0x40 | r10d = 0x40; 0x004442d6 mov eax, 0x40 | eax = 0x40; 0x004442db sub eax, ecx | eax -= ecx; 0x004442dd mov rsi, qword [rdx] | rsi = *(rdx); 0x004442e0 shr rsi, cl | rsi >>= cl; 0x004442e3 cmp rax, r8 | | if (rax >= r8) { 0x004442e6 jae 0x44459b | goto label_13; | } 0x004442ec mov rbx, rdx | rbx = rdx; 0x004442ef cmp r9d, ecx | | if (r9d <= ecx) { 0x004442f2 jbe 0x444619 | goto label_14; | } 0x004442f8 mov rdx, rsi | rdx = rsi; 0x004442fb mov ecx, r9d | ecx = r9d; 0x004442fe shl rdx, cl | rdx <<= cl; 0x00444301 sub r10d, r9d | r10d -= r9d; 0x00444304 or qword [r13], rdx | *(r13) |= rdx; 0x00444308 mov ecx, r10d | ecx = r10d; 0x0044430b shr rsi, cl | rsi >>= cl; 0x0044430e mov ecx, eax | ecx = eax; 0x00444310 sub ecx, r10d | ecx -= r10d; 0x00444313 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x0044431a shl rdx, cl | rdx <<= cl; 0x0044431d lea rcx, [r13 + 8] | rcx = r13 + 8; 0x00444321 not rdx | rdx = ~rdx; 0x00444324 and rsi, rdx | rsi &= rdx; 0x00444327 jmp 0x444634 | goto label_15; | label_7: 0x0044432c lea edx, [rsi + 0x40] | edx = rsi + 0x40; 0x0044432f cmp esi, r8d | | if (esi >= r8d) { 0x00444332 cmovae edx, esi | edx = esi; | } 0x00444335 sbb rdi, rdi | rdi -= rdi; 0x00444338 sub r11d, r8d | r11d -= r8d; 0x0044433b mov rbp, qword [r14] | rbp = *(r14); 0x0044433e mov ecx, r11d | ecx = r11d; 0x00444341 shr rbp, cl | rbp >>= cl; 0x00444344 test r8d, r8d | | if (r8d == 0) { 0x00444347 je 0x444be4 | goto label_6; | } 0x0044434d sub edx, r8d | edx -= r8d; 0x00444350 mov eax, 0x40 | eax = 0x40; 0x00444355 sub eax, edx | eax -= edx; 0x00444357 cmp eax, r8d | | if (eax >= r8d) { 0x0044435a jge 0x444541 | goto label_16; | } 0x00444360 cmp edx, 0x40 | | if (edx >= 0x40) { 0x00444363 jge 0x444bf6 | goto label_17; | } 0x00444369 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00444370 mov ecx, eax | ecx = eax; 0x00444372 shl rsi, cl | rsi <<= cl; 0x00444375 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x0044437c mov r9d, eax | r9d = eax; 0x0044437f test edx, edx | | if (edx > 0) { 0x00444381 jle 0x444389 | 0x00444383 not rsi | rsi = ~rsi; 0x00444386 mov rbx, rsi | rbx = rsi; | } 0x00444389 and rbx, rbp | rbx &= rbp; 0x0044438c mov ecx, edx | ecx = edx; 0x0044438e shl rbx, cl | rbx <<= cl; 0x00444391 or qword [r10 + rdi*8], rbx | *((r10 + rdi*8)) |= rbx; | label_4: 0x00444395 mov ecx, r9d | ecx = r9d; 0x00444398 shr rbp, cl | rbp >>= cl; 0x0044439b sub r8d, eax | r8d -= eax; 0x0044439e mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004443a5 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x004443ac mov ecx, r8d | ecx = r8d; 0x004443af shl rdx, cl | rdx <<= cl; 0x004443b2 cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x004443b6 jg 0x4443be | 0x004443b8 not rdx | rdx = ~rdx; 0x004443bb mov rax, rdx | rax = rdx; | } 0x004443be and rbp, rax | rbp &= rax; 0x004443c1 or qword [r10 + rdi*8 + 8], rbp | *((r10 + rdi*8 + 8)) |= rbp; 0x004443c6 jmp 0x444be4 | goto label_6; | label_8: 0x004443cb cmp esi, 0x3f | | if (esi <= 0x3f) { 0x004443ce jg 0x4443f4 | 0x004443d0 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004443d7 mov ecx, r9d | ecx = r9d; 0x004443da shl rax, cl | rax <<= cl; 0x004443dd not rax | rax = ~rax; 0x004443e0 and rbp, rax | rbp &= rax; 0x004443e3 mov ecx, esi | ecx = esi; 0x004443e5 shl rbp, cl | rbp <<= cl; 0x004443e8 mov rax, rbp | rax = rbp; 0x004443eb mov rbp, qword [rbx] | rbp = *(rbx); | label_9: 0x004443ee or rax, rbp | rax |= rbp; 0x004443f1 mov qword [rbx], rax | *(rbx) = rax; | } 0x004443f4 sub r8, r9 | r8 -= r9; 0x004443f7 test esi, esi | | if (esi != 0) { 0x004443f9 jne 0x44420b | goto label_0; | } | label_10: 0x004443ff cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444403 jb 0x44447a | goto label_11; | } 0x00444405 lea r11, [r8 - 0x40] | r11 = r8 - 0x40; 0x00444409 cmp r11, 0xc0 | | if (r11 >= 0xc0) { 0x00444410 jb 0x444447 | 0x00444412 shr r11, 6 | r11 >>= 6; 0x00444416 lea rbp, [r13 + r15] | rbp = r13 + r15; 0x0044441b mov rcx, r11 | rcx = r11; 0x0044441e not rcx | rcx = ~rcx; 0x00444421 lea rbx, [rbp + rcx] | rbx = rbp + rcx; 0x00444426 lea rbx, [rdi + rbx*8] | rbx = rdi + rbx*8; 0x0044442a cmp rbx, r14 | | if (rbx >= r14) { 0x0044442d jae 0x44483e | goto label_18; | } 0x00444433 lea rbx, [rdi + rbp*8] | rbx = rdi + rbp*8; 0x00444437 add rcx, r12 | rcx += r12; 0x0044443a lea rcx, [rdx + rcx*8] | rcx = rdx + rcx*8; 0x0044443e cmp rcx, rbx | | if (rcx >= rbx) { 0x00444441 jae 0x44483e | goto label_18; | } | } 0x00444447 xor ebx, ebx | ebx = 0; | label_2: 0x00444449 lea rax, [rdi + r15*8 - 8] | rax = rdi + r15*8 - 8; 0x0044444e lea rcx, [rdx + r12*8 - 8] | rcx = rdx + r12*8 - 8; 0x00444453 nop word cs:[rax + rax] | 0x0044445d nop dword [rax] | | do { 0x00444460 mov rdx, qword [rcx + rbx*8] | rdx = *((rcx + rbx*8)); 0x00444464 or qword [rax + r13*8], rdx | *((rax + r13*8)) |= rdx; 0x00444468 dec rbx | rbx--; 0x0044446b dec r13 | r13--; 0x0044446e add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00444472 cmp r8, 0x3f | 0x00444476 ja 0x444460 | | } while (r8 > 0x3f); 0x00444478 jmp 0x44447c | goto label_1; | label_11: 0x0044447a xor ebx, ebx | ebx = 0; | label_1: 0x0044447c test r8d, r8d | | if (r8d == 0) { 0x0044447f je 0x444be4 | goto label_6; | } 0x00444485 lea eax, [rsi + 0x40] | eax = rsi + 0x40; 0x00444488 cmp esi, r8d | | if (esi >= r8d) { 0x0044448b cmovae eax, esi | eax = esi; | } 0x0044448e sbb r13, 0 | 0x00444492 mov rdi, qword [r14 + rbx*8 - 8] | rdi = *((r14 + rbx*8 - 8)); 0x00444497 mov ecx, r8d | ecx = r8d; 0x0044449a neg cl | cl = -cl; 0x0044449c shr rdi, cl | rdi >>= cl; 0x0044449f sub eax, r8d | eax -= r8d; 0x004444a2 mov edx, 0x40 | edx = 0x40; 0x004444a7 sub edx, eax | edx -= eax; 0x004444a9 cmp edx, r8d | | if (edx < r8d) { 0x004444ac jge 0x444517 | 0x004444ae cmp eax, 0x40 | | if (eax >= 0x40) { 0x004444b1 jge 0x444bef | goto label_19; | } 0x004444b7 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x004444be mov ecx, edx | ecx = edx; 0x004444c0 shl rbx, cl | rbx <<= cl; 0x004444c3 mov rbp, 0xffffffffffffffff | 0x004444ca mov esi, edx | esi = edx; 0x004444cc test eax, eax | | if (eax > 0) { 0x004444ce jle 0x4444d6 | 0x004444d0 not rbx | rbx = ~rbx; 0x004444d3 mov rbp, rbx | | } 0x004444d6 and rbp, rdi | rbp &= rdi; 0x004444d9 mov ecx, eax | ecx = eax; 0x004444db shl rbp, cl | rbp <<= cl; 0x004444de or qword [r10 + r13*8], rbp | *((r10 + r13*8)) |= rbp; | label_3: 0x004444e2 mov ecx, esi | ecx = esi; 0x004444e4 shr rdi, cl | rdi >>= cl; 0x004444e7 sub r8d, edx | r8d -= edx; 0x004444ea mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004444f1 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x004444f8 mov ecx, r8d | ecx = r8d; 0x004444fb shl rdx, cl | rdx <<= cl; 0x004444fe cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00444502 jg 0x44450a | 0x00444504 not rdx | rdx = ~rdx; 0x00444507 mov rax, rdx | rax = rdx; | } 0x0044450a and rdi, rax | rdi &= rax; 0x0044450d or qword [r10 + r13*8 + 8], rdi | *((r10 + r13*8 + 8)) |= rdi; 0x00444512 jmp 0x444be4 | goto label_6; | } 0x00444517 cmp eax, 0x3f | | if (eax > 0x3f) { 0x0044451a jg 0x444be4 | goto label_6; | } 0x00444520 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00444527 mov ecx, r8d | ecx = r8d; 0x0044452a shl rdx, cl | rdx <<= cl; 0x0044452d not rdx | rdx = ~rdx; 0x00444530 and rdi, rdx | rdi &= rdx; 0x00444533 mov ecx, eax | ecx = eax; 0x00444535 shl rdi, cl | rdi <<= cl; 0x00444538 or qword [r10 + r13*8], rdi | *((r10 + r13*8)) |= rdi; 0x0044453c jmp 0x444be4 | goto label_6; | label_16: 0x00444541 cmp edx, 0x3f | | if (edx > 0x3f) { 0x00444544 jg 0x444be4 | goto label_6; | } 0x0044454a mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444551 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x00444558 mov ecx, r8d | ecx = r8d; 0x0044455b shl rsi, cl | rsi <<= cl; 0x0044455e cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00444562 jg 0x44456a | 0x00444564 not rsi | rsi = ~rsi; 0x00444567 mov rax, rsi | rax = rsi; | } 0x0044456a and rbp, rax | rbp &= rax; 0x0044456d mov ecx, edx | ecx = edx; 0x0044456f shl rbp, cl | rbp <<= cl; 0x00444572 or qword [r10 + rdi*8], rbp | *((r10 + rdi*8)) |= rbp; 0x00444576 jmp 0x444be4 | goto label_6; | label_12: 0x0044457b xor esi, esi | esi = 0; 0x0044457d test r9d, r9d | | if (r9d == 0) { 0x00444580 je 0x444663 | goto label_20; | } | do { 0x00444586 mov ebx, r9d | ebx = r9d; 0x00444589 mov rbp, rsi | 0x0044458c cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00444590 jae 0x444786 | goto label_21; | } 0x00444596 jmp 0x444b40 | goto label_22; | label_13: 0x0044459b test r8d, r8d | | if (r8d == 0) { 0x0044459e je 0x444be4 | goto label_6; | } 0x004445a4 movabs rbx, 0x7fffffffffffffff | rbx = 0x7fffffffffffffff; 0x004445ae mov eax, 0x40 | eax = 0x40; 0x004445b3 sub eax, r9d | eax -= r9d; 0x004445b6 cmp eax, r8d | | if (eax >= r8d) { 0x004445b9 jge 0x4449cd | goto label_23; | } 0x004445bf mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x004445c6 mov ecx, eax | ecx = eax; 0x004445c8 shl rdi, cl | rdi <<= cl; 0x004445cb mov rbp, 0xffffffffffffffff | 0x004445d2 mov edx, eax | edx = eax; 0x004445d4 test r9d, r9d | | if (r9d != 0) { 0x004445d7 je 0x4445df | 0x004445d9 not rdi | rdi = ~rdi; 0x004445dc mov rbx, rdi | rbx = rdi; | } 0x004445df and rbx, rsi | rbx &= rsi; 0x004445e2 mov ecx, r9d | ecx = r9d; 0x004445e5 shl rbx, cl | rbx <<= cl; 0x004445e8 or qword [r13], rbx | *(r13) |= rbx; 0x004445ec mov ecx, edx | ecx = edx; 0x004445ee shr rsi, cl | rsi >>= cl; 0x004445f1 sub r8d, eax | r8d -= eax; 0x004445f4 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004445fb mov ecx, r8d | ecx = r8d; 0x004445fe shl rax, cl | rax <<= cl; 0x00444601 cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00444605 jg 0x44460d | 0x00444607 not rax | rax = ~rax; 0x0044460a mov rbp, rax | | } 0x0044460d and rsi, rbp | rsi &= rbp; 0x00444610 or qword [r13 + 8], rsi | *((r13 + 8)) |= rsi; 0x00444614 jmp 0x444be4 | goto label_6; | label_14: 0x00444619 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00444620 mov ecx, eax | ecx = eax; 0x00444622 shl rdx, cl | rdx <<= cl; 0x00444625 not rdx | rdx = ~rdx; 0x00444628 and rsi, rdx | rsi &= rdx; 0x0044462b mov ecx, r9d | ecx = r9d; 0x0044462e shl rsi, cl | rsi <<= cl; 0x00444631 mov rcx, r13 | rcx = r13; | label_15: 0x00444634 mov rdx, rdi | rdx = rdi; 0x00444637 mov rdi, rbp | rdi = rbp; 0x0044463a mov r10, rbx | r10 = rbx; 0x0044463d or qword [rcx], rsi | *(rcx) |= rsi; 0x00444640 lea ebx, [rax + r9] | ebx = rax + r9; 0x00444644 sub r8, rax | r8 -= rax; 0x00444647 mov esi, 1 | esi = 1; 0x0044464c cmp ebx, 0x40 | | if (ebx < 0x40) { 0x0044464f jb 0x44477a | goto label_24; | } 0x00444655 lea r9d, [rax + r9 - 0x40] | r9d = rax + r9 - 0x40; 0x0044465a test r9d, r9d | 0x0044465d jne 0x444586 | | } while (r9d != 0); | label_20: 0x00444663 xor ebx, ebx | ebx = 0; 0x00444665 cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444669 jb 0x4449c5 | goto label_25; | } 0x0044466f lea rax, [r8 - 0x40] | rax = r8 - 0x40; 0x00444673 mov r11, rax | r11 = rax; 0x00444676 shr r11, 6 | r11 >>= 6; 0x0044467a lea r12, [r11 + rsi] | r12 = r11 + rsi; 0x0044467e mov qword [rsp - 0x30], rsi | *((rsp - 0x30)) = rsi; 0x00444683 mov rbx, rsi | rbx = rsi; 0x00444686 cmp rax, 0xc0 | | if (rax < 0xc0) { 0x0044468c jb 0x444ab0 | goto label_26; | } 0x00444692 mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x00444697 lea rax, [rcx + r15] | rax = rcx + r15; 0x0044469b lea rbx, [rdi + rax*8] | rbx = rdi + rax*8; 0x0044469f lea rsi, [rcx + r14] | rsi = rcx + r14; 0x004446a3 lea rbp, [rsi + r11] | rbp = rsi + r11; 0x004446a7 lea rbp, [rdx + rbp*8 + 8] | rbp = rdx + rbp*8 + 8; 0x004446ac cmp rbx, rbp | | if (rbx < rbp) { 0x004446af jae 0x4446cb | 0x004446b1 add rax, r11 | rax += r11; 0x004446b4 lea rax, [rdi + rax*8 + 8] | rax = rdi + rax*8 + 8; 0x004446b9 lea rsi, [rdx + rsi*8] | rsi = rdx + rsi*8; 0x004446bd mov rbx, qword [rsp - 0x30] | rbx = *((rsp - 0x30)); 0x004446c2 cmp rsi, rax | | if (rsi < rax) { 0x004446c5 jb 0x444ab0 | goto label_26; | } | } 0x004446cb mov qword [rsp - 0x28], r10 | *((rsp - 0x28)) = r10; 0x004446d0 mov rcx, r13 | rcx = r13; 0x004446d3 mov qword [rsp - 0x10], rdi | *((rsp - 0x10)) = rdi; 0x004446d8 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x004446dd lea rdx, [r11 + 1] | rdx = r11 + 1; 0x004446e1 mov r13, rdx | r13 = rdx; 0x004446e4 and r13, 0xfffffffffffffffc | r13 &= 0xfffffffffffffffc; 0x004446e8 lea rax, [r13 - 4] | rax = r13 - 4; 0x004446ec mov r9, rax | r9 = rax; 0x004446ef shr r9, 2 | r9 >>= 2; 0x004446f3 inc r9 | r9++; 0x004446f6 test rax, rax | | if (rax == 0) { 0x004446f9 je 0x444a55 | goto label_27; | } 0x004446ff mov rsi, r9 | rsi = r9; 0x00444702 and rsi, 0xfffffffffffffffe | rsi &= 0xfffffffffffffffe; 0x00444706 neg rsi | rsi = -rsi; 0x00444709 xor ebp, ebp | ebp = 0; 0x0044470b mov rbx, rcx | rbx = rcx; 0x0044470e mov r10, qword [rsp - 0x28] | r10 = *((rsp - 0x28)); 0x00444713 mov rdi, qword [rsp - 0x30] | rdi = *((rsp - 0x30)); | do { 0x00444718 mov rax, rdi | rax = *((rsp - 0x30)); 0x0044471b or rax, rbp | rax |= rbp; 0x0044471e movups xmm0, xmmword [r10 + rax*8] | __asm ("movups xmm0, xmmword [r10 + rax*8]"); 0x00444723 movups xmm1, xmmword [r10 + rax*8 + 0x10] | __asm ("movups xmm1, xmmword [r10 + rax*8 + 0x10]"); 0x00444729 movups xmm2, xmmword [rbx + rax*8] | __asm ("movups xmm2, xmmword [rbx + rax*8]"); 0x0044472d orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x00444730 movups xmm0, xmmword [rbx + rax*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rax*8 + 0x10]"); 0x00444735 orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x00444738 movups xmmword [rbx + rax*8], xmm2 | __asm ("movups xmmword [rbx + rax*8], xmm2"); 0x0044473c movups xmmword [rbx + rax*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rax*8 + 0x10], xmm0"); 0x00444741 lea rax, [rbp + 4] | rax = rbp + 4; 0x00444745 or rax, rdi | rax |= rdi; 0x00444748 movups xmm0, xmmword [r10 + rax*8] | __asm ("movups xmm0, xmmword [r10 + rax*8]"); 0x0044474d movups xmm1, xmmword [r10 + rax*8 + 0x10] | __asm ("movups xmm1, xmmword [r10 + rax*8 + 0x10]"); 0x00444753 movups xmm2, xmmword [rbx + rax*8] | __asm ("movups xmm2, xmmword [rbx + rax*8]"); 0x00444757 orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x0044475a movups xmm0, xmmword [rbx + rax*8 + 0x10] | __asm ("movups xmm0, xmmword [rbx + rax*8 + 0x10]"); 0x0044475f orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x00444762 movups xmmword [rbx + rax*8], xmm2 | __asm ("movups xmmword [rbx + rax*8], xmm2"); 0x00444766 movups xmmword [rbx + rax*8 + 0x10], xmm0 | __asm ("movups xmmword [rbx + rax*8 + 0x10], xmm0"); 0x0044476b add rbp, 8 | rbp += 8; 0x0044476f add rsi, 2 | rsi += 2; 0x00444773 jne 0x444718 | | } while (rsi != 0); 0x00444775 jmp 0x444a57 | goto label_28; | label_24: 0x0044477a xor ebp, ebp | ebp = 0; 0x0044477c cmp r8, 0x40 | | if (r8 < 0x40) { 0x00444780 jb 0x444b40 | goto label_22; | } | label_21: 0x00444786 mov qword [rsp - 0x28], r10 | *((rsp - 0x28)) = r10; 0x0044478b mov qword [rsp - 0x20], r13 | *((rsp - 0x20)) = r13; 0x00444790 mov qword [rsp - 0x18], rdx | *((rsp - 0x18)) = rdx; 0x00444795 mov r12d, 0x40 | r12d = 0x40; 0x0044479b sub r12d, ebx | r12d -= ebx; 0x0044479e mov r11, rbp | r11 = rbp; 0x004447a1 mov r9d, ebx | r9d = ebx; 0x004447a4 mov ecx, ebx | ecx = ebx; 0x004447a6 neg ecx | ecx = -ecx; 0x004447a8 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x004447af mov rbp, 0xffffffffffffffff | 0x004447b6 shl rbp, cl | rbp <<= cl; 0x004447b9 test ebx, ebx | 0x004447bb not rbp | rbp = ~rbp; | if (ebx <= 0) { 0x004447be cmovle rbp, r13 | | } 0x004447c2 lea rdx, [r8 - 0x40] | rdx = r8 - 0x40; 0x004447c6 mov rax, rdx | rax = rdx; 0x004447c9 shr rax, 6 | rax >>= 6; 0x004447cd mov ecx, ebx | ecx = ebx; 0x004447cf shl r13, cl | r13 <<= cl; 0x004447d2 not r13 | r13 = ~r13; 0x004447d5 lea rcx, [r11 + r15] | rcx = r11 + r15; 0x004447d9 mov qword [rsp - 0x10], rdi | *((rsp - 0x10)) = rdi; 0x004447de mov r10, qword [rdi + rcx*8] | r10 = *((rdi + rcx*8)); 0x004447e2 test dl, 0x40 | | if ((dl & 0x40) != 0) { 0x004447e5 jne 0x4448fe | goto label_29; | } 0x004447eb mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x004447f0 mov rdx, qword [rcx + rsi*8] | rdx = *((rcx + rsi*8)); 0x004447f4 mov rdi, rsi | rdi = rsi; 0x004447f7 mov esi, ebx | esi = ebx; 0x004447f9 mov rbx, rdx | rbx = rdx; 0x004447fc and rbx, rbp | rbx &= rbp; 0x004447ff mov ecx, r9d | ecx = r9d; 0x00444802 shl rbx, cl | rbx <<= cl; 0x00444805 or rbx, r10 | rbx |= r10; 0x00444808 mov ecx, r12d | ecx = r12d; 0x0044480b shr rdx, cl | rdx >>= cl; 0x0044480e mov rcx, qword [rsp - 0x20] | rcx = *((rsp - 0x20)); 0x00444813 mov qword [rcx + r11*8], rbx | *((rcx + r11*8)) = rbx; 0x00444817 mov ebx, esi | ebx = esi; 0x00444819 and rdx, r13 | rdx &= r13; 0x0044481c or rdx, qword [rcx + r11*8 + 8] | rdx |= *((rcx + r11*8 + 8)); 0x00444821 mov qword [rcx + r11*8 + 8], rdx | *((rcx + r11*8 + 8)) = rdx; 0x00444826 lea rsi, [r11 + 1] | rsi = r11 + 1; 0x0044482a lea rcx, [rdi + 1] | rcx = rdi + 1; 0x0044482e mov qword [rsp - 0x30], rsi | *((rsp - 0x30)) = rsi; 0x00444833 mov rsi, rdi | rsi = rdi; 0x00444836 mov r10, rdx | r10 = rdx; 0x00444839 jmp 0x444906 | goto label_30; | label_18: 0x0044483e inc r11 | r11++; 0x00444841 mov rax, r11 | rax = r11; 0x00444844 and rax, 0xfffffffffffffffc | rax &= 0xfffffffffffffffc; 0x00444848 lea rcx, [rax - 4] | rcx = rax - 4; 0x0044484c mov r9, rcx | r9 = rcx; 0x0044484f shr r9, 2 | r9 >>= 2; 0x00444853 inc r9 | r9++; 0x00444856 test rcx, rcx | | if (rcx == 0) { 0x00444859 je 0x4449f8 | goto label_31; | } 0x0044485f mov qword [rsp - 0x20], rax | *((rsp - 0x20)) = rax; 0x00444864 mov qword [rsp - 0x28], r14 | *((rsp - 0x28)) = r14; 0x00444869 mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x0044486e mov rax, rdx | rax = rdx; 0x00444871 lea rcx, [rdx + r12*8 - 0x10] | rcx = rdx + r12*8 - 0x10; 0x00444876 mov r14, rdi | r14 = rdi; 0x00444879 lea rbp, [rdi + rbp*8 - 0x10] | rbp = rdi + rbp*8 - 0x10; 0x0044487e mov r10, r9 | r10 = r9; 0x00444881 and r10, 0xfffffffffffffffe | r10 &= 0xfffffffffffffffe; 0x00444885 neg r10 | r10 = -r10; 0x00444888 mov rbx, 0xfffffffffffffffe | rbx = 0xfffffffffffffffe; 0x0044488f nop | | do { 0x00444890 movups xmm0, xmmword [rcx + rbx*8] | __asm ("movups xmm0, xmmword [rcx + rbx*8]"); 0x00444894 movups xmm1, xmmword [rcx + rbx*8 + 0x10] | __asm ("movups xmm1, xmmword [rcx + rbx*8 + 0x10]"); 0x00444899 movups xmm2, xmmword [rbp + rbx*8 - 0x20] | __asm ("movups xmm2, xmmword [rbp + rbx*8 - 0x20]"); 0x0044489e movups xmm3, xmmword [rbp + rbx*8 - 0x10] | __asm ("movups xmm3, xmmword [rbp + rbx*8 - 0x10]"); 0x004448a3 movups xmm4, xmmword [rbp + rbx*8] | __asm ("movups xmm4, xmmword [rbp + rbx*8]"); 0x004448a8 orps xmm4, xmm0 | __asm ("orps xmm4, xmm0"); 0x004448ab movups xmm0, xmmword [rbp + rbx*8 + 0x10] | __asm ("movups xmm0, xmmword [rbp + rbx*8 + 0x10]"); 0x004448b0 orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x004448b3 movups xmmword [rbp + rbx*8 + 0x10], xmm0 | __asm ("movups xmmword [rbp + rbx*8 + 0x10], xmm0"); 0x004448b8 movups xmmword [rbp + rbx*8], xmm4 | __asm ("movups xmmword [rbp + rbx*8], xmm4"); 0x004448bd movups xmm0, xmmword [rcx + rbx*8 - 0x20] | __asm ("movups xmm0, xmmword [rcx + rbx*8 - 0x20]"); 0x004448c2 orps xmm0, xmm2 | __asm ("orps xmm0, xmm2"); 0x004448c5 movups xmm1, xmmword [rcx + rbx*8 - 0x10] | __asm ("movups xmm1, xmmword [rcx + rbx*8 - 0x10]"); 0x004448ca orps xmm1, xmm3 | __asm ("orps xmm1, xmm3"); 0x004448cd movups xmmword [rbp + rbx*8 - 0x10], xmm1 | __asm ("movups xmmword [rbp + rbx*8 - 0x10], xmm1"); 0x004448d2 movups xmmword [rbp + rbx*8 - 0x20], xmm0 | __asm ("movups xmmword [rbp + rbx*8 - 0x20], xmm0"); 0x004448d7 add rbx, 0xfffffffffffffff8 | rbx += 0xfffffffffffffff8; 0x004448db add r10, 2 | r10 += 2; 0x004448df jne 0x444890 | | } while (r10 != 0); 0x004448e1 inc rbx | rbx++; 0x004448e4 mov rdx, rax | rdx = rax; 0x004448e7 mov rdi, r14 | rdi = r14; 0x004448ea mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x004448ef mov r14, qword [rsp - 0x28] | r14 = *((rsp - 0x28)); 0x004448f4 mov rax, qword [rsp - 0x20] | rax = *((rsp - 0x20)); 0x004448f9 jmp 0x4449ff | goto label_32; | label_29: 0x004448fe mov qword [rsp - 0x30], r11 | *((rsp - 0x30)) = r11; 0x00444903 mov rcx, rsi | rcx = rsi; | label_30: 0x00444906 add rsi, rax | rsi += rax; 0x00444909 test rax, rax | | if (rax == 0) { 0x0044490c je 0x4449aa | goto label_33; | } 0x00444912 mov dword [rsp - 4], ebx | *((rsp - 4)) = ebx; 0x00444916 add r14, rcx | r14 += rcx; 0x00444919 mov rax, qword [rsp - 0x18] | rax = *((rsp - 0x18)); 0x0044491e lea rdx, [rax + r14*8 + 8] | rdx = rax + r14*8 + 8; 0x00444923 mov r14, rsi | r14 = rsi; 0x00444926 mov r11, rsi | r11 = rsi; 0x00444929 sub r11, rcx | r11 -= rcx; 0x0044492c inc r11 | r11++; 0x0044492f add r15, qword [rsp - 0x30] | r15 += *((rsp - 0x30)); 0x00444934 mov rax, qword [rsp - 0x10] | rax = *((rsp - 0x10)); 0x00444939 lea rax, [rax + r15*8 + 0x10] | rax = rax + r15*8 + 0x10; 0x0044493e xor edi, edi | edi = 0; | do { 0x00444940 mov rsi, qword [rdx + rdi*8 - 8] | rsi = *((rdx + rdi*8 - 8)); 0x00444945 mov rbx, rsi | rbx = *((rdx + rdi*8 - 8)); 0x00444948 and rbx, rbp | rbx &= rbp; 0x0044494b mov ecx, r9d | ecx = r9d; 0x0044494e shl rbx, cl | rbx <<= cl; 0x00444951 or rbx, r10 | rbx |= r10; 0x00444954 mov qword [rax + rdi*8 - 0x10], rbx | *((rax + rdi*8 - 0x10)) = rbx; 0x00444959 mov ecx, r12d | ecx = r12d; 0x0044495c shr rsi, cl | rsi >>= cl; 0x0044495f and rsi, r13 | rsi &= r13; 0x00444962 or rsi, qword [rax + rdi*8 - 8] | rsi |= *((rax + rdi*8 - 8)); 0x00444967 mov qword [rax + rdi*8 - 8], rsi | *((rax + rdi*8 - 8)) = rsi; 0x0044496c mov r10, qword [rdx + rdi*8] | r10 = *((rdx + rdi*8)); 0x00444970 mov rbx, r10 | rbx = *((rdx + rdi*8)); 0x00444973 and rbx, rbp | rbx &= rbp; 0x00444976 mov ecx, r9d | ecx = r9d; 0x00444979 shl rbx, cl | rbx <<= cl; 0x0044497c or rbx, rsi | rbx |= rsi; 0x0044497f mov ecx, r12d | ecx = r12d; 0x00444982 shr r10, cl | r10 >>= cl; 0x00444985 mov qword [rax + rdi*8 - 8], rbx | *((rax + rdi*8 - 8)) = rbx; 0x0044498a and r10, r13 | r10 &= r13; 0x0044498d or r10, qword [rax + rdi*8] | r10 |= *((rax + rdi*8)); 0x00444991 mov qword [rax + rdi*8], r10 | *((rax + rdi*8)) = r10; 0x00444995 add rdi, 2 | rdi += 2; 0x00444999 cmp r11, rdi | 0x0044499c jne 0x444940 | | } while (r11 != rdi); 0x0044499e add qword [rsp - 0x30], rdi | *((rsp - 0x30)) += rdi; 0x004449a3 mov ebx, dword [rsp - 4] | ebx = *((rsp - 4)); 0x004449a7 mov rsi, r14 | rsi = r14; | label_33: 0x004449aa inc rsi | rsi++; 0x004449ad and r8d, 0x3f | r8d &= 0x3f; 0x004449b1 mov r13, qword [rsp - 0x20] | r13 = *((rsp - 0x20)); 0x004449b6 mov r10, qword [rsp - 0x28] | r10 = *((rsp - 0x28)); 0x004449bb mov rbp, qword [rsp - 0x30] | rbp = *((rsp - 0x30)); 0x004449c0 jmp 0x444b40 | goto label_22; | label_25: 0x004449c5 mov rbp, rsi | 0x004449c8 jmp 0x444b40 | goto label_22; | label_23: 0x004449cd mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x004449d4 mov ecx, r8d | ecx = r8d; 0x004449d7 shl rax, cl | rax <<= cl; 0x004449da cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x004449de jg 0x4449e6 | 0x004449e0 not rax | rax = ~rax; 0x004449e3 mov rbx, rax | rbx = rax; | } 0x004449e6 and rsi, rbx | rsi &= rbx; 0x004449e9 mov ecx, r9d | ecx = r9d; 0x004449ec shl rsi, cl | rsi <<= cl; 0x004449ef or qword [r13], rsi | *(r13) |= rsi; 0x004449f3 jmp 0x444be4 | goto label_6; | label_31: 0x004449f8 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; | label_32: 0x004449ff mov rcx, rax | rcx = rax; 0x00444a02 shl rcx, 6 | rcx <<= 6; 0x00444a06 test r9b, 1 | | if ((r9b & 1) != 0) { 0x00444a0a je 0x444a3b | 0x00444a0c lea rbp, [r13 + rbx] | rbp = r13 + rbx; 0x00444a11 movups xmm0, xmmword [r14 + rbx*8 - 0x18] | __asm ("movups xmm0, xmmword [r14 + rbx*8 - 0x18]"); 0x00444a17 movups xmm1, xmmword [r14 + rbx*8 - 8] | __asm ("movups xmm1, xmmword [r14 + rbx*8 - 8]"); 0x00444a1d movups xmm2, xmmword [r10 + rbp*8 - 0x18] | __asm ("movups xmm2, xmmword [r10 + rbp*8 - 0x18]"); 0x00444a23 orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x00444a26 movups xmm0, xmmword [r10 + rbp*8 - 8] | __asm ("movups xmm0, xmmword [r10 + rbp*8 - 8]"); 0x00444a2c orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x00444a2f movups xmmword [r10 + rbp*8 - 8], xmm0 | __asm ("movups xmmword [r10 + rbp*8 - 8], xmm0"); 0x00444a35 movups xmmword [r10 + rbp*8 - 0x18], xmm2 | __asm ("movups xmmword [r10 + rbp*8 - 0x18], xmm2"); | } 0x00444a3b sub r13, rax | r13 -= rax; 0x00444a3e mov rbx, rax | rbx = rax; 0x00444a41 neg rbx | rbx = -rbx; 0x00444a44 sub r8, rcx | r8 -= rcx; 0x00444a47 cmp r11, rax | | if (r11 == rax) { 0x00444a4a je 0x44447c | goto label_1; | } 0x00444a50 jmp 0x444449 | goto label_2; | label_27: 0x00444a55 xor ebp, ebp | ebp = 0; | label_28: 0x00444a57 test r9b, 1 | 0x00444a5b mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); | if ((r9b & 1) != 0) { 0x00444a60 je 0x444a8e | 0x00444a62 or rbp, rsi | rbp |= rsi; 0x00444a65 mov rax, qword [rsp - 0x28] | rax = *((rsp - 0x28)); 0x00444a6a movups xmm0, xmmword [rax + rbp*8] | __asm ("movups xmm0, xmmword [rax + rbp*8]"); 0x00444a6e movups xmm1, xmmword [rax + rbp*8 + 0x10] | __asm ("movups xmm1, xmmword [rax + rbp*8 + 0x10]"); 0x00444a73 mov rax, rcx | rax = rcx; 0x00444a76 movups xmm2, xmmword [rcx + rbp*8] | __asm ("movups xmm2, xmmword [rcx + rbp*8]"); 0x00444a7a orps xmm2, xmm0 | __asm ("orps xmm2, xmm0"); 0x00444a7d movups xmm0, xmmword [rcx + rbp*8 + 0x10] | __asm ("movups xmm0, xmmword [rcx + rbp*8 + 0x10]"); 0x00444a82 orps xmm0, xmm1 | __asm ("orps xmm0, xmm1"); 0x00444a85 movups xmmword [rcx + rbp*8], xmm2 | __asm ("movups xmmword [rcx + rbp*8], xmm2"); 0x00444a89 movups xmmword [rcx + rbp*8 + 0x10], xmm0 | __asm ("movups xmmword [rcx + rbp*8 + 0x10], xmm0"); | } 0x00444a8e lea rbx, [rsi + r13] | rbx = rsi + r13; 0x00444a92 mov rbp, rbx | 0x00444a95 cmp rdx, r13 | 0x00444a98 mov rdx, qword [rsp - 0x18] | rdx = *((rsp - 0x18)); 0x00444a9d mov rdi, qword [rsp - 0x10] | rdi = *((rsp - 0x10)); 0x00444aa2 mov r13, rcx | r13 = rcx; 0x00444aa5 mov r10, qword [rsp - 0x28] | r10 = *((rsp - 0x28)); | if (rdx == r13) { 0x00444aaa je 0x444b34 | goto label_34; | } | label_26: 0x00444ab0 mov eax, r12d | eax = r12d; 0x00444ab3 sub eax, ebx | eax -= ebx; 0x00444ab5 inc eax | eax++; 0x00444ab7 mov rsi, r12 | rsi = r12; 0x00444aba sub rsi, rbx | rsi -= rbx; 0x00444abd and rax, 3 | rax &= 3; | if (rax == 0) { 0x00444ac1 je 0x444ae5 | goto label_35; | } 0x00444ac3 mov rbp, rbx | 0x00444ac6 nop word cs:[rax + rax] | | do { 0x00444ad0 lea rbx, [rbp + 1] | rbx = rbp + 1; 0x00444ad4 mov rcx, qword [r10 + rbp*8] | rcx = *((r10 + rbp*8)); 0x00444ad8 or qword [r13 + rbp*8], rcx | *((r13 + rbp*8)) |= rcx; 0x00444add mov rbp, rbx | 0x00444ae0 dec rax | rax--; 0x00444ae3 jne 0x444ad0 | | } while (rax != 0); | label_35: 0x00444ae5 mov rbp, rbx | 0x00444ae8 cmp rsi, 3 | | if (rsi < 3) { 0x00444aec jb 0x444b34 | goto label_34; | } 0x00444aee mov rax, qword [rsp - 0x30] | rax = *((rsp - 0x30)); 0x00444af3 lea rax, [rax + r11 + 1] | rax = rax + r11 + 1; 0x00444af8 lea rcx, [rdx + r14*8 + 0x18] | rcx = rdx + r14*8 + 0x18; 0x00444afd lea rdx, [rdi + r15*8 + 0x18] | rdx = rdi + r15*8 + 0x18; | do { 0x00444b02 mov rsi, qword [rcx + rbx*8 - 0x18] | rsi = *((rcx + rbx*8 - 0x18)); 0x00444b07 or qword [rdx + rbx*8 - 0x18], rsi | *((rdx + rbx*8 - 0x18)) |= rsi; 0x00444b0c mov rsi, qword [rcx + rbx*8 - 0x10] | rsi = *((rcx + rbx*8 - 0x10)); 0x00444b11 or qword [rdx + rbx*8 - 0x10], rsi | *((rdx + rbx*8 - 0x10)) |= rsi; 0x00444b16 mov rsi, qword [rcx + rbx*8 - 8] | rsi = *((rcx + rbx*8 - 8)); 0x00444b1b or qword [rdx + rbx*8 - 8], rsi | *((rdx + rbx*8 - 8)) |= rsi; 0x00444b20 lea rbp, [rbx + 4] | rbp = rbx + 4; 0x00444b24 mov rsi, qword [rcx + rbx*8] | rsi = *((rcx + rbx*8)); 0x00444b28 or qword [rdx + rbx*8], rsi | *((rdx + rbx*8)) |= rsi; 0x00444b2c mov rbx, rbp | rbx = rbp; 0x00444b2f cmp rax, rbp | 0x00444b32 jne 0x444b02 | | } while (rax != rbp); | label_34: 0x00444b34 inc r12 | r12++; 0x00444b37 and r8d, 0x3f | r8d &= 0x3f; 0x00444b3b mov rsi, r12 | rsi = r12; 0x00444b3e xor ebx, ebx | ebx = 0; | label_22: 0x00444b40 test r8, r8 | | if (r8 == 0) { 0x00444b43 je 0x444be4 | goto label_6; | } 0x00444b49 mov rsi, qword [r10 + rsi*8] | rsi = *((r10 + rsi*8)); 0x00444b4d mov eax, 0x40 | eax = 0x40; 0x00444b52 sub eax, ebx | eax -= ebx; 0x00444b54 cmp eax, r8d | | if (eax >= r8d) { 0x00444b57 jge 0x444bc2 | goto label_36; | } 0x00444b59 cmp ebx, 0x40 | | if (ebx >= 0x40) { 0x00444b5c jge 0x444bfe | goto label_37; | } 0x00444b62 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00444b69 mov ecx, eax | ecx = eax; 0x00444b6b shl rdx, cl | rdx <<= cl; 0x00444b6e mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00444b75 mov r9d, eax | r9d = eax; 0x00444b78 test ebx, ebx | | if (ebx > 0) { 0x00444b7a jle 0x444b82 | 0x00444b7c not rdx | rdx = ~rdx; 0x00444b7f mov rdi, rdx | rdi = rdx; | } 0x00444b82 and rdi, rsi | rdi &= rsi; 0x00444b85 mov ecx, ebx | ecx = ebx; 0x00444b87 shl rdi, cl | rdi <<= cl; 0x00444b8a or qword [r13 + rbp*8], rdi | *((r13 + rbp*8)) |= rdi; | do { 0x00444b8f mov ecx, r9d | ecx = r9d; 0x00444b92 shr rsi, cl | rsi >>= cl; 0x00444b95 sub r8d, eax | r8d -= eax; 0x00444b98 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444b9f mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00444ba6 mov ecx, r8d | ecx = r8d; 0x00444ba9 shl rdx, cl | rdx <<= cl; 0x00444bac cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00444bb0 jg 0x444bb8 | 0x00444bb2 not rdx | rdx = ~rdx; 0x00444bb5 mov rax, rdx | rax = rdx; | } 0x00444bb8 and rsi, rax | rsi &= rax; 0x00444bbb or qword [r13 + rbp*8 + 8], rsi | *((r13 + rbp*8 + 8)) |= rsi; 0x00444bc0 jmp 0x444be4 | goto label_6; | label_36: 0x00444bc2 cmp ebx, 0x3f | | if (ebx <= 0x3f) { 0x00444bc5 jg 0x444be4 | 0x00444bc7 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00444bce mov ecx, r8d | ecx = r8d; 0x00444bd1 shl rax, cl | rax <<= cl; 0x00444bd4 not rax | rax = ~rax; 0x00444bd7 and rsi, rax | rsi &= rax; 0x00444bda mov ecx, ebx | ecx = ebx; 0x00444bdc shl rsi, cl | rsi <<= cl; 0x00444bdf or qword [r13 + rbp*8], rsi | *((r13 + rbp*8)) |= rsi; | } | label_6: 0x00444be4 pop rbx | 0x00444be5 pop r12 | r12 = rbx; 0x00444be7 pop r13 | r13 = rbx; 0x00444be9 pop r14 | r14 = rbx; 0x00444beb pop r15 | r15 = rbx; 0x00444bed pop rbp | 0x00444bee ret | return rax; | label_19: 0x00444bef mov esi, edx | esi = edx; 0x00444bf1 jmp 0x4444e2 | goto label_3; | label_17: 0x00444bf6 mov r9d, eax | r9d = eax; 0x00444bf9 jmp 0x444395 | goto label_4; | label_37: 0x00444bfe mov r9d, eax | r9d = eax; 0x00444c01 jmp 0x444b8f | | } while (1); | }