; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/assume @ 0x445360 */ | #include | ; (fcn) sym._anonymous_namespace_::Mover_BloombergLP::bdlb::BitStringImpUtil::setEqBits__BloombergLP::bdlb::BitStringImpUtil::setEqWord_::left_unsigned_long__unsigned_long__unsigned_long_const__unsigned_long__unsigned_long_ () | int64_t anonymous_namespace_::Mover_BloombergLP::bdlb::BitStringImpUtil::setEqBits_BloombergLP::bdlb::BitStringImpUtil::setEqWord_::left_unsigned_long_unsigned_long_unsigned_long_const_unsigned_long_unsigned_long_ (uint32_t arg5, uint32_t arg4, int64_t arg3, int64_t arg2, int64_t arg1, int64_t arg8) { | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | xmm1 = arg8; | /* (anonymous namespace)::Mover<&BloombergLP::bdlb::BitStringImpUtil::setEqBits, &BloombergLP::bdlb::BitStringImpUtil::setEqWord>::left(unsigned long*, unsigned long, unsigned long const*, unsigned long, unsigned long) */ 0x00445360 push rbp | 0x00445361 push r15 | 0x00445363 push r14 | 0x00445365 push r13 | 0x00445367 push r12 | 0x00445369 push rbx | 0x0044536a test r8, r8 | | if (r8 == 0) { 0x0044536d je 0x44592a | goto label_1; | } 0x00445373 mov r14, rsi | r14 = rsi; 0x00445376 mov r12, rsi | r12 = rsi; 0x00445379 shr r12, 6 | r12 >>= 6; 0x0044537d lea r10, [rdi + r12*8] | r10 = rdi + r12*8; 0x00445381 and r14d, 0x3f | r14d &= 0x3f; 0x00445385 mov r13, rcx | r13 = rcx; 0x00445388 shr r13, 6 | r13 >>= 6; 0x0044538c lea r9, [rdx + r13*8] | r9 = rdx + r13*8; 0x00445390 and ecx, 0x3f | ecx &= 0x3f; | if (ecx != 0) { 0x00445393 je 0x445412 | 0x00445395 mov r11d, 0x40 | r11d = 0x40; 0x0044539b mov eax, 0x40 | eax = 0x40; 0x004453a0 sub eax, ecx | eax -= ecx; 0x004453a2 mov rbx, qword [r9] | rbx = *(r9); 0x004453a5 shr rbx, cl | rbx >>= cl; 0x004453a8 cmp rax, r8 | | if (rax < r8) { 0x004453ab jae 0x44541a | 0x004453ad cmp r14d, ecx | | if (r14d <= ecx) { 0x004453b0 jbe 0x44549d | goto label_2; | } 0x004453b6 sub r11d, r14d | r11d -= r14d; 0x004453b9 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004453c0 mov ecx, r11d | ecx = r11d; 0x004453c3 shl rsi, cl | rsi <<= cl; 0x004453c6 not rsi | rsi = ~rsi; 0x004453c9 mov ecx, r14d | ecx = r14d; 0x004453cc shl rsi, cl | rsi <<= cl; 0x004453cf not rsi | rsi = ~rsi; 0x004453d2 and rsi, qword [r10] | rsi &= *(r10); 0x004453d5 mov rbp, 0xffffffffffffffff | 0x004453dc mov r15, rbx | r15 = rbx; 0x004453df shl r15, cl | r15 <<= cl; 0x004453e2 or r15, rsi | r15 |= rsi; 0x004453e5 mov ecx, r11d | ecx = r11d; 0x004453e8 shr rbx, cl | rbx >>= cl; 0x004453eb mov ecx, eax | ecx = eax; 0x004453ed sub ecx, r11d | ecx -= r11d; 0x004453f0 shl rbp, cl | rbp <<= cl; 0x004453f3 mov qword [r10], r15 | *(r10) = r15; 0x004453f6 mov rcx, rbp | rcx = rbp; 0x004453f9 not rcx | rcx = ~rcx; 0x004453fc and rbp, qword [r10 + 8] | rbp &= *((r10 + 8)); 0x00445400 and rcx, rbx | rcx &= rbx; 0x00445403 or rbp, rcx | rbp |= rcx; 0x00445406 mov qword [r10 + 8], rbp | *((r10 + 8)) = rbp; 0x0044540a add r14d, eax | r14d += eax; 0x0044540d jmp 0x4454cb | | } else { 0x00445412 xor r15d, r15d | r15d = 0; 0x00445415 jmp 0x4454e2 | goto label_3; | } 0x0044541a test r8d, r8d | | if (r8d == 0) { 0x0044541d je 0x44592a | goto label_1; | } 0x00445423 mov eax, 0x40 | eax = 0x40; 0x00445428 sub eax, r14d | eax -= r14d; 0x0044542b cmp eax, r8d | | if (eax >= r8d) { 0x0044542e jae 0x445653 | goto label_4; | } 0x00445434 mov rbp, 0xffffffffffffffff | 0x0044543b mov ecx, eax | ecx = eax; 0x0044543d shl rbp, cl | rbp <<= cl; 0x00445440 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445447 mov esi, eax | esi = eax; 0x00445449 mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00445450 test r14d, r14d | | if (r14d != 0) { 0x00445453 je 0x44545b | 0x00445455 not rbp | rbp = ~rbp; 0x00445458 mov rdi, rbp | rdi = rbp; | } 0x0044545b mov rbp, rbx | 0x0044545e and rbp, rdi | rbp &= rdi; 0x00445461 mov ecx, r14d | ecx = r14d; 0x00445464 shl rdi, cl | rdi <<= cl; 0x00445467 not rdi | rdi = ~rdi; 0x0044546a and rdi, qword [r10] | rdi &= *(r10); 0x0044546d shl rbp, cl | rbp <<= cl; 0x00445470 mov ecx, esi | ecx = esi; 0x00445472 shr rbx, cl | rbx >>= cl; 0x00445475 sub r8d, eax | r8d -= eax; 0x00445478 mov ecx, r8d | ecx = r8d; 0x0044547b shl rdx, cl | rdx <<= cl; 0x0044547e or rbp, rdi | rbp |= rdi; 0x00445481 mov qword [r10], rbp | *(r10) = rbp; 0x00445484 mov rax, rdx | rax = rdx; 0x00445487 not rax | rax = ~rax; 0x0044548a and rax, rbx | rax &= rbx; 0x0044548d and rdx, qword [r10 + 8] | rdx &= *((r10 + 8)); 0x00445491 or rdx, rax | rdx |= rax; 0x00445494 mov qword [r10 + 8], rdx | *((r10 + 8)) = rdx; 0x00445498 jmp 0x44592a | goto label_1; | label_2: 0x0044549d lea ebp, [rax + r14] | ebp = rax + r14; 0x004454a1 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004454a8 mov ecx, eax | ecx = eax; 0x004454aa shl rsi, cl | rsi <<= cl; 0x004454ad not rsi | rsi = ~rsi; 0x004454b0 and rbx, rsi | rbx &= rsi; 0x004454b3 mov ecx, r14d | ecx = r14d; 0x004454b6 shl rsi, cl | rsi <<= cl; 0x004454b9 not rsi | rsi = ~rsi; 0x004454bc shl rbx, cl | rbx <<= cl; 0x004454bf and rsi, qword [r10] | rsi &= *(r10); 0x004454c2 or rbx, rsi | rbx |= rsi; 0x004454c5 mov qword [r10], rbx | *(r10) = rbx; 0x004454c8 mov r14d, ebp | r14d = ebp; | } 0x004454cb sub r8, rax | r8 -= rax; 0x004454ce mov r15d, 1 | r15d = 1; 0x004454d4 cmp r14d, 0x40 | | if (r14d < 0x40) { 0x004454d8 jb 0x445619 | goto label_5; | } 0x004454de add r14d, 0xffffffc0 | r14d += 0xffffffc0; | label_3: 0x004454e2 test r14d, r14d | 0x004454e5 sete r11b | r11b = (r14d == 0) ? 1 : 0; | if (r14d == 0) { 0x004454e9 je 0x4455e3 | goto label_6; | } 0x004454ef mov qword [rsp - 0x28], r13 | *((rsp - 0x28)) = r13; 0x004454f4 mov r13, r15 | r13 = r15; 0x004454f7 cmp r8, 0x40 | | if (r8 < 0x40) { 0x004454fb jb 0x44562b | goto label_7; | } | label_0: 0x00445501 mov qword [rsp - 8], r9 | *((rsp - 8)) = r9; 0x00445506 mov qword [rsp - 0x20], r10 | *((rsp - 0x20)) = r10; 0x0044550b mov r9, r12 | r9 = r12; 0x0044550e mov r12d, 0x40 | r12d = 0x40; 0x00445514 sub r12d, r14d | r12d -= r14d; 0x00445517 mov ecx, r14d | ecx = r14d; 0x0044551a neg ecx | ecx = -ecx; 0x0044551c mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x00445523 mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x0044552a shl rbx, cl | rbx <<= cl; 0x0044552d not rbx | rbx = ~rbx; 0x00445530 mov ecx, r14d | ecx = r14d; 0x00445533 shl rbx, cl | rbx <<= cl; 0x00445536 mov rcx, r14 | rcx = r14; 0x00445539 mov r14d, ecx | r14d = ecx; 0x0044553c mov qword [rsp - 0x18], rcx | *((rsp - 0x18)) = rcx; 0x00445541 shl r11, cl | r11 <<= cl; 0x00445544 not rbx | rbx = ~rbx; 0x00445547 mov rbp, r11 | 0x0044554a not rbp | rbp = ~rbp; 0x0044554d lea rax, [r8 - 0x40] | rax = r8 - 0x40; 0x00445551 shr rax, 6 | rax >>= 6; 0x00445555 mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x0044555a add rcx, r15 | rcx += r15; 0x0044555d lea rsi, [r15 + rax + 1] | rsi = r15 + rax + 1; 0x00445562 mov qword [rsp - 0x28], rsi | *((rsp - 0x28)) = rsi; 0x00445567 add r9, r13 | r9 += r13; 0x0044556a lea rdx, [rdx + rcx*8] | rdx = rdx + rcx*8; 0x0044556e mov r15, qword [rdi + r9*8] | r15 = *((rdi + r9*8)); 0x00445572 inc rax | rax++; 0x00445575 lea rsi, [rdi + r9*8 + 8] | rsi = rdi + r9*8 + 8; 0x0044557a xor edi, edi | edi = 0; 0x0044557c nop dword [rax] | | do { 0x00445580 and r15, rbx | r15 &= rbx; 0x00445583 mov r10, qword [rdx + rdi*8] | r10 = *((rdx + rdi*8)); 0x00445587 mov r9, r10 | r9 = *((rdx + rdi*8)); 0x0044558a mov ecx, r14d | ecx = r14d; 0x0044558d shl r9, cl | r9 <<= cl; 0x00445590 or r9, r15 | r9 |= r15; 0x00445593 mov qword [rsi + rdi*8 - 8], r9 | *((rsi + rdi*8 - 8)) = r9; 0x00445598 mov ecx, r12d | ecx = r12d; 0x0044559b shr r10, cl | r10 >>= cl; 0x0044559e and r10, rbp | r10 &= rbp; 0x004455a1 mov r15, qword [rsi + rdi*8] | r15 = *((rsi + rdi*8)); 0x004455a5 and r15, r11 | r15 &= r11; 0x004455a8 or r15, r10 | r15 |= r10; 0x004455ab mov qword [rsi + rdi*8], r15 | *((rsi + rdi*8)) = r15; 0x004455af add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x004455b3 inc rdi | rdi++; 0x004455b6 cmp rax, rdi | 0x004455b9 jne 0x445580 | | } while (rax != rdi); 0x004455bb add r13, rdi | r13 += rdi; 0x004455be xor r11d, r11d | r11d = 0; 0x004455c1 mov r15, qword [rsp - 0x28] | r15 = *((rsp - 0x28)); 0x004455c6 mov r10, qword [rsp - 0x20] | r10 = *((rsp - 0x20)); 0x004455cb mov r14, qword [rsp - 0x18] | r14 = *((rsp - 0x18)); 0x004455d0 mov r9, qword [rsp - 8] | r9 = *((rsp - 8)); 0x004455d5 test r8, r8 | | if (r8 != 0) { 0x004455d8 jne 0x445885 | goto label_8; | } 0x004455de jmp 0x44592a | goto label_1; | label_6: 0x004455e3 cmp r8, 0x40 | | if (r8 < 0x40) { 0x004455e7 jb 0x44563c | goto label_9; | } 0x004455e9 lea rax, [r8 - 0x40] | rax = r8 - 0x40; 0x004455ed mov rcx, rax | rcx = rax; 0x004455f0 shr rcx, 6 | rcx >>= 6; 0x004455f4 lea rbp, [r15 + rcx + 1] | rbp = r15 + rcx + 1; 0x004455f9 cmp rax, 0xc0 | 0x004455ff mov qword [rsp - 0x10], rdx | *((rsp - 0x10)) = rdx; 0x00445604 mov qword [rsp - 0x28], r13 | *((rsp - 0x28)) = r13; | if (rax >= 0xc0) { 0x00445609 jae 0x445680 | goto label_10; | } 0x0044560b mov rbx, r12 | rbx = r12; 0x0044560e mov r12, r15 | r12 = r15; 0x00445611 mov r13, r15 | r13 = r15; 0x00445614 jmp 0x4457d2 | goto label_11; | label_5: 0x00445619 mov qword [rsp - 0x28], r13 | *((rsp - 0x28)) = r13; 0x0044561e xor r13d, r13d | r13d = 0; 0x00445621 cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00445625 jae 0x445501 | goto label_0; | } | label_7: 0x0044562b xor r11d, r11d | r11d = 0; 0x0044562e test r8, r8 | | if (r8 != 0) { 0x00445631 jne 0x445885 | goto label_8; | } 0x00445637 jmp 0x44592a | goto label_1; | label_9: 0x0044563c xor r14d, r14d | r14d = 0; 0x0044563f mov r11b, 1 | r11b = 1; 0x00445642 mov r13, r15 | r13 = r15; 0x00445645 test r8, r8 | | if (r8 != 0) { 0x00445648 jne 0x445885 | goto label_8; | } 0x0044564e jmp 0x44592a | goto label_1; | label_4: 0x00445653 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x0044565a mov ecx, r8d | ecx = r8d; 0x0044565d shl rax, cl | rax <<= cl; 0x00445660 not rax | rax = ~rax; 0x00445663 and rbx, rax | rbx &= rax; 0x00445666 mov ecx, r14d | ecx = r14d; 0x00445669 shl rax, cl | rax <<= cl; 0x0044566c not rax | rax = ~rax; 0x0044566f shl rbx, cl | rbx <<= cl; 0x00445672 and rax, qword [r10] | rax &= *(r10); 0x00445675 or rbx, rax | rbx |= rax; 0x00445678 mov qword [r10], rbx | *(r10) = rbx; 0x0044567b jmp 0x44592a | goto label_1; | label_10: 0x00445680 mov qword [rsp - 0x20], rbp | *((rsp - 0x20)) = rbp; 0x00445685 lea rax, [r15 + r12] | rax = r15 + r12; 0x00445689 lea rsi, [rdi + rax*8] | rsi = rdi + rax*8; 0x0044568d lea rbx, [r15 + r13] | rbx = r15 + r13; 0x00445691 lea rbp, [rbx + rcx] | rbp = rbx + rcx; 0x00445695 lea rbp, [rdx + rbp*8 + 8] | rbp = rdx + rbp*8 + 8; 0x0044569a cmp rsi, rbp | | if (rsi < rbp) { 0x0044569d jae 0x4456c3 | 0x0044569f add rax, rcx | rax += rcx; 0x004456a2 lea rax, [rdi + rax*8 + 8] | rax = rdi + rax*8 + 8; 0x004456a7 lea rsi, [rdx + rbx*8] | rsi = rdx + rbx*8; 0x004456ab cmp rsi, rax | | if (rsi >= rax) { 0x004456ae jae 0x4456c3 | goto label_12; | } 0x004456b0 mov rbx, r12 | rbx = r12; 0x004456b3 mov r12, r15 | r12 = r15; 0x004456b6 mov r13, r15 | r13 = r15; 0x004456b9 mov rbp, qword [rsp - 0x20] | rbp = *((rsp - 0x20)); 0x004456be jmp 0x4457d2 | goto label_11; | } | label_12: 0x004456c3 lea rsi, [rcx + 1] | rsi = rcx + 1; 0x004456c7 mov rax, rsi | rax = rsi; 0x004456ca and rax, 0xfffffffffffffffc | rax &= 0xfffffffffffffffc; 0x004456ce movq xmm0, r8 | xmm0 = r8; 0x004456d3 mov qword [rsp - 0x18], rax | *((rsp - 0x18)) = rax; 0x004456d8 add rax, 0xfffffffffffffffc | rax += 0xfffffffffffffffc; 0x004456dc mov r8, rax | r8 = rax; 0x004456df shr r8, 2 | r8 >>= 2; 0x004456e3 inc r8 | r8++; 0x004456e6 test rax, rax | | if (rax == 0) { 0x004456e9 je 0x44576c | goto label_13; | } 0x004456ef mov rbx, rsi | rbx = rsi; 0x004456f2 mov rax, r8 | rax = r8; 0x004456f5 and rax, 0xfffffffffffffffe | rax &= 0xfffffffffffffffe; 0x004456f9 neg rax | rax = -rax; 0x004456fc pxor xmm2, xmm2 | xmm2 = 0; 0x00445700 xor ebp, ebp | ebp = 0; 0x00445702 movdqa xmm3, xmmword [rip + 0x8d096] | __asm ("movdqa xmm3, xmmword [0x004d27a0]"); 0x0044570a nop word [rax + rax] | | do { 0x00445710 movdqa xmm1, xmm2 | __asm ("movdqa xmm1, xmm2"); 0x00445714 mov rsi, r15 | rsi = r15; 0x00445717 or rsi, rbp | rsi |= rbp; 0x0044571a movups xmm4, xmmword [r9 + rsi*8] | __asm ("movups xmm4, xmmword [r9 + rsi*8]"); 0x0044571f movups xmm5, xmmword [r9 + rsi*8 + 0x10] | __asm ("movups xmm5, xmmword [r9 + rsi*8 + 0x10]"); 0x00445725 movups xmmword [r10 + rsi*8], xmm4 | __asm ("movups xmmword [r10 + rsi*8], xmm4"); 0x0044572a movups xmmword [r10 + rsi*8 + 0x10], xmm5 | __asm ("movups xmmword [r10 + rsi*8 + 0x10], xmm5"); 0x00445730 lea rsi, [rbp + 4] | rsi = rbp + 4; 0x00445734 or rsi, r15 | rsi |= r15; 0x00445737 movups xmm4, xmmword [r9 + rsi*8] | __asm ("movups xmm4, xmmword [r9 + rsi*8]"); 0x0044573c movups xmm5, xmmword [r9 + rsi*8 + 0x10] | __asm ("movups xmm5, xmmword [r9 + rsi*8 + 0x10]"); 0x00445742 movups xmmword [r10 + rsi*8], xmm4 | __asm ("movups xmmword [r10 + rsi*8], xmm4"); 0x00445747 movups xmmword [r10 + rsi*8 + 0x10], xmm5 | __asm ("movups xmmword [r10 + rsi*8 + 0x10], xmm5"); 0x0044574d paddq xmm0, xmm3 | __asm ("paddq xmm0, xmm3"); 0x00445751 paddq xmm2, xmm3 | __asm ("paddq xmm2, xmm3"); 0x00445755 add rbp, 8 | rbp += 8; 0x00445759 add rax, 2 | rax += 2; 0x0044575d jne 0x445710 | | } while (rax != 0); 0x0044575f paddq xmm1, xmmword [rip + 0x8d049] | __asm ("paddq xmm1, xmmword [0x004d27b0]"); 0x00445767 mov rsi, rbx | rsi = rbx; 0x0044576a jmp 0x445776 | goto label_14; | label_13: 0x0044576c movdqa xmm1, xmmword [rip + 0x8d01c] | __asm ("movdqa xmm1, xmmword [0x004d2790]"); 0x00445774 xor ebp, ebp | ebp = 0; | label_14: 0x00445776 mov rbx, r12 | rbx = r12; 0x00445779 mov rax, qword [rsp - 0x18] | rax = *((rsp - 0x18)); 0x0044577e lea r13, [r15 + rax] | r13 = r15 + rax; 0x00445782 test r8b, 1 | | if ((r8b & 1) != 0) { 0x00445786 je 0x4457af | 0x00445788 or rbp, r15 | rbp |= r15; 0x0044578b movups xmm2, xmmword [r9 + rbp*8] | __asm ("movups xmm2, xmmword [r9 + rbp*8]"); 0x00445790 movdqu xmm3, xmmword [r9 + rbp*8 + 0x10] | __asm ("movdqu xmm3, xmmword [r9 + rbp*8 + 0x10]"); 0x00445797 movups xmmword [r10 + rbp*8], xmm2 | __asm ("movups xmmword [r10 + rbp*8], xmm2"); 0x0044579c movdqu xmmword [r10 + rbp*8 + 0x10], xmm3 | __asm ("movdqu xmmword [r10 + rbp*8 + 0x10], xmm3"); 0x004457a3 paddq xmm0, xmmword [rip + 0x8cfe5] | __asm ("paddq xmm0, xmmword [0x004d2790]"); 0x004457ab movdqa xmm2, xmm1 | __asm ("movdqa xmm2, xmm1"); | } 0x004457af paddq xmm0, xmm2 | __asm ("paddq xmm0, xmm2"); 0x004457b3 pshufd xmm1, xmm0, 0xee | __asm ("pshufd xmm1, xmm0, 0xee"); 0x004457b8 paddq xmm1, xmm0 | __asm ("paddq xmm1, xmm0"); 0x004457bc movq r8, xmm1 | r8 = xmm1; 0x004457c1 mov r12, r13 | r12 = r13; 0x004457c4 cmp rsi, rax | 0x004457c7 mov rbp, qword [rsp - 0x20] | rbp = *((rsp - 0x20)); | if (rsi == rax) { 0x004457cc je 0x445879 | goto label_15; | } | label_11: 0x004457d2 add r15, rcx | r15 += rcx; 0x004457d5 mov ecx, r15d | ecx = r15d; 0x004457d8 sub ecx, r12d | ecx -= r12d; 0x004457db inc ecx | ecx++; 0x004457dd mov rax, r15 | rax = r15; 0x004457e0 sub rax, r12 | rax -= r12; 0x004457e3 and rcx, 3 | rcx &= 3; | if (rcx == 0) { 0x004457e7 je 0x44580a | goto label_16; | } 0x004457e9 shl rcx, 6 | rcx <<= 6; 0x004457ed xor edx, edx | edx = 0; 0x004457ef nop | | do { 0x004457f0 mov rsi, qword [r9 + r12*8] | rsi = *((r9 + r12*8)); 0x004457f4 inc r12 | r12++; 0x004457f7 mov qword [r10 + r13*8], rsi | *((r10 + r13*8)) = rsi; 0x004457fb inc r13 | r13++; 0x004457fe add rdx, 0x40 | rdx += 0x40; 0x00445802 cmp rcx, rdx | 0x00445805 jne 0x4457f0 | | } while (rcx != rdx); 0x00445807 sub r8, rdx | r8 -= rdx; | label_16: 0x0044580a cmp rax, 3 | | if (rax < 3) { 0x0044580e jb 0x445879 | goto label_15; | } 0x00445810 sub r15, r12 | r15 -= r12; 0x00445813 inc r15 | r15++; 0x00445816 mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x0044581b add rcx, r12 | rcx += r12; 0x0044581e mov rax, qword [rsp - 0x10] | rax = *((rsp - 0x10)); 0x00445823 lea rax, [rax + rcx*8 + 0x18] | rax = rax + rcx*8 + 0x18; 0x00445828 add rbx, r13 | rbx += r13; 0x0044582b lea rdx, [rdi + rbx*8 + 0x18] | rdx = rdi + rbx*8 + 0x18; 0x00445830 xor ecx, ecx | ecx = 0; 0x00445832 nop word cs:[rax + rax] | 0x0044583c nop dword [rax] | | do { 0x00445840 mov rsi, qword [rax + rcx*8 - 0x18] | rsi = *((rax + rcx*8 - 0x18)); 0x00445845 mov qword [rdx + rcx*8 - 0x18], rsi | *((rdx + rcx*8 - 0x18)) = rsi; 0x0044584a mov rsi, qword [rax + rcx*8 - 0x10] | rsi = *((rax + rcx*8 - 0x10)); 0x0044584f mov qword [rdx + rcx*8 - 0x10], rsi | *((rdx + rcx*8 - 0x10)) = rsi; 0x00445854 mov rsi, qword [rax + rcx*8 - 8] | rsi = *((rax + rcx*8 - 8)); 0x00445859 mov qword [rdx + rcx*8 - 8], rsi | *((rdx + rcx*8 - 8)) = rsi; 0x0044585e mov rsi, qword [rax + rcx*8] | rsi = *((rax + rcx*8)); 0x00445862 mov qword [rdx + rcx*8], rsi | *((rdx + rcx*8)) = rsi; 0x00445866 add r8, 0xffffffffffffff00 | r8 += 0xffffffffffffff00; 0x0044586d add rcx, 4 | rcx += 4; 0x00445871 cmp r15, rcx | 0x00445874 jne 0x445840 | | } while (r15 != rcx); 0x00445876 add r13, rcx | r13 += rcx; | label_15: 0x00445879 mov r15, rbp | r15 = rbp; 0x0044587c test r8, r8 | | if (r8 != 0) { 0x0044587f je 0x44592a | | label_8: 0x00445885 mov rdi, qword [r9 + r15*8] | rdi = *((r9 + r15*8)); 0x00445889 mov eax, 0x40 | eax = 0x40; 0x0044588e sub eax, r14d | eax -= r14d; 0x00445891 cmp eax, r8d | | if (eax < r8d) { 0x00445894 jae 0x445900 | 0x00445896 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x0044589d mov ecx, eax | ecx = eax; 0x0044589f shl rsi, cl | rsi <<= cl; 0x004458a2 mov ebp, eax | 0x004458a4 mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x004458ab mov rbx, 0xffffffffffffffff | rbx = 0xffffffffffffffff; 0x004458b2 test r11b, r11b | | if (r11b == 0) { 0x004458b5 jne 0x4458bd | 0x004458b7 not rsi | rsi = ~rsi; 0x004458ba mov rbx, rsi | rbx = rsi; | } 0x004458bd mov rsi, rdi | rsi = rdi; 0x004458c0 and rsi, rbx | rsi &= rbx; 0x004458c3 mov ecx, r14d | ecx = r14d; 0x004458c6 shl rbx, cl | rbx <<= cl; 0x004458c9 not rbx | rbx = ~rbx; 0x004458cc and rbx, qword [r10 + r13*8] | rbx &= *((r10 + r13*8)); 0x004458d0 shl rsi, cl | rsi <<= cl; 0x004458d3 mov ecx, ebp | ecx = ebp; 0x004458d5 shr rdi, cl | rdi >>= cl; 0x004458d8 sub r8d, eax | r8d -= eax; 0x004458db mov ecx, r8d | ecx = r8d; 0x004458de shl rdx, cl | rdx <<= cl; 0x004458e1 or rsi, rbx | rsi |= rbx; 0x004458e4 mov qword [r10 + r13*8], rsi | *((r10 + r13*8)) = rsi; 0x004458e8 mov rax, rdx | rax = rdx; 0x004458eb not rax | rax = ~rax; 0x004458ee and rax, rdi | rax &= rdi; 0x004458f1 and rdx, qword [r10 + r13*8 + 8] | rdx &= *((r10 + r13*8 + 8)); 0x004458f6 or rdx, rax | rdx |= rax; 0x004458f9 mov qword [r10 + r13*8 + 8], rdx | *((r10 + r13*8 + 8)) = rdx; 0x004458fe jmp 0x44592a | | } else { 0x00445900 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445907 mov ecx, r8d | ecx = r8d; 0x0044590a shl rax, cl | rax <<= cl; 0x0044590d not rax | rax = ~rax; 0x00445910 and rdi, rax | rdi &= rax; 0x00445913 mov ecx, r14d | ecx = r14d; 0x00445916 shl rax, cl | rax <<= cl; 0x00445919 not rax | rax = ~rax; 0x0044591c shl rdi, cl | rdi <<= cl; 0x0044591f and rax, qword [r10 + r13*8] | rax &= *((r10 + r13*8)); 0x00445923 or rdi, rax | rdi |= rax; 0x00445926 mov qword [r10 + r13*8], rdi | *((r10 + r13*8)) = rdi; | } | } | label_1: 0x0044592a pop rbx | 0x0044592b pop r12 | r12 = rbx; 0x0044592d pop r13 | r13 = rbx; 0x0044592f pop r14 | r14 = rbx; 0x00445931 pop r15 | r15 = rbx; 0x00445933 pop rbp | 0x00445934 ret | return rax; | }