; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/none @ 0x4457e0 */ | #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_ (int32_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) */ 0x004457e0 push rbp | 0x004457e1 push r15 | 0x004457e3 push r14 | 0x004457e5 push r13 | 0x004457e7 push r12 | 0x004457e9 push rbx | 0x004457ea test r8, r8 | | if (r8 == 0) { 0x004457ed je 0x445deb | goto label_2; | } 0x004457f3 mov r9, rsi | r9 = rsi; 0x004457f6 mov r15, rsi | r15 = rsi; 0x004457f9 shr r15, 6 | r15 >>= 6; 0x004457fd lea r10, [rdi + r15*8] | r10 = rdi + r15*8; 0x00445801 and r9d, 0x3f | r9d &= 0x3f; 0x00445805 mov r12, rcx | r12 = rcx; 0x00445808 shr r12, 6 | r12 >>= 6; 0x0044580c lea r11, [rdx + r12*8] | r11 = rdx + r12*8; 0x00445810 and ecx, 0x3f | ecx &= 0x3f; | if (ecx != 0) { 0x00445813 je 0x44589f | 0x00445819 mov r14d, 0x40 | r14d = 0x40; 0x0044581f mov esi, 0x40 | esi = 0x40; 0x00445824 sub esi, ecx | esi -= ecx; 0x00445826 mov rbx, qword [r11] | rbx = *(r11); 0x00445829 shr rbx, cl | rbx >>= cl; 0x0044582c cmp rsi, r8 | | if (rsi >= r8) { 0x0044582f jae 0x4459b1 | goto label_3; | } 0x00445835 cmp r9d, ecx | 0x00445838 mov qword [rsp - 0x28], rdi | *((rsp - 0x28)) = rdi; | if (r9d <= ecx) { 0x0044583d jbe 0x445a44 | goto label_4; | } 0x00445843 sub r14d, r9d | r14d -= r9d; 0x00445846 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x0044584d mov ecx, r14d | ecx = r14d; 0x00445850 shl rax, cl | rax <<= cl; 0x00445853 not rax | rax = ~rax; 0x00445856 mov ecx, r9d | ecx = r9d; 0x00445859 shl rax, cl | rax <<= cl; 0x0044585c not rax | rax = ~rax; 0x0044585f and rax, qword [r10] | rax &= *(r10); 0x00445862 mov rdi, rbx | rdi = rbx; 0x00445865 shl rdi, cl | rdi <<= cl; 0x00445868 mov rbp, 0xffffffffffffffff | 0x0044586f or rdi, rax | rdi |= rax; 0x00445872 mov qword [r10], rdi | *(r10) = rdi; 0x00445875 lea rdi, [r10 + 8] | rdi = r10 + 8; 0x00445879 mov ecx, r14d | ecx = r14d; 0x0044587c shr rbx, cl | rbx >>= cl; 0x0044587f mov ecx, esi | ecx = esi; 0x00445881 sub ecx, r14d | ecx -= r14d; 0x00445884 shl rbp, cl | rbp <<= cl; 0x00445887 mov rax, rbp | rax = rbp; 0x0044588a not rax | rax = ~rax; 0x0044588d and rax, rbx | rax &= rbx; 0x00445890 and rbp, qword [r10 + 8] | rbp &= *((r10 + 8)); 0x00445894 or rbp, rax | rbp |= rax; 0x00445897 mov rbx, rbp | rbx = rbp; 0x0044589a jmp 0x445a6b | goto label_5; | } 0x0044589f mov qword [rsp - 0x28], rdi | *((rsp - 0x28)) = rdi; 0x004458a4 xor r13d, r13d | r13d = 0; 0x004458a7 test r9d, r9d | | if (r9d == 0) { 0x004458aa je 0x445a8e | goto label_6; | } | label_0: 0x004458b0 mov ebp, r9d | 0x004458b3 mov rbx, r13 | rbx = r13; 0x004458b6 cmp r8, 0x40 | | if (r8 < 0x40) { 0x004458ba jb 0x445acc | goto label_7; | } | label_1: 0x004458c0 mov qword [rsp - 0x20], r11 | *((rsp - 0x20)) = r11; 0x004458c5 mov qword [rsp - 0x30], r10 | *((rsp - 0x30)) = r10; 0x004458ca mov r9d, 0x40 | r9d = 0x40; 0x004458d0 sub r9d, ebp | r9d -= ebp; 0x004458d3 mov ecx, ebp | ecx = ebp; 0x004458d5 neg ecx | ecx = -ecx; 0x004458d7 mov r14, 0xffffffffffffffff | r14 = 0xffffffffffffffff; 0x004458de mov r11, 0xffffffffffffffff | r11 = 0xffffffffffffffff; 0x004458e5 shl r11, cl | r11 <<= cl; 0x004458e8 test ebp, ebp | 0x004458ea not r11 | r11 = ~r11; | if (ebp <= 0) { 0x004458ed cmovle r11, r14 | r11 = r14; | } 0x004458f1 mov rax, r12 | rax = r12; 0x004458f4 mov r12, r11 | r12 = r11; 0x004458f7 mov ecx, ebp | ecx = ebp; 0x004458f9 shl r12, cl | r12 <<= cl; 0x004458fc mov rsi, r15 | rsi = r15; 0x004458ff mov r15d, ebp | r15d = ebp; 0x00445902 not r12 | r12 = ~r12; 0x00445905 lea rdi, [r8 - 0x40] | rdi = r8 - 0x40; 0x00445909 shr rdi, 6 | rdi >>= 6; 0x0044590d lea rcx, [r13 + rdi + 1] | rcx = r13 + rdi + 1; 0x00445912 mov qword [rsp - 0x18], rcx | *((rsp - 0x18)) = rcx; 0x00445917 mov dword [rsp - 0xc], ebp | *((rsp - 0xc)) = ebp; 0x0044591b mov ecx, ebp | ecx = ebp; 0x0044591d shl r14, cl | r14 <<= cl; 0x00445920 add rax, r13 | rax += r13; 0x00445923 mov rbp, r14 | 0x00445926 not rbp | rbp = ~rbp; 0x00445929 mov qword [rsp - 8], rbx | *((rsp - 8)) = rbx; 0x0044592e add rsi, rbx | rsi += rbx; 0x00445931 lea rax, [rdx + rax*8] | rax = rdx + rax*8; 0x00445935 mov rcx, qword [rsp - 0x28] | rcx = *((rsp - 0x28)); 0x0044593a mov rbx, qword [rcx + rsi*8] | rbx = *((rcx + rsi*8)); 0x0044593e inc rdi | rdi++; 0x00445941 lea rdx, [rcx + rsi*8 + 8] | rdx = rcx + rsi*8 + 8; 0x00445946 xor esi, esi | esi = 0; 0x00445948 nop dword [rax + rax] | | do { 0x00445950 and rbx, r12 | rbx &= r12; 0x00445953 mov r13, qword [rax + rsi*8] | r13 = *((rax + rsi*8)); 0x00445957 mov r10, r13 | r10 = *((rax + rsi*8)); 0x0044595a and r10, r11 | r10 &= r11; 0x0044595d mov ecx, r15d | ecx = r15d; 0x00445960 shl r10, cl | r10 <<= cl; 0x00445963 or r10, rbx | r10 |= rbx; 0x00445966 mov qword [rdx + rsi*8 - 8], r10 | *((rdx + rsi*8 - 8)) = r10; 0x0044596b mov ecx, r9d | ecx = r9d; 0x0044596e shr r13, cl | r13 >>= cl; 0x00445971 and r13, rbp | r13 &= rbp; 0x00445974 mov rbx, qword [rdx + rsi*8] | rbx = *((rdx + rsi*8)); 0x00445978 and rbx, r14 | rbx &= r14; 0x0044597b or rbx, r13 | rbx |= r13; 0x0044597e mov qword [rdx + rsi*8], rbx | *((rdx + rsi*8)) = rbx; 0x00445982 add r8, 0xffffffffffffffc0 | r8 += 0xffffffffffffffc0; 0x00445986 inc rsi | rsi++; 0x00445989 cmp rdi, rsi | 0x0044598c jne 0x445950 | | } while (rdi != rsi); 0x0044598e mov rbx, qword [rsp - 8] | rbx = *((rsp - 8)); 0x00445993 add rbx, rsi | rbx += rsi; 0x00445996 mov eax, dword [rsp - 0xc] | eax = *((rsp - 0xc)); 0x0044599a mov r9d, eax | r9d = *((rsp - 0xc)); 0x0044599d mov r10, qword [rsp - 0x30] | r10 = *((rsp - 0x30)); 0x004459a2 mov r11, qword [rsp - 0x20] | r11 = *((rsp - 0x20)); 0x004459a7 mov r14, qword [rsp - 0x18] | r14 = *((rsp - 0x18)); 0x004459ac jmp 0x445d19 | goto label_8; | label_3: 0x004459b1 test r8d, r8d | | if (r8d == 0) { 0x004459b4 je 0x445deb | goto label_2; | } 0x004459ba mov eax, 0x40 | eax = 0x40; 0x004459bf sub eax, r9d | eax -= r9d; 0x004459c2 cmp eax, r8d | | if (eax >= r8d) { 0x004459c5 jge 0x445ae5 | goto label_9; | } 0x004459cb mov rbp, 0xffffffffffffffff | 0x004459d2 mov ecx, eax | ecx = eax; 0x004459d4 shl rbp, cl | rbp <<= cl; 0x004459d7 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004459de mov edx, eax | edx = eax; 0x004459e0 mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x004459e7 test r9d, r9d | | if (r9d != 0) { 0x004459ea je 0x4459f2 | 0x004459ec not rbp | rbp = ~rbp; 0x004459ef mov rdi, rbp | rdi = rbp; | } 0x004459f2 mov rbp, rbx | 0x004459f5 and rbp, rdi | rbp &= rdi; 0x004459f8 mov ecx, r9d | ecx = r9d; 0x004459fb shl rdi, cl | rdi <<= cl; 0x004459fe not rdi | rdi = ~rdi; 0x00445a01 and rdi, qword [r10] | rdi &= *(r10); 0x00445a04 shl rbp, cl | rbp <<= cl; 0x00445a07 mov ecx, edx | ecx = edx; 0x00445a09 shr rbx, cl | rbx >>= cl; 0x00445a0c or rbp, rdi | rbp |= rdi; 0x00445a0f mov qword [r10], rbp | *(r10) = rbp; 0x00445a12 sub r8d, eax | r8d -= eax; 0x00445a15 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445a1c mov ecx, r8d | ecx = r8d; 0x00445a1f shl rax, cl | rax <<= cl; 0x00445a22 cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00445a26 jg 0x445a2e | 0x00445a28 not rax | rax = ~rax; 0x00445a2b mov rsi, rax | rsi = rax; | } 0x00445a2e and rbx, rsi | rbx &= rsi; 0x00445a31 not rsi | rsi = ~rsi; 0x00445a34 and rsi, qword [r10 + 8] | rsi &= *((r10 + 8)); 0x00445a38 or rsi, rbx | rsi |= rbx; 0x00445a3b mov qword [r10 + 8], rsi | *((r10 + 8)) = rsi; 0x00445a3f jmp 0x445deb | goto label_2; | label_4: 0x00445a44 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445a4b mov ecx, esi | ecx = esi; 0x00445a4d shl rax, cl | rax <<= cl; 0x00445a50 not rax | rax = ~rax; 0x00445a53 and rbx, rax | rbx &= rax; 0x00445a56 mov ecx, r9d | ecx = r9d; 0x00445a59 shl rax, cl | rax <<= cl; 0x00445a5c not rax | rax = ~rax; 0x00445a5f and rax, qword [r10] | rax &= *(r10); 0x00445a62 shl rbx, cl | rbx <<= cl; 0x00445a65 or rbx, rax | rbx |= rax; 0x00445a68 mov rdi, r10 | rdi = r10; | label_5: 0x00445a6b mov qword [rdi], rbx | *(rdi) = rbx; 0x00445a6e lea ebp, [rsi + r9] | ebp = rsi + r9; 0x00445a72 sub r8, rsi | r8 -= rsi; 0x00445a75 mov r13d, 1 | r13d = 1; 0x00445a7b cmp ebp, 0x40 | | if (ebp < 0x40) { 0x00445a7e jb 0x445ac0 | goto label_10; | } 0x00445a80 lea r9d, [rsi + r9 - 0x40] | r9d = rsi + r9 - 0x40; 0x00445a85 test r9d, r9d | | if (r9d != 0) { 0x00445a88 jne 0x4458b0 | goto label_0; | } | label_6: 0x00445a8e cmp r8, 0x40 | | if (r8 < 0x40) { 0x00445a92 jb 0x445ad7 | goto label_11; | } 0x00445a94 lea rcx, [r8 - 0x40] | rcx = r8 - 0x40; 0x00445a98 mov rdi, rcx | rdi = rcx; 0x00445a9b shr rdi, 6 | rdi >>= 6; 0x00445a9f lea r14, [r13 + rdi + 1] | r14 = r13 + rdi + 1; 0x00445aa4 cmp rcx, 0xc0 | | if (rcx >= 0xc0) { 0x00445aab jae 0x445b22 | goto label_12; | } 0x00445aad mov rcx, r13 | rcx = r13; 0x00445ab0 mov rbp, r13 | 0x00445ab3 mov rbx, r13 | rbx = r13; 0x00445ab6 mov r13, qword [rsp - 0x28] | r13 = *((rsp - 0x28)); 0x00445abb jmp 0x445c83 | goto label_13; | label_10: 0x00445ac0 xor ebx, ebx | ebx = 0; 0x00445ac2 cmp r8, 0x40 | | if (r8 >= 0x40) { 0x00445ac6 jae 0x4458c0 | goto label_1; | } | label_7: 0x00445acc mov r9d, ebp | r9d = ebp; 0x00445acf mov r14, r13 | r14 = r13; 0x00445ad2 jmp 0x445d19 | goto label_8; | label_11: 0x00445ad7 xor r9d, r9d | r9d = 0; 0x00445ada mov rbx, r13 | rbx = r13; 0x00445add mov r14, r13 | r14 = r13; 0x00445ae0 jmp 0x445d19 | goto label_8; | label_9: 0x00445ae5 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445aec mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445af3 mov ecx, r8d | ecx = r8d; 0x00445af6 shl rdx, cl | rdx <<= cl; 0x00445af9 cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00445afd jg 0x445b05 | 0x00445aff not rdx | rdx = ~rdx; 0x00445b02 mov rax, rdx | rax = rdx; | } 0x00445b05 and rbx, rax | rbx &= rax; 0x00445b08 mov ecx, r9d | ecx = r9d; 0x00445b0b shl rax, cl | rax <<= cl; 0x00445b0e not rax | rax = ~rax; 0x00445b11 shl rbx, cl | rbx <<= cl; 0x00445b14 and rax, qword [r10] | rax &= *(r10); 0x00445b17 or rbx, rax | rbx |= rax; 0x00445b1a mov qword [r10], rbx | *(r10) = rbx; 0x00445b1d jmp 0x445deb | goto label_2; | label_12: 0x00445b22 lea rcx, [r13 + r15] | rcx = r13 + r15; 0x00445b27 mov rbx, qword [rsp - 0x28] | rbx = *((rsp - 0x28)); 0x00445b2c lea rsi, [rbx + rcx*8] | rsi = rbx + rcx*8; 0x00445b30 mov qword [rsp - 0x30], r13 | *((rsp - 0x30)) = r13; 0x00445b35 lea rax, [r13 + r12] | rax = r13 + r12; 0x00445b3a mov r13, rbx | r13 = rbx; 0x00445b3d lea rbp, [rax + rdi] | rbp = rax + rdi; 0x00445b41 lea rbp, [rdx + rbp*8 + 8] | rbp = rdx + rbp*8 + 8; 0x00445b46 cmp rsi, rbp | | if (rsi < rbp) { 0x00445b49 jae 0x445b6c | 0x00445b4b add rcx, rdi | rcx += rdi; 0x00445b4e lea rcx, [r13 + rcx*8 + 8] | rcx = r13 + rcx*8 + 8; 0x00445b53 lea rax, [rdx + rax*8] | rax = rdx + rax*8; 0x00445b57 cmp rax, rcx | | if (rax >= rcx) { 0x00445b5a jae 0x445b6c | goto label_14; | } 0x00445b5c mov rcx, qword [rsp - 0x30] | rcx = *((rsp - 0x30)); 0x00445b61 mov rbp, rcx | 0x00445b64 mov rbx, rcx | rbx = rcx; 0x00445b67 jmp 0x445c83 | goto label_13; | } | label_14: 0x00445b6c mov qword [rsp - 0x18], r14 | *((rsp - 0x18)) = r14; 0x00445b71 lea r14, [rdi + 1] | r14 = rdi + 1; 0x00445b75 mov qword [rsp - 0x20], r14 | *((rsp - 0x20)) = r14; 0x00445b7a and r14, 0xfffffffffffffffc | r14 &= 0xfffffffffffffffc; 0x00445b7e movq xmm0, r8 | xmm0 = r8; 0x00445b83 lea rax, [r14 - 4] | rax = r14 - 4; 0x00445b87 mov rcx, rax | rcx = rax; 0x00445b8a shr rcx, 2 | rcx >>= 2; 0x00445b8e inc rcx | rcx++; 0x00445b91 test rax, rax | | if (rax == 0) { 0x00445b94 je 0x445c19 | goto label_15; | } 0x00445b9a mov rbp, rcx | 0x00445b9d and rbp, 0xfffffffffffffffe | rbp &= 0xfffffffffffffffe; 0x00445ba1 neg rbp | rbp = -rbp; 0x00445ba4 pxor xmm2, xmm2 | xmm2 = 0; 0x00445ba8 xor ebx, ebx | ebx = 0; 0x00445baa movdqa xmm3, xmmword [rip + 0x8d79e] | __asm ("movdqa xmm3, xmmword [0x004d3350]"); 0x00445bb2 mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); 0x00445bb7 nop word [rax + rax] | | do { 0x00445bc0 movdqa xmm1, xmm2 | __asm ("movdqa xmm1, xmm2"); 0x00445bc4 mov rax, rsi | rax = rsi; 0x00445bc7 or rax, rbx | rax |= rbx; 0x00445bca movups xmm4, xmmword [r11 + rax*8] | __asm ("movups xmm4, xmmword [r11 + rax*8]"); 0x00445bcf movups xmm5, xmmword [r11 + rax*8 + 0x10] | __asm ("movups xmm5, xmmword [r11 + rax*8 + 0x10]"); 0x00445bd5 movups xmmword [r10 + rax*8], xmm4 | __asm ("movups xmmword [r10 + rax*8], xmm4"); 0x00445bda movups xmmword [r10 + rax*8 + 0x10], xmm5 | __asm ("movups xmmword [r10 + rax*8 + 0x10], xmm5"); 0x00445be0 lea rax, [rbx + 4] | rax = rbx + 4; 0x00445be4 or rax, rsi | rax |= rsi; 0x00445be7 movups xmm4, xmmword [r11 + rax*8] | __asm ("movups xmm4, xmmword [r11 + rax*8]"); 0x00445bec movups xmm5, xmmword [r11 + rax*8 + 0x10] | __asm ("movups xmm5, xmmword [r11 + rax*8 + 0x10]"); 0x00445bf2 movups xmmword [r10 + rax*8], xmm4 | __asm ("movups xmmword [r10 + rax*8], xmm4"); 0x00445bf7 movups xmmword [r10 + rax*8 + 0x10], xmm5 | __asm ("movups xmmword [r10 + rax*8 + 0x10], xmm5"); 0x00445bfd paddq xmm0, xmm3 | __asm ("paddq xmm0, xmm3"); 0x00445c01 paddq xmm2, xmm3 | __asm ("paddq xmm2, xmm3"); 0x00445c05 add rbx, 8 | rbx += 8; 0x00445c09 add rbp, 2 | rbp += 2; 0x00445c0d jne 0x445bc0 | | } while (rbp != 0); 0x00445c0f paddq xmm1, xmmword [rip + 0x8d749] | __asm ("paddq xmm1, xmmword [0x004d3360]"); 0x00445c17 jmp 0x445c23 | goto label_16; | label_15: 0x00445c19 movdqa xmm1, xmmword [rip + 0x8d71f] | __asm ("movdqa xmm1, xmmword [0x004d3340]"); 0x00445c21 xor ebx, ebx | ebx = 0; | label_16: 0x00445c23 mov rsi, qword [rsp - 0x30] | rsi = *((rsp - 0x30)); 0x00445c28 lea rax, [rsi + r14] | rax = rsi + r14; 0x00445c2c test cl, 1 | | if ((cl & 1) != 0) { 0x00445c2f je 0x445c58 | 0x00445c31 or rbx, rsi | rbx |= rsi; 0x00445c34 movups xmm2, xmmword [r11 + rbx*8] | __asm ("movups xmm2, xmmword [r11 + rbx*8]"); 0x00445c39 movdqu xmm3, xmmword [r11 + rbx*8 + 0x10] | __asm ("movdqu xmm3, xmmword [r11 + rbx*8 + 0x10]"); 0x00445c40 movups xmmword [r10 + rbx*8], xmm2 | __asm ("movups xmmword [r10 + rbx*8], xmm2"); 0x00445c45 movdqu xmmword [r10 + rbx*8 + 0x10], xmm3 | __asm ("movdqu xmmword [r10 + rbx*8 + 0x10], xmm3"); 0x00445c4c paddq xmm0, xmmword [rip + 0x8d6ec] | __asm ("paddq xmm0, xmmword [0x004d3340]"); 0x00445c54 movdqa xmm2, xmm1 | __asm ("movdqa xmm2, xmm1"); | } 0x00445c58 paddq xmm0, xmm2 | __asm ("paddq xmm0, xmm2"); 0x00445c5c pshufd xmm1, xmm0, 0xee | __asm ("pshufd xmm1, xmm0, 0xee"); 0x00445c61 paddq xmm1, xmm0 | __asm ("paddq xmm1, xmm0"); 0x00445c65 movq r8, xmm1 | r8 = xmm1; 0x00445c6a mov rcx, rsi | rcx = rsi; 0x00445c6d mov rbp, rax | 0x00445c70 cmp qword [rsp - 0x20], r14 | 0x00445c75 mov rbx, rax | rbx = rax; 0x00445c78 mov r14, qword [rsp - 0x18] | r14 = *((rsp - 0x18)); | if (*((rsp - 0x20)) == r14) { 0x00445c7d je 0x445d19 | goto label_8; | } | label_13: 0x00445c83 add rcx, rdi | rcx += rdi; 0x00445c86 mov edi, ecx | edi = ecx; 0x00445c88 sub edi, ebp | edi -= ebp; 0x00445c8a inc edi | edi++; 0x00445c8c mov qword [rsp - 0x30], rcx | *((rsp - 0x30)) = rcx; 0x00445c91 sub rcx, rbp | rcx -= rbp; 0x00445c94 and rdi, 3 | rdi &= 3; | if (rdi == 0) { 0x00445c98 je 0x445cba | goto label_17; | } 0x00445c9a shl rdi, 6 | rdi <<= 6; 0x00445c9e xor esi, esi | esi = 0; | do { 0x00445ca0 mov rax, qword [r11 + rbp*8] | rax = *((r11 + rbp*8)); 0x00445ca4 inc rbp | rbp++; 0x00445ca7 mov qword [r10 + rbx*8], rax | *((r10 + rbx*8)) = rax; 0x00445cab inc rbx | rbx++; 0x00445cae add rsi, 0x40 | rsi += 0x40; 0x00445cb2 cmp rdi, rsi | 0x00445cb5 jne 0x445ca0 | | } while (rdi != rsi); 0x00445cb7 sub r8, rsi | r8 -= rsi; | label_17: 0x00445cba cmp rcx, 3 | | if (rcx < 3) { 0x00445cbe jb 0x445d19 | goto label_8; | } 0x00445cc0 mov rdi, qword [rsp - 0x30] | rdi = *((rsp - 0x30)); 0x00445cc5 sub rdi, rbp | rdi -= rbp; 0x00445cc8 inc rdi | rdi++; 0x00445ccb add r12, rbp | r12 += rbp; 0x00445cce lea rcx, [rdx + r12*8 + 0x18] | rcx = rdx + r12*8 + 0x18; 0x00445cd3 add r15, rbx | r15 += rbx; 0x00445cd6 lea rsi, [r13 + r15*8 + 0x18] | rsi = r13 + r15*8 + 0x18; 0x00445cdb xor edx, edx | edx = 0; 0x00445cdd nop dword [rax] | | do { 0x00445ce0 mov rax, qword [rcx + rdx*8 - 0x18] | rax = *((rcx + rdx*8 - 0x18)); 0x00445ce5 mov qword [rsi + rdx*8 - 0x18], rax | *((rsi + rdx*8 - 0x18)) = rax; 0x00445cea mov rax, qword [rcx + rdx*8 - 0x10] | rax = *((rcx + rdx*8 - 0x10)); 0x00445cef mov qword [rsi + rdx*8 - 0x10], rax | *((rsi + rdx*8 - 0x10)) = rax; 0x00445cf4 mov rax, qword [rcx + rdx*8 - 8] | rax = *((rcx + rdx*8 - 8)); 0x00445cf9 mov qword [rsi + rdx*8 - 8], rax | *((rsi + rdx*8 - 8)) = rax; 0x00445cfe mov rax, qword [rcx + rdx*8] | rax = *((rcx + rdx*8)); 0x00445d02 mov qword [rsi + rdx*8], rax | *((rsi + rdx*8)) = rax; 0x00445d06 add r8, 0xffffffffffffff00 | r8 += 0xffffffffffffff00; 0x00445d0d add rdx, 4 | rdx += 4; 0x00445d11 cmp rdi, rdx | 0x00445d14 jne 0x445ce0 | | } while (rdi != rdx); 0x00445d16 add rbx, rdx | rbx += rdx; | label_8: 0x00445d19 test r8, r8 | | if (r8 == 0) { 0x00445d1c je 0x445deb | goto label_2; | } 0x00445d22 mov r11, qword [r11 + r14*8] | r11 = *((r11 + r14*8)); 0x00445d26 mov eax, 0x40 | eax = 0x40; 0x00445d2b sub eax, r9d | eax -= r9d; 0x00445d2e cmp eax, r8d | | if (eax >= r8d) { 0x00445d31 jge 0x445dbb | goto label_18; | } 0x00445d37 cmp r9d, 0x40 | | if (r9d >= 0x40) { 0x00445d3b jge 0x445df6 | goto label_19; | } 0x00445d41 mov rbp, 0xffffffffffffffff | 0x00445d48 mov ecx, eax | ecx = eax; 0x00445d4a shl rbp, cl | rbp <<= cl; 0x00445d4d mov rdi, 0xffffffffffffffff | rdi = 0xffffffffffffffff; 0x00445d54 mov edx, eax | edx = eax; 0x00445d56 test r9d, r9d | | if (r9d > 0) { 0x00445d59 jle 0x445d61 | 0x00445d5b not rbp | rbp = ~rbp; 0x00445d5e mov rdi, rbp | rdi = rbp; | } 0x00445d61 mov rsi, r11 | rsi = r11; 0x00445d64 and rsi, rdi | rsi &= rdi; 0x00445d67 mov ecx, r9d | ecx = r9d; 0x00445d6a shl rdi, cl | rdi <<= cl; 0x00445d6d not rdi | rdi = ~rdi; 0x00445d70 shl rsi, cl | rsi <<= cl; 0x00445d73 and rdi, qword [r10 + rbx*8] | rdi &= *((r10 + rbx*8)); 0x00445d77 or rsi, rdi | rsi |= rdi; 0x00445d7a mov qword [r10 + rbx*8], rsi | *((r10 + rbx*8)) = rsi; | do { 0x00445d7e mov ecx, edx | ecx = edx; 0x00445d80 shr r11, cl | r11 >>= cl; 0x00445d83 sub r8d, eax | r8d -= eax; 0x00445d86 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445d8d mov rdx, 0xffffffffffffffff | rdx = 0xffffffffffffffff; 0x00445d94 mov ecx, r8d | ecx = r8d; 0x00445d97 shl rdx, cl | rdx <<= cl; 0x00445d9a cmp r8d, 0x3f | | if (r8d <= 0x3f) { 0x00445d9e jg 0x445da6 | 0x00445da0 not rdx | rdx = ~rdx; 0x00445da3 mov rax, rdx | rax = rdx; | } 0x00445da6 and r11, rax | r11 &= rax; 0x00445da9 not rax | rax = ~rax; 0x00445dac and rax, qword [r10 + rbx*8 + 8] | rax &= *((r10 + rbx*8 + 8)); 0x00445db1 or rax, r11 | rax |= r11; 0x00445db4 mov qword [r10 + rbx*8 + 8], rax | *((r10 + rbx*8 + 8)) = rax; 0x00445db9 jmp 0x445deb | goto label_2; | label_18: 0x00445dbb cmp r9d, 0x3f | | if (r9d <= 0x3f) { 0x00445dbf jg 0x445deb | 0x00445dc1 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x00445dc8 mov ecx, r8d | ecx = r8d; 0x00445dcb shl rax, cl | rax <<= cl; 0x00445dce not rax | rax = ~rax; 0x00445dd1 and r11, rax | r11 &= rax; 0x00445dd4 mov ecx, r9d | ecx = r9d; 0x00445dd7 shl rax, cl | rax <<= cl; 0x00445dda not rax | rax = ~rax; 0x00445ddd shl r11, cl | r11 <<= cl; 0x00445de0 and rax, qword [r10 + rbx*8] | rax &= *((r10 + rbx*8)); 0x00445de4 or r11, rax | r11 |= rax; 0x00445de7 mov qword [r10 + rbx*8], r11 | *((r10 + rbx*8)) = r11; | } | label_2: 0x00445deb pop rbx | 0x00445dec pop r12 | r12 = rbx; 0x00445dee pop r13 | r13 = rbx; 0x00445df0 pop r14 | r14 = rbx; 0x00445df2 pop r15 | r15 = rbx; 0x00445df4 pop rbp | 0x00445df5 ret | return rax; | label_19: 0x00445df6 mov edx, eax | edx = eax; 0x00445df8 jmp 0x445d7e | | } while (1); | }