; assembly | /* r2dec pseudo code output */ | /* bdlde_quotedprintableencoder.t/assume @ 0x41ef60 */ | #include | ; (fcn) method.BloombergLP::bdlde::QuotedPrintableEncoder.convert_char__int__int__char_const__char_const__int_ () | int64_t method_BloombergLP::bdlde::QuotedPrintableEncoder_convert_char_int_int_char_const_char_const_int_ (int64_t arg_38h, size_t arg6, uint32_t arg5, char * arg4, uint32_t arg3, char * arg2, char * arg1) { | r9 = arg6; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlde::QuotedPrintableEncoder::convert(char*, int*, int*, char const*, char const*, int) */ 0x0041ef60 push rbp | 0x0041ef61 push r15 | 0x0041ef63 push r14 | 0x0041ef65 push r13 | 0x0041ef67 push r12 | 0x0041ef69 push rbx | 0x0041ef6a mov eax, dword [rdi + 0x1c] | eax = *((rdi + 0x1c)); 0x0041ef6d cmp eax, 2 | | if (eax != 2) { 0x0041ef70 je 0x41ef77 | 0x0041ef72 cmp eax, 0xffffffff | | if (eax != 0xffffffff) { 0x0041ef75 jne 0x41ef94 | goto label_3; | } | } 0x0041ef77 mov dword [rdi + 0x1c], 0xffffffff | *((rdi + 0x1c)) = 0xffffffff; 0x0041ef7e mov dword [rdx], 0 | *(rdx) = 0; 0x0041ef84 mov dword [rcx], 0 | *(rcx) = 0; 0x0041ef8a mov eax, 0xffffffff | eax = 0xffffffff; 0x0041ef8f jmp 0x41f4dc | goto label_4; | label_3: 0x0041ef94 mov r10d, dword [rsp + 0x38] | r10d = *((rsp + 0x38)); 0x0041ef99 test r10d, r10d | | if (r10d == 0) { 0x0041ef9c je 0x41f4c2 | goto label_5; | } 0x0041efa2 cmp r8, r9 | | if (r8 < r9) { 0x0041efa5 jae 0x41efae | 0x0041efa7 mov dword [rdi + 0x1c], 1 | *((rdi + 0x1c)) = 1; | } 0x0041efae mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x0041efb1 add r10d, eax | r10d += eax; 0x0041efb4 mov dword [rsp - 4], eax | *((rsp - 4)) = eax; 0x0041efb8 mov ebx, eax | ebx = eax; 0x0041efba mov r15, r8 | r15 = r8; 0x0041efbd jmp 0x41efcf | goto label_6; | label_0: 0x0041efc0 mov r14, rsi | r14 = rsi; | label_1: 0x0041efc3 mov rsi, r14 | 0x0041efc6 cmp ebx, r10d | | if (ebx == r10d) { 0x0041efc9 je 0x41f4af | goto label_7; | } | label_6: 0x0041efcf mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041efd2 cmp r15, r9 | | if (r15 < r9) { 0x0041efd5 jb 0x41f002 | goto label_8; | } 0x0041efd7 test eax, eax | | if (eax == 0) { 0x0041efd9 je 0x41f4b2 | goto label_9; | } 0x0041efdf nop | | do { 0x0041efe0 cmp ebx, r10d | | if (ebx == r10d) { 0x0041efe3 je 0x41f010 | goto label_10; | } 0x0041efe5 cdqe | rax = (int64_t) eax; 0x0041efe7 lea rbp, [rax - 1] | rbp = rax - 1; 0x0041efeb mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041efee mov al, byte [rdi + rax + 0x1f] | al = *((rdi + rax + 0x1f)); 0x0041eff2 mov byte [rsi], al | *(rsi) = al; 0x0041eff4 inc rsi | rsi++; 0x0041eff7 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041effa mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041effd inc ebx | ebx++; 0x0041efff mov dword [rdi + 8], ebx | *((rdi + 8)) = ebx; | label_8: 0x0041f002 test eax, eax | 0x0041f004 jne 0x41efe0 | | } while (eax != 0); 0x0041f006 xor eax, eax | eax = 0; 0x0041f008 mov r12d, ebx | r12d = ebx; 0x0041f00b jmp 0x41f013 | goto label_11; | label_10: 0x0041f010 mov r12d, r10d | r12d = r10d; | label_11: 0x0041f013 movzx r11d, byte [rdi + 0x30] | r11d = *((rdi + 0x30)); 0x0041f018 mov r14b, 1 | r14b = 1; 0x0041f01b test r11, r11 | | if (r11 != 0) { 0x0041f01e je 0x41f0a3 | 0x0041f024 cmp r15, r9 | | if (r15 < r9) { 0x0041f027 jae 0x41f0a0 | 0x0041f029 cmp r12d, r10d | | if (r12d == r10d) { 0x0041f02c je 0x41f0a0 | goto label_12; | } 0x0041f02e mov rax, qword [rdi + 0x10] | rax = *((rdi + 0x10)); 0x0041f032 movzx ebx, byte [r15] | ebx = *(r15); 0x0041f036 mov al, byte [rax + rbx] | al = *((rax + rbx)); 0x0041f039 cmp r11b, 0xd | | if (r11b != 0xd) { 0x0041f03d jne 0x41f0b1 | goto label_13; | } 0x0041f03f cmp al, 2 | | if (al != 2) { 0x0041f041 jne 0x41f0dd | goto label_14; | } 0x0041f047 cmp byte [rdi + 0x31], 0 | | if (*((rdi + 0x31)) == 0) { 0x0041f04b je 0x41f1c1 | goto label_15; | } 0x0041f051 mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f054 inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f057 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f05b lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f05e mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f061 mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f066 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f06a lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f06d mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f070 mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f075 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f079 lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f07c mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f07f mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f084 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f088 lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f08b mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f08e mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f093 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f096 lea eax, [rbx + 4] | eax = rbx + 4; 0x0041f099 jmp 0x41f1dc | goto label_16; | } | label_12: 0x0041f0a0 xor r14d, r14d | r14d = 0; | } 0x0041f0a3 cmp r15, r9 | | if (r15 < r9) { 0x0041f0a6 jb 0x41f1fc | goto label_17; | } 0x0041f0ac jmp 0x41efc0 | goto label_0; | label_13: 0x0041f0b1 dec al | al--; 0x0041f0b3 cmp al, 1 | | if (al <= 1) { 0x0041f0b5 ja 0x41f110 | 0x0041f0b7 mov eax, r11d | eax = r11d; 0x0041f0ba and eax, 0xf | eax &= 0xf; 0x0041f0bd mov al, byte [rax + 0x44fde5] | al = *((rax + str.0123456789ABCDEF)); 0x0041f0c3 mov byte [rdi + 0x20], al | *((rdi + 0x20)) = al; 0x0041f0c6 shr r11, 4 | r11 >>= 4; 0x0041f0ca mov al, byte [r11 + 0x44fde5] | al = *((r11 + str.0123456789ABCDEF)); 0x0041f0d1 mov dword [rdi + 0x28], 2 | *((rdi + 0x28)) = 2; 0x0041f0d8 mov byte [rdi + 0x21], al | *((rdi + 0x21)) = al; 0x0041f0db jmp 0x41f0ea | goto label_18; | label_14: 0x0041f0dd mov word [rdi + 0x20], 0x3044 | *((rdi + 0x20)) = 0x3044; 0x0041f0e3 mov dword [rdi + 0x28], 2 | *((rdi + 0x28)) = 2; | label_18: 0x0041f0ea sub r12d, dword [rdi + 0x2c] | r12d -= *((rdi + 0x2c)); 0x0041f0ee mov eax, dword [rdi + 4] | eax = *((rdi + 4)); 0x0041f0f1 add eax, 0xfffffffd | eax += 0xfffffffd; 0x0041f0f4 cmp r12d, eax | | if (r12d < eax) { 0x0041f0f7 jge 0x41f131 | 0x0041f0f9 mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f0fc mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f0ff mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041f102 inc ebx | ebx++; 0x0041f104 mov dword [rdi + 8], ebx | *((rdi + 8)) = ebx; 0x0041f107 mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; 0x0041f10b jmp 0x41f1e9 | | } else { 0x0041f110 sub r12d, dword [rdi + 0x2c] | r12d -= *((rdi + 0x2c)); 0x0041f114 mov eax, dword [rdi + 4] | eax = *((rdi + 4)); 0x0041f117 dec eax | eax--; 0x0041f119 cmp r12d, eax | | if (r12d < eax) { 0x0041f11c jge 0x41f172 | 0x0041f11e mov byte [rsi], r11b | *(rsi) = r11b; 0x0041f121 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f124 mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041f127 inc ebx | ebx++; 0x0041f129 mov dword [rdi + 8], ebx | *((rdi + 8)) = ebx; 0x0041f12c jmp 0x41f1b1 | | } else { 0x0041f131 mov dword [rdi + 0x28], 3 | *((rdi + 0x28)) = 3; 0x0041f138 mov byte [rdi + 0x22], 0x3d | *((rdi + 0x22)) = 0x3d; 0x0041f13c mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f13f inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f142 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f146 lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f149 mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f14c mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f151 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f155 lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f158 mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f15b mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f160 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f163 mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041f166 lea ebp, [rbx + 2] | ebp = rbx + 2; 0x0041f169 mov dword [rdi + 0x2c], ebp | *((rdi + 0x2c)) = ebp; 0x0041f16c mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; 0x0041f170 jmp 0x41f1e9 | goto label_19; | } 0x0041f172 mov dword [rdi + 0x28], 1 | *((rdi + 0x28)) = 1; 0x0041f179 mov byte [rdi + 0x20], r11b | *((rdi + 0x20)) = r11b; 0x0041f17d mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f180 inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f183 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f187 lea ebx, [rax + 1] | ebx = rax + 1; 0x0041f18a mov dword [rdi + 0x28], ebx | *((rdi + 0x28)) = ebx; 0x0041f18d mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f192 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f196 lea ebx, [rax + 1] | ebx = rax + 1; 0x0041f199 mov dword [rdi + 0x28], ebx | *((rdi + 0x28)) = ebx; 0x0041f19c mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f1a1 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f1a4 mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041f1a7 lea ebp, [rbx + 2] | ebp = rbx + 2; 0x0041f1aa mov dword [rdi + 0x2c], ebp | *((rdi + 0x2c)) = ebp; 0x0041f1ad mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; | } 0x0041f1b1 mov rbp, qword [rdi + 0x10] | rbp = *((rdi + 0x10)); 0x0041f1b5 cmp byte [rbp + r11], 3 | 0x0041f1bb sete byte [rdi + 0x31] | rdi + 0x31 = (*((rbp + r11)) == 3) ? 1 : 0; 0x0041f1bf jmp 0x41f1e9 | goto label_19; | label_15: 0x0041f1c1 mov byte [rsi], 0xd | *(rsi) = 0xd; 0x0041f1c4 inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f1c7 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f1cb lea ebp, [rax + 1] | ebp = rax + 1; 0x0041f1ce mov dword [rdi + 0x28], ebp | *((rdi + 0x28)) = ebp; 0x0041f1d1 mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f1d6 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f1d9 lea eax, [rbx + 1] | eax = rbx + 1; | label_16: 0x0041f1dc mov dword [rdi + 0x2c], eax | *((rdi + 0x2c)) = eax; 0x0041f1df mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; 0x0041f1e3 mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); 0x0041f1e6 inc r15 | r15++; | } | label_19: 0x0041f1e9 inc rsi | rsi++; 0x0041f1ec mov byte [rdi + 0x30], 0 | *((rdi + 0x30)) = 0; 0x0041f1f0 mov r12d, ebx | r12d = ebx; 0x0041f1f3 cmp r15, r9 | | if (r15 >= r9) { 0x0041f1f6 jae 0x41efc0 | goto label_0; | } | label_17: 0x0041f1fc cmp r12d, r10d | | if (r12d == r10d) { 0x0041f1ff je 0x41efc0 | goto label_0; | } 0x0041f205 test r14b, r14b | | if (r14b == 0) { 0x0041f208 je 0x41efc0 | goto label_0; | } 0x0041f20e test eax, eax | | if (eax != 0) { 0x0041f210 jne 0x41efc0 | goto label_0; | } 0x0041f216 nop word cs:[rax + rax] | | label_2: 0x0041f220 mov rbp, qword [rdi + 0x10] | rbp = *((rdi + 0x10)); 0x0041f224 movzx eax, byte [r15] | eax = *(r15); 0x0041f228 movzx r11d, al | r11d = (int32_t) al; 0x0041f22c movsx ebp, byte [rbp + r11] | ebp = *((rbp + r11)); 0x0041f232 xor r13d, r13d | r13d = 0; 0x0041f235 cmp ebp, 4 | | if (ebp <= 4) { 0x0041f238 ja 0x41f247 | | /* switch table (5 cases) at 0x44fca0 */ 0x0041f23a jmp qword [rbp*8 + 0x44fca0] | 0x0041f241 inc r15 | r15++; 0x0041f244 mov byte [rdi + 0x30], al | *((rdi + 0x30)) = al; | } 0x0041f247 mov r14, rsi | r14 = rsi; 0x0041f24a jmp 0x41f482 | goto label_20; 0x0041f24f sub r12d, dword [rdi + 0x2c] | r12d -= *((rdi + 0x2c)); 0x0041f253 mov ebx, dword [rdi + 4] | ebx = *((rdi + 4)); 0x0041f256 dec ebx | ebx--; 0x0041f258 cmp r12d, ebx | | if (r12d < ebx) { 0x0041f25b jge 0x41f330 | 0x0041f261 mov byte [rsi], al | *(rsi) = al; 0x0041f263 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f266 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f26a inc ebx | ebx++; 0x0041f26c mov dword [rdi + 8], ebx | *((rdi + 8)) = ebx; 0x0041f26f jmp 0x41f36f | goto label_21; 0x0041f274 mov eax, dword [rdi] | eax = *(rdi); 0x0041f276 dec eax | eax--; 0x0041f278 lea r14, [rsi + 1] | r14 = rsi + 1; 0x0041f27c cmp eax, 1 | | if (eax <= 1) { 0x0041f27f ja 0x41f38d | 0x0041f285 cmp byte [rdi + 0x31], 0 | | if (*((rdi + 0x31)) == 0) { 0x0041f289 je 0x41f456 | goto label_22; | } 0x0041f28f mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f292 inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f295 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f299 lea esi, [rax + 1] | esi = rax + 1; 0x0041f29c mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f29f mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f2a4 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f2a8 lea esi, [rax + 1] | esi = rax + 1; 0x0041f2ab mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f2ae mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f2b3 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f2b7 lea esi, [rax + 1] | esi = rax + 1; 0x0041f2ba mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f2bd mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f2c2 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f2c6 lea esi, [rax + 1] | esi = rax + 1; 0x0041f2c9 mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f2cc mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f2d1 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f2d4 lea eax, [rbx + 4] | eax = rbx + 4; 0x0041f2d7 jmp 0x41f471 | goto label_23; 0x0041f2dc lea r14, [rsi + 1] | r14 = rsi + 1; 0x0041f2e0 mov eax, r11d | eax = r11d; 0x0041f2e3 and eax, 0xf | eax &= 0xf; 0x0041f2e6 movzx eax, byte [rax + 0x44fde5] | eax = *((rax + str.0123456789ABCDEF)); 0x0041f2ed mov byte [rdi + 0x20], al | *((rdi + 0x20)) = al; 0x0041f2f0 shr r11, 4 | r11 >>= 4; 0x0041f2f4 movzx eax, byte [r11 + 0x44fde5] | eax = *((r11 + str.0123456789ABCDEF)); 0x0041f2fc mov dword [rdi + 0x28], 2 | *((rdi + 0x28)) = 2; 0x0041f303 mov byte [rdi + 0x21], al | *((rdi + 0x21)) = al; 0x0041f306 sub r12d, dword [rdi + 0x2c] | r12d -= *((rdi + 0x2c)); 0x0041f30a inc r15 | r15++; 0x0041f30d mov eax, dword [rdi + 4] | eax = *((rdi + 4)); 0x0041f310 add eax, 0xfffffffd | eax += 0xfffffffd; 0x0041f313 cmp r12d, eax | | if (r12d >= eax) { 0x0041f316 jge 0x41f3d3 | goto label_24; | } 0x0041f31c mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f31f mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f322 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f326 inc ebx | ebx++; 0x0041f328 mov dword [rdi + 8], ebx | *((rdi + 8)) = ebx; 0x0041f32b jmp 0x41f450 | | } else { 0x0041f330 mov dword [rdi + 0x28], 1 | *((rdi + 0x28)) = 1; 0x0041f337 mov byte [rdi + 0x20], al | *((rdi + 0x20)) = al; 0x0041f33a mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f33d inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f340 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f344 lea ebx, [rax + 1] | ebx = rax + 1; 0x0041f347 mov dword [rdi + 0x28], ebx | *((rdi + 0x28)) = ebx; 0x0041f34a mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f34f movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f353 lea ebx, [rax + 1] | ebx = rax + 1; 0x0041f356 mov dword [rdi + 0x28], ebx | *((rdi + 0x28)) = ebx; 0x0041f359 mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f35e mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f361 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f365 lea eax, [rbx + 2] | eax = rbx + 2; 0x0041f368 mov dword [rdi + 0x2c], eax | *((rdi + 0x2c)) = eax; 0x0041f36b mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; | label_21: 0x0041f36f inc rsi | rsi++; 0x0041f372 inc r15 | r15++; 0x0041f375 mov rax, qword [rdi + 0x10] | rax = *((rdi + 0x10)); 0x0041f379 cmp byte [rax + r11], 3 | 0x0041f37e sete byte [rdi + 0x31] | rdi + 0x31 = (*((rax + r11)) == 3) ? 1 : 0; 0x0041f382 mov r12d, ebx | r12d = ebx; 0x0041f385 mov r14, rsi | r14 = rsi; 0x0041f388 jmp 0x41f482 | goto label_20; | } 0x0041f38d mov eax, r11d | eax = r11d; 0x0041f390 and eax, 0xf | eax &= 0xf; 0x0041f393 movzx eax, byte [rax + 0x44fde5] | eax = *((rax + str.0123456789ABCDEF)); 0x0041f39a mov byte [rdi + 0x20], al | *((rdi + 0x20)) = al; 0x0041f39d shr r11, 4 | r11 >>= 4; 0x0041f3a1 movzx eax, byte [r11 + 0x44fde5] | eax = *((r11 + str.0123456789ABCDEF)); 0x0041f3a9 mov dword [rdi + 0x28], 2 | *((rdi + 0x28)) = 2; 0x0041f3b0 mov byte [rdi + 0x21], al | *((rdi + 0x21)) = al; 0x0041f3b3 sub r12d, dword [rdi + 0x2c] | r12d -= *((rdi + 0x2c)); 0x0041f3b7 mov eax, dword [rdi + 4] | eax = *((rdi + 4)); 0x0041f3ba add eax, 0xfffffffd | eax += 0xfffffffd; 0x0041f3bd cmp r12d, eax | | if (r12d < eax) { 0x0041f3c0 jge 0x41f411 | 0x0041f3c2 mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f3c5 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f3c8 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f3cc inc ebx | ebx++; 0x0041f3ce mov dword [rdi + 8], ebx | *((rdi + 8)) = ebx; 0x0041f3d1 jmp 0x41f44d | goto label_25; | label_24: 0x0041f3d3 mov dword [rdi + 0x28], 3 | *((rdi + 0x28)) = 3; 0x0041f3da mov byte [rdi + 0x22], 0x3d | *((rdi + 0x22)) = 0x3d; 0x0041f3de mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f3e1 inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f3e4 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f3e8 lea esi, [rax + 1] | esi = rax + 1; 0x0041f3eb mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f3ee mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f3f3 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f3f7 lea esi, [rax + 1] | esi = rax + 1; 0x0041f3fa mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f3fd mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f402 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f405 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f409 lea eax, [rbx + 2] | eax = rbx + 2; 0x0041f40c mov dword [rdi + 0x2c], eax | *((rdi + 0x2c)) = eax; 0x0041f40f jmp 0x41f450 | | } else { 0x0041f411 mov dword [rdi + 0x28], 3 | *((rdi + 0x28)) = 3; 0x0041f418 mov byte [rdi + 0x22], 0x3d | *((rdi + 0x22)) = 0x3d; 0x0041f41c mov byte [rsi], 0x3d | *(rsi) = 0x3d; 0x0041f41f inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f422 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f426 lea esi, [rax + 1] | esi = rax + 1; 0x0041f429 mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f42c mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f431 movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f435 lea esi, [rax + 1] | esi = rax + 1; 0x0041f438 mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f43b mov byte [rdi + rax + 0x20], 0xd | *((rdi + rax + 0x20)) = 0xd; 0x0041f440 mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f443 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f447 lea eax, [rbx + 2] | eax = rbx + 2; 0x0041f44a mov dword [rdi + 0x2c], eax | *((rdi + 0x2c)) = eax; | label_25: 0x0041f44d inc r15 | r15++; | } | } 0x0041f450 mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; 0x0041f454 jmp 0x41f47f | goto label_26; | label_22: 0x0041f456 mov byte [rsi], 0xd | *(rsi) = 0xd; 0x0041f459 inc dword [rdi + 8] | *((rdi + 8))++; 0x0041f45c movsxd rax, dword [rdi + 0x28] | rax = *((rdi + 0x28)); 0x0041f460 lea esi, [rax + 1] | esi = rax + 1; 0x0041f463 mov dword [rdi + 0x28], esi | *((rdi + 0x28)) = esi; 0x0041f466 mov byte [rdi + rax + 0x20], 0xa | *((rdi + rax + 0x20)) = 0xa; 0x0041f46b mov ebx, dword [rdi + 8] | ebx = *((rdi + 8)); 0x0041f46e lea eax, [rbx + 1] | eax = rbx + 1; | label_23: 0x0041f471 mov dword [rdi + 0x2c], eax | *((rdi + 0x2c)) = eax; 0x0041f474 mov byte [rdi + 0x31], 0 | *((rdi + 0x31)) = 0; 0x0041f478 mov r13d, dword [rdi + 0x28] | r13d = *((rdi + 0x28)); 0x0041f47c inc r15 | r15++; | label_26: 0x0041f47f mov r12d, ebx | r12d = ebx; | label_20: 0x0041f482 cmp r15, r9 | | if (r15 >= r9) { 0x0041f485 jae 0x41efc3 | goto label_1; | } 0x0041f48b cmp r12d, r10d | | if (r12d == r10d) { 0x0041f48e je 0x41efc3 | goto label_1; | } 0x0041f494 cmp byte [rdi + 0x30], 0 | | if (*((rdi + 0x30)) != 0) { 0x0041f498 jne 0x41efc3 | goto label_1; | } 0x0041f49e mov rsi, r14 | rsi = r14; 0x0041f4a1 test r13d, r13d | | if (r13d == 0) { 0x0041f4a4 je 0x41f220 | goto label_2; | } 0x0041f4aa jmp 0x41efc3 | goto label_1; | label_7: 0x0041f4af mov ebx, r10d | ebx = r10d; | label_9: 0x0041f4b2 mov eax, dword [rsp - 4] | eax = *((rsp - 4)); 0x0041f4b6 sub ebx, eax | ebx -= eax; 0x0041f4b8 mov dword [rdx], ebx | *(rdx) = ebx; 0x0041f4ba sub r15d, r8d | r15d -= r8d; 0x0041f4bd mov dword [rcx], r15d | *(rcx) = r15d; 0x0041f4c0 jmp 0x41f4ce | goto label_27; | label_5: 0x0041f4c2 mov dword [rdx], 0 | *(rdx) = 0; 0x0041f4c8 mov dword [rcx], 0 | *(rcx) = 0; | label_27: 0x0041f4ce mov eax, 3 | eax = 3; 0x0041f4d3 cmp byte [rdi + 0x30], 0 | | if (*((rdi + 0x30)) == 0) { 0x0041f4d7 jne 0x41f4dc | 0x0041f4d9 mov eax, dword [rdi + 0x28] | eax = *((rdi + 0x28)); | } | label_4: 0x0041f4dc pop rbx | 0x0041f4dd pop r12 | r12 = rbx; 0x0041f4df pop r13 | r13 = rbx; 0x0041f4e1 pop r14 | r14 = rbx; 0x0041f4e3 pop r15 | r15 = rbx; 0x0041f4e5 pop rbp | 0x0041f4e6 ret | return rax; | }