; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/none @ 0x41fa40 */ | #include | ; (fcn) method.BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_.insert_unsigned_long__BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned__const__unsigned_long__unsigned_long_ () | int64_t method_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_insert_unsigned_long_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_const_unsigned_long_unsigned_long_ (int64_t arg5, void * arg4, uint32_t arg3, int64_t arg2, int64_t arg1) { | void * s2; | void ** var_10h; | void ** s1; | uint32_t var_20h; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlc::PackedIntArrayImp::insert(unsigned long, BloombergLP::bdlc::PackedIntArrayImp const&, unsigned long, unsigned long) */ 0x0041fa40 push rbp | 0x0041fa41 push r15 | 0x0041fa43 push r14 | 0x0041fa45 push r13 | 0x0041fa47 push r12 | 0x0041fa49 push rbx | 0x0041fa4a sub rsp, 0x28 | 0x0041fa4e mov r14, r8 | r14 = r8; 0x0041fa51 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x0041fa56 mov r13, rsi | r13 = rsi; 0x0041fa59 mov r12, rdi | r12 = rdi; 0x0041fa5c mov r10, qword [rdi + 8] | r10 = *((rdi + 8)); 0x0041fa60 lea r9, [r10 + r8] | r9 = r10 + r8; 0x0041fa64 mov r11d, dword [rdi + 0x10] | r11d = *((rdi + 0x10)); 0x0041fa68 mov ecx, dword [rdx + 0x10] | ecx = *((rdx + 0x10)); 0x0041fa6b mov ebp, r11d | 0x0041fa6e cmp r11d, ecx | | if (r11d >= ecx) { 0x0041fa71 jge 0x41fbab | goto label_1; | } 0x0041fa77 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041fa7c add rax, r14 | rax += r14; 0x0041fa7f mov ebp, 1 | 0x0041fa84 cmp ecx, 8 | | if (ecx == 8) { 0x0041fa87 je 0x41fadd | goto label_2; | } 0x0041fa89 cmp ecx, 4 | | if (ecx == 4) { 0x0041fa8c je 0x41fb51 | goto label_3; | } 0x0041fa92 cmp ecx, 2 | | if (ecx != 2) { 0x0041fa95 jne 0x41fba4 | goto label_4; | } 0x0041fa9b cmp rax, qword [rsp + 8] | | if (rax <= *((rsp + 8))) { 0x0041faa0 jbe 0x41fba4 | goto label_4; | } 0x0041faa6 mov rcx, qword [rdx] | rcx = *(rdx); 0x0041faa9 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041faae lea rcx, [rcx + rax*2] | rcx = rcx + rax*2; 0x0041fab2 xor eax, eax | eax = 0; 0x0041fab4 nop word cs:[rax + rax] | 0x0041fabe nop | | do { 0x0041fac0 movzx esi, word [rcx + rax*2] | esi = *((rcx + rax*2)); 0x0041fac4 cmp esi, 0xff | | if (esi > 0xff) { 0x0041faca ja 0x41fb98 | goto label_5; | } 0x0041fad0 inc rax | rax++; 0x0041fad3 cmp r14, rax | 0x0041fad6 jne 0x41fac0 | | } while (r14 != rax); 0x0041fad8 jmp 0x41fba4 | goto label_4; | label_2: 0x0041fadd cmp rax, qword [rsp + 8] | | if (rax <= *((rsp + 8))) { 0x0041fae2 jbe 0x41fba4 | goto label_4; | } 0x0041fae8 mov rcx, qword [rdx] | rcx = *(rdx); 0x0041faeb mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041faf0 lea r8, [rcx + rax*8] | r8 = rcx + rax*8; 0x0041faf4 mov ebp, 1 | 0x0041faf9 xor ebx, ebx | ebx = 0; 0x0041fafb jmp 0x41fb0c | | while (edi >= ebp) { | label_0: 0x0041fb00 inc rbx | rbx++; 0x0041fb03 cmp r14, rbx | | if (r14 == rbx) { 0x0041fb06 je 0x41fba4 | goto label_4; | } 0x0041fb0c mov edi, ebp | edi = ebp; 0x0041fb0e mov rsi, qword [r8 + rbx*8] | rsi = *((r8 + rbx*8)); 0x0041fb12 xor ebp, ebp | ebp = 0; 0x0041fb14 mov rcx, rsi | rcx = rsi; 0x0041fb17 shr rcx, 0x20 | rcx >>= 0x20; 0x0041fb1b setne bpl | bpl = (rcx != 0) ? 1 : 0; 0x0041fb1f xor eax, eax | eax = 0; 0x0041fb21 cmp rsi, 0xff | 0x0041fb28 seta al | al = (rsi > 0xff) ? 1 : 0; 0x0041fb2b inc eax | eax++; 0x0041fb2d cmp rsi, 0xffff | 0x0041fb34 lea ebp, [rbp*4 + 4] | ebp = rbp*4 + 4; | if (rsi <= 0xffff) { 0x0041fb3b cmovbe ebp, eax | | } 0x0041fb3e cmp edi, ebp | | if (edi >= ebp) { 0x0041fb40 cmovae ebp, edi | | } 0x0041fb43 jae 0x41fb00 | | } 0x0041fb45 test rcx, rcx | | if (rcx == 0) { 0x0041fb48 je 0x41fb00 | goto label_0; | } 0x0041fb4a mov ebp, 8 | 0x0041fb4f jmp 0x41fba4 | goto label_4; | label_3: 0x0041fb51 cmp rax, qword [rsp + 8] | | if (rax <= *((rsp + 8))) { 0x0041fb56 jbe 0x41fba4 | goto label_4; | } 0x0041fb58 mov rcx, qword [rdx] | rcx = *(rdx); 0x0041fb5b mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041fb60 lea rcx, [rcx + rax*4] | rcx = rcx + rax*4; 0x0041fb64 mov ebp, 1 | 0x0041fb69 xor eax, eax | eax = 0; 0x0041fb6b nop dword [rax + rax] | | do { 0x0041fb70 mov esi, dword [rcx + rax*4] | esi = *((rcx + rax*4)); 0x0041fb73 cmp esi, 0xffff | | if (esi > 0xffff) { 0x0041fb79 ja 0x41fb9f | goto label_6; | } 0x0041fb7b xor edi, edi | edi = 0; 0x0041fb7d cmp esi, 0xff | 0x0041fb83 seta dil | dil = (esi > 0xff) ? 1 : 0; 0x0041fb87 inc edi | edi++; 0x0041fb89 cmp ebp, edi | | if (ebp < edi) { 0x0041fb8b cmovb ebp, edi | | } 0x0041fb8e inc rax | rax++; 0x0041fb91 cmp r14, rax | 0x0041fb94 jne 0x41fb70 | | } while (r14 != rax); 0x0041fb96 jmp 0x41fba4 | goto label_4; | label_5: 0x0041fb98 mov ebp, 2 | 0x0041fb9d jmp 0x41fba4 | goto label_4; | label_6: 0x0041fb9f mov ebp, 4 | | label_4: 0x0041fba4 cmp r11d, ebp | | if (r11d >= ebp) { 0x0041fba7 cmovge ebp, r11d | | } | label_1: 0x0041fbab movsxd r15, ebp | r15 = (int64_t) ebp; 0x0041fbae mov rcx, r9 | rcx = r9; 0x0041fbb1 imul rcx, r15 | rcx *= r15; 0x0041fbb5 mov rsi, qword [r12 + 0x18] | rsi = *((r12 + 0x18)); 0x0041fbba cmp rcx, rsi | | if (rcx <= rsi) { 0x0041fbbd jbe 0x41fc5a | goto label_7; | } 0x0041fbc3 cmp rcx, 0x55555550 | 0x0041fbca mov qword [rsp + 0x18], r13 | *((rsp + 0x18)) = r13; 0x0041fbcf mov qword [rsp + 0x10], r9 | *((rsp + 0x10)) = r9; 0x0041fbd4 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; | if (rcx > 0x55555550) { 0x0041fbd9 ja 0x41ff2b | goto label_8; | } 0x0041fbdf nop | | do { 0x0041fbe0 lea rax, [rsi + 3] | rax = rsi + 3; 0x0041fbe4 shr rax, 1 | rax >>= 1; 0x0041fbe7 add rsi, rax | rsi += rax; 0x0041fbea cmp rsi, rcx | 0x0041fbed jb 0x41fbe0 | | } while (rsi < rcx); | do { 0x0041fbef mov rdi, qword [r12 + 0x20] | rdi = *((r12 + 0x20)); 0x0041fbf4 mov rax, qword [rdi] | rax = *(rdi); 0x0041fbf7 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041fbfa mov r13, rax | r13 = rax; 0x0041fbfd mov eax, dword [r12 + 0x10] | eax = *((r12 + 0x10)); 0x0041fc02 cmp eax, ebp | | if (eax == ebp) { 0x0041fc04 jne 0x41fca9 | 0x0041fc0a mov rbx, qword [rsp + 0x18] | rbx = *((rsp + 0x18)); 0x0041fc0f lea rdi, [r14 + rbx] | 0x0041fc13 imul rdi, r15 | rdi *= r15; 0x0041fc17 mov rsi, r15 | 0x0041fc1a imul rsi, rbx | rsi *= rbx; 0x0041fc1e add rsi, qword [r12] | rsi += *(r12); 0x0041fc22 add rdi, r13 | rdi += r13; 0x0041fc25 mov rdx, qword [r12 + 8] | 0x0041fc2a sub rdx, rbx | rdx -= rbx; 0x0041fc2d imul rdx, r15 | rdx *= r15; 0x0041fc31 call 0x403b60 | memcpy (r14 + rbx, r15, *((r12 + 8))); 0x0041fc36 mov rsi, qword [r12] | 0x0041fc3a movsxd rdx, dword [r12 + 0x10] | rdx = *((r12 + 0x10)); 0x0041fc3f imul rdx, rbx | rdx *= rbx; 0x0041fc43 mov rdi, r13 | 0x0041fc46 call 0x403b60 | memcpy (r13, *(r12), rdx); 0x0041fc4b mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x0041fc50 mov qword [r12 + 8], rax | *((r12 + 8)) = rax; 0x0041fc55 jmp 0x41fd0f | goto label_9; | label_7: 0x0041fc5a movsxd rcx, r11d | rcx = (int64_t) r11d; 0x0041fc5d cmp r12, rdx | | if (r12 != rdx) { 0x0041fc60 je 0x41fd82 | 0x0041fc66 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0041fc6b cmp r11d, ebp | | if (r11d != ebp) { 0x0041fc6e jne 0x41fe23 | goto label_10; | } 0x0041fc74 mov rax, qword [r12] | rax = *(r12); 0x0041fc78 lea rdi, [r14 + r13] | 0x0041fc7c imul rdi, rcx | rdi *= rcx; 0x0041fc80 add rdi, rax | rdi += rax; 0x0041fc83 mov rsi, rcx | 0x0041fc86 imul rsi, r13 | rsi *= r13; 0x0041fc8a add rsi, rax | rsi += rax; 0x0041fc8d sub r10, r13 | r10 -= r13; 0x0041fc90 imul r10, rcx | r10 *= rcx; 0x0041fc94 mov rdx, r10 | 0x0041fc97 mov rbx, r9 | rbx = r9; 0x0041fc9a call 0x403910 | rax = memmove (r14 + r13, rcx, r10); 0x0041fc9f mov qword [r12 + 8], rbx | *((r12 + 8)) = rbx; 0x0041fca4 jmp 0x41fe6d | | } else { 0x0041fca9 mov r8, qword [r12] | r8 = *(r12); 0x0041fcad mov rbx, qword [r12 + 8] | rbx = *((r12 + 8)); 0x0041fcb2 mov rcx, qword [rsp + 0x10] | rcx = *((rsp + 0x10)); 0x0041fcb7 mov qword [r12 + 8], rcx | *((r12 + 8)) = rcx; 0x0041fcbc mov qword [rsp + 0x10], r14 | *((rsp + 0x10)) = r14; 0x0041fcc1 mov r14, qword [rsp + 0x18] | r14 = *((rsp + 0x18)); 0x0041fcc6 mov rcx, qword [rsp + 0x10] | rcx = *((rsp + 0x10)); 0x0041fccb lea rdx, [rcx + r14] | 0x0041fccf sub rbx, r14 | rbx -= r14; 0x0041fcd2 mov rdi, r12 | 0x0041fcd5 mov rsi, r13 | 0x0041fcd8 mov ecx, ebp | 0x0041fcda mov r9, r14 | 0x0041fcdd push rbx | 0x0041fcde push rax | 0x0041fcdf call 0x41d590 | BloombergLP::bdlc::PackedIntArrayImp::replaceImp(void*,unsigned long,int,void*,unsigned long,int,unsigned long) (r12, r13, rcx + r14, ebp, *(r8), r14); 0x0041fce4 add rsp, 0x10 | 0x0041fce8 mov r8, qword [r12] | r8 = *(r12); 0x0041fcec mov eax, dword [r12 + 0x10] | eax = *((r12 + 0x10)); 0x0041fcf1 mov rdi, r12 | 0x0041fcf4 mov rsi, r13 | 0x0041fcf7 xor edx, edx | 0x0041fcf9 mov ecx, ebp | 0x0041fcfb xor r9d, r9d | 0x0041fcfe push r14 | 0x0041fd00 mov r14, qword [rsp + 0x18] | r14 = *((rsp + 0x18)); 0x0041fd05 push rax | 0x0041fd06 call 0x41d590 | BloombergLP::bdlc::PackedIntArrayImp::replaceImp(void*,unsigned long,int,void*,unsigned long,int,unsigned long) (r12, r13, 0, ebp, *(r8), 0); 0x0041fd0b add rsp, 0x10 | | label_9: 0x0041fd0f mov rcx, qword [rsp + 0x20] | rcx = *((rsp + 0x20)); 0x0041fd14 mov eax, dword [rcx + 0x10] | eax = *((rcx + 0x10)); 0x0041fd17 cmp ebp, eax | | if (ebp == eax) { 0x0041fd19 jne 0x41fd44 | 0x0041fd1b mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x0041fd20 imul rax, r15 | rax *= r15; 0x0041fd24 mov rdi, r13 | 0x0041fd27 add rdi, rax | rdi += rax; 0x0041fd2a mov rsi, qword [rsp + 8] | 0x0041fd2f imul rsi, r15 | rsi *= r15; 0x0041fd33 add rsi, qword [rcx] | rsi += *(rcx); 0x0041fd36 imul r14, r15 | r14 *= r15; 0x0041fd3a mov rdx, r14 | 0x0041fd3d call 0x403b60 | rax = memcpy (r13, *((rsp + 8)), r14); 0x0041fd42 jmp 0x41fd65 | | } else { 0x0041fd44 mov r8, qword [rcx] | 0x0041fd47 mov rdi, r12 | 0x0041fd4a mov rsi, r13 | 0x0041fd4d mov rdx, qword [rsp + 0x18] | 0x0041fd52 mov ecx, ebp | 0x0041fd54 mov r9, qword [rsp + 8] | 0x0041fd59 push r14 | 0x0041fd5b push rax | 0x0041fd5c call 0x41d590 | BloombergLP::bdlc::PackedIntArrayImp::replaceImp(void*,unsigned long,int,void*,unsigned long,int,unsigned long) (r12, r13, *((rsp + 0x18)), ebp, *(rcx), *((rsp + 8))); 0x0041fd61 add rsp, 0x10 | | } 0x0041fd65 mov rsi, qword [r12] | rsi = *(r12); 0x0041fd69 mov rdi, qword [r12 + 0x20] | rdi = *((r12 + 0x20)); 0x0041fd6e mov rax, qword [rdi] | rax = *(rdi); 0x0041fd71 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041fd74 mov qword [r12], r13 | *(r12) = r13; 0x0041fd78 mov dword [r12 + 0x10], ebp | *((r12 + 0x10)) = ebp; 0x0041fd7d jmp 0x41ff1c | goto label_11; | } 0x0041fd82 mov rbx, r9 | rbx = r9; 0x0041fd85 mov rax, qword [r12] | rax = *(r12); 0x0041fd89 lea r15, [r14 + r13] | r15 = r14 + r13; 0x0041fd8d mov rdi, r15 | 0x0041fd90 imul rdi, rcx | rdi *= rcx; 0x0041fd94 add rdi, rax | rdi += rax; 0x0041fd97 mov rsi, rcx | 0x0041fd9a imul rsi, r13 | rsi *= r13; 0x0041fd9e add rsi, rax | rsi += rax; 0x0041fda1 sub r10, r13 | r10 -= r13; 0x0041fda4 imul r10, rcx | r10 *= rcx; 0x0041fda8 mov rdx, r10 | 0x0041fdab call 0x403910 | memmove (r15, rcx, r10); 0x0041fdb0 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041fdb5 add rax, r14 | rax += r14; 0x0041fdb8 cmp rax, r13 | | if (rax <= r13) { 0x0041fdbb jbe 0x41fecc | goto label_12; | } 0x0041fdc1 mov rbp, r13 | 0x0041fdc4 sub rbp, qword [rsp + 8] | rbp -= *((rsp + 8)); | if (rbp <= 0) { 0x0041fdc9 jbe 0x41feee | goto label_13; | } 0x0041fdcf sub r14, rbp | r14 -= rbp; 0x0041fdd2 mov rax, qword [r12] | rax = *(r12); 0x0041fdd6 movsxd rdx, dword [r12 + 0x10] | rdx = *((r12 + 0x10)); 0x0041fddb mov rdi, rdx | 0x0041fdde imul rdi, r13 | rdi *= r13; 0x0041fde2 add rdi, rax | rdi += rax; 0x0041fde5 mov rsi, qword [rsp + 8] | 0x0041fdea imul rsi, rdx | rsi *= rdx; 0x0041fdee add rsi, rax | rsi += rax; 0x0041fdf1 imul rdx, rbp | rdx *= rbp; 0x0041fdf5 call 0x403b60 | memcpy (rdx, *((rsp + 8)), rdx); 0x0041fdfa mov rax, qword [r12] | rax = *(r12); 0x0041fdfe add rbp, r13 | rbp += r13; 0x0041fe01 movsxd rcx, dword [r12 + 0x10] | rcx = *((r12 + 0x10)); 0x0041fe06 imul rbp, rcx | rbp *= rcx; 0x0041fe0a add rbp, rax | rbp += rax; 0x0041fe0d imul r15, rcx | r15 *= rcx; 0x0041fe11 add r15, rax | r15 += rax; 0x0041fe14 imul r14, rcx | r14 *= rcx; 0x0041fe18 mov rsi, r15 | rsi = r15; 0x0041fe1b mov r13, rbp | r13 = rbp; 0x0041fe1e jmp 0x41ff0c | goto label_14; | label_10: 0x0041fe23 mov qword [r12 + 8], r9 | *((r12 + 8)) = r9; 0x0041fe28 mov rsi, qword [r12] | rsi = *(r12); 0x0041fe2c lea rdx, [r14 + r13] | 0x0041fe30 sub r10, r13 | r10 -= r13; 0x0041fe33 mov rdi, r12 | 0x0041fe36 mov ecx, ebp | 0x0041fe38 mov r8, rsi | 0x0041fe3b mov r9, r13 | 0x0041fe3e push r10 | 0x0041fe40 push r11 | 0x0041fe42 call 0x41d590 | BloombergLP::bdlc::PackedIntArrayImp::replaceImp(void*,unsigned long,int,void*,unsigned long,int,unsigned long) (r12, *(rsi), r14 + r13, ebp, rsi, r13); 0x0041fe47 add rsp, 0x10 | 0x0041fe4b mov rsi, qword [r12] | rsi = *(r12); 0x0041fe4f mov eax, dword [r12 + 0x10] | eax = *((r12 + 0x10)); 0x0041fe54 mov rdi, r12 | 0x0041fe57 xor edx, edx | 0x0041fe59 mov ecx, ebp | 0x0041fe5b mov r8, rsi | 0x0041fe5e xor r9d, r9d | 0x0041fe61 push r13 | 0x0041fe63 push rax | 0x0041fe64 call 0x41d590 | BloombergLP::bdlc::PackedIntArrayImp::replaceImp(void*,unsigned long,int,void*,unsigned long,int,unsigned long) (r12, *(rsi), 0, ebp, rsi, 0); 0x0041fe69 add rsp, 0x10 | | } 0x0041fe6d mov rdx, qword [rsp + 0x20] | rdx = *((rsp + 0x20)); 0x0041fe72 mov eax, dword [rdx + 0x10] | eax = *((rdx + 0x10)); 0x0041fe75 mov rcx, qword [r12] | rcx = *(r12); 0x0041fe79 cmp ebp, eax | | if (ebp == eax) { 0x0041fe7b jne 0x41fea6 | 0x0041fe7d imul r13, r15 | r13 *= r15; 0x0041fe81 add rcx, r13 | rcx += r13; 0x0041fe84 mov rsi, qword [rsp + 8] | 0x0041fe89 imul rsi, r15 | rsi *= r15; 0x0041fe8d add rsi, qword [rdx] | rsi += *(rdx); 0x0041fe90 imul r14, r15 | r14 *= r15; 0x0041fe94 mov rdi, rcx | 0x0041fe97 mov rdx, r14 | 0x0041fe9a call 0x403b60 | rax = memcpy (rcx, *((rsp + 8)), r14); 0x0041fe9f mov dword [r12 + 0x10], ebp | *((r12 + 0x10)) = ebp; 0x0041fea4 jmp 0x41ff1c | | } else { 0x0041fea6 mov r8, qword [rdx] | 0x0041fea9 mov rdi, r12 | 0x0041feac mov rsi, rcx | 0x0041feaf mov rdx, r13 | 0x0041feb2 mov ecx, ebp | 0x0041feb4 mov r9, qword [rsp + 8] | 0x0041feb9 push r14 | 0x0041febb push rax | 0x0041febc call 0x41d590 | BloombergLP::bdlc::PackedIntArrayImp::replaceImp(void*,unsigned long,int,void*,unsigned long,int,unsigned long) (r12, rcx, r13, ebp, *(rdx), *((rsp + 8))); 0x0041fec1 add rsp, 0x10 | 0x0041fec5 mov dword [r12 + 0x10], ebp | *((r12 + 0x10)) = ebp; 0x0041feca jmp 0x41ff1c | goto label_11; | label_12: 0x0041fecc mov rax, qword [r12] | rax = *(r12); 0x0041fed0 movsxd rcx, dword [r12 + 0x10] | rcx = *((r12 + 0x10)); 0x0041fed5 imul r13, rcx | r13 *= rcx; 0x0041fed9 add r13, rax | r13 += rax; 0x0041fedc mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x0041fee1 imul rsi, rcx | rsi *= rcx; 0x0041fee5 add rsi, rax | rsi += rax; 0x0041fee8 imul r14, rcx | r14 *= rcx; 0x0041feec jmp 0x41ff0c | goto label_14; | label_13: 0x0041feee mov rcx, qword [r12] | rcx = *(r12); 0x0041fef2 movsxd rdx, dword [r12 + 0x10] | rdx = *((r12 + 0x10)); 0x0041fef7 imul r13, rdx | r13 *= rdx; 0x0041fefb add r13, rcx | r13 += rcx; 0x0041fefe imul rax, rdx | rax *= rdx; 0x0041ff02 add rax, rcx | rax += rcx; 0x0041ff05 imul r14, rdx | r14 *= rdx; 0x0041ff09 mov rsi, rax | | label_14: 0x0041ff0c mov rdi, r13 | 0x0041ff0f mov rdx, r14 | 0x0041ff12 call 0x403b60 | memcpy (r13, rax, r14); 0x0041ff17 mov qword [r12 + 8], rbx | *((r12 + 8)) = rbx; | } | label_11: 0x0041ff1c add rsp, 0x28 | 0x0041ff20 pop rbx | 0x0041ff21 pop r12 | 0x0041ff23 pop r13 | 0x0041ff25 pop r14 | 0x0041ff27 pop r15 | 0x0041ff29 pop rbp | 0x0041ff2a ret | return rax; | label_8: 0x0041ff2b mov rsi, rcx | rsi = rcx; 0x0041ff2e jmp 0x41fbef | | } while (1); | }