; assembly | /* r2dec pseudo code output */ | /* ball_asyncfileobserver.t/assume @ 0x459100 */ | #include | ; (fcn) method.BloombergLP::bdls::FdStreamBuf.seekoff_long_long__std::__1::ios_base::seekdir__unsigned_int_ () | int64_t method_BloombergLP::bdls::FdStreamBuf_seekoff_long_long_std::_1::ios_base::seekdir_unsigned_int_ (int64_t arg3, int64_t arg2, int64_t arg1, uint32_t arg9, uint32_t arg10) { | int64_t var_8h; | int64_t var_20h; | int64_t var_38h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | xmm2 = arg9; | xmm3 = arg10; | /* BloombergLP::bdls::FdStreamBuf::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) */ 0x00459100 push rbp | 0x00459101 push r15 | 0x00459103 push r14 | 0x00459105 push r13 | 0x00459107 push r12 | 0x00459109 push rbx | 0x0045910a sub rsp, 0x98 | 0x00459111 mov ebp, edx | 0x00459113 mov r14, rsi | r14 = rsi; 0x00459116 mov r15, rdi | r15 = rdi; 0x00459119 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x00459120 xor ebx, ebx | ebx = 0; 0x00459122 test edx, edx | | if (edx != 0) { 0x00459124 je 0x459136 | 0x00459126 cmp ebp, 2 | | if (ebp == 2) { 0x00459129 je 0x459136 | goto label_0; | } 0x0045912b cmp ebp, 1 | | if (ebp != 1) { 0x0045912e jne 0x45968a | goto label_1; | } 0x00459134 mov bl, 1 | bl = 1; | } | label_0: 0x00459136 cmp byte [r15 + 0x44], 0 | | if (*((r15 + 0x44)) == 0) { 0x0045913b je 0x45968a | goto label_1; | } 0x00459141 test r14, r14 | 0x00459144 setne cl | cl = (r14 != 0) ? 1 : 0; 0x00459147 mov edx, ebx | edx = ebx; 0x00459149 xor dl, 1 | dl ^= 1; 0x0045914c mov eax, dword [r15 + 0x50] | eax = *((r15 + 0x50)); 0x00459150 or dl, cl | dl |= cl; | if (dl == 0) { 0x00459152 jne 0x45918f | 0x00459154 cmp eax, 3 | | if (eax != 3) { 0x00459157 jne 0x4591ba | goto label_2; | } 0x00459159 mov rax, qword [r15 + 0x28] | rax = *((r15 + 0x28)); 0x0045915d mov rbp, qword [r15 + 0x30] | rbp = *((r15 + 0x30)); 0x00459161 test byte [r15 + 0x48], 4 | | if ((*((r15 + 0x48)) & 4) != 0) { 0x00459166 jne 0x459496 | goto label_3; | } 0x0045916c cmp rax, rbp | | if (rax == rbp) { 0x0045916f je 0x459338 | goto label_4; | } 0x00459175 mov rdx, rbp | rdx = rbp; 0x00459178 sub rdx, rax | rdx -= rax; 0x0045917b cmp rdx, 4 | | if (rdx >= 4) { 0x0045917f jae 0x45933f | goto label_5; | } 0x00459185 xor esi, esi | esi = 0; 0x00459187 mov rcx, rax | rcx = rax; 0x0045918a jmp 0x459480 | goto label_6; | } 0x0045918f lea r12, [r15 + 0x50] | r12 = r15 + 0x50; 0x00459193 cmp eax, 3 | | if (eax == 3) { 0x00459196 jne 0x4591b3 | 0x00459198 mov rax, qword [r15] | rax = *(r15); 0x0045919b mov rdi, r15 | rdi = r15; 0x0045919e mov esi, 0xffffffff | esi = 0xffffffff; 0x004591a3 call qword [rax + 0x68] | eax = uint64_t (*rax + 0x68)() (); 0x004591a6 cmp eax, 0xffffffff | | if (eax == 0xffffffff) { 0x004591a9 je 0x459263 | goto label_7; | } 0x004591af mov eax, dword [r12] | eax = *(r12); | } 0x004591b3 cmp eax, 1 | | if (eax == 1) { 0x004591b6 jne 0x4591c3 | 0x004591b8 jmp 0x4591e7 | goto label_8; | label_2: 0x004591ba lea r12, [r15 + 0x50] | r12 = r15 + 0x50; 0x004591be cmp eax, 1 | | if (eax == 1) { 0x004591c1 je 0x4591e7 | goto label_8; | } | } 0x004591c3 cmp eax, 2 | | if (eax == 2) { 0x004591c6 jne 0x459217 | 0x004591c8 movdqu xmm0, xmmword [r15 + 0x78] | __asm ("movdqu xmm0, xmmword [r15 + 0x78]"); 0x004591ce mov rax, qword [r15 + 0x88] | rax = *((r15 + 0x88)); 0x004591d5 movdqu xmmword [r15 + 0x10], xmm0 | __asm ("movdqu xmmword [r15 + 0x10], xmm0"); 0x004591db mov qword [r15 + 0x20], rax | *((r15 + 0x20)) = rax; 0x004591df mov dword [r15 + 0x50], 1 | *((r15 + 0x50)) = 1; | label_8: 0x004591e7 mov eax, 1 | eax = 1; 0x004591ec test bl, bl | | if (bl == 0) { 0x004591ee je 0x459229 | goto label_9; | } 0x004591f0 cmp qword [r15 + 0x90], 0 | | if (*((r15 + 0x90)) == 0) { 0x004591f8 je 0x459282 | goto label_10; | } 0x004591fe mov rbx, qword [r15 + 0x20] | rbx = *((r15 + 0x20)); 0x00459202 sub rbx, qword [r15 + 0x18] | rbx -= *((r15 + 0x18)); 0x00459206 test r14, r14 | | if (r14 == 0) { 0x00459209 je 0x45931d | goto label_11; | } 0x0045920f sub r14, rbx | r14 -= rbx; 0x00459212 jmp 0x459605 | goto label_12; | } 0x00459217 mov dword [r12], 0 | *(r12) = 0; 0x0045921f xor eax, eax | eax = 0; 0x00459221 test bl, bl | | if (bl != 0) { 0x00459223 jne 0x459605 | goto label_12; | } | label_9: 0x00459229 cmp ebp, 2 | | if (ebp != 2) { 0x0045922c je 0x4592b8 | 0x00459232 cmp ebp, 1 | | if (ebp == 1) { 0x00459235 je 0x459303 | goto label_13; | } 0x0045923b mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x00459242 test ebp, ebp | | if (ebp != 0) { 0x00459244 jne 0x45961d | goto label_14; | } 0x0045924a test r14, r14 | | if (r14 >= 0) { 0x0045924d jns 0x459303 | goto label_13; | } 0x00459253 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x0045925a mov eax, dword [r12] | eax = *(r12); 0x0045925e jmp 0x45961d | goto label_14; | label_7: 0x00459263 mov dword [r15 + 0x50], 4 | *((r15 + 0x50)) = 4; 0x0045926b pxor xmm0, xmm0 | xmm0 = 0; 0x0045926f movdqu xmmword [r15 + 0x28], xmm0 | __asm ("movdqu xmmword [r15 + 0x28], xmm0"); 0x00459275 mov qword [r15 + 0x38], 0 | *((r15 + 0x38)) = 0; 0x0045927d jmp 0x45968a | goto label_1; | label_10: 0x00459282 mov rax, qword [r15 + 0x18] | rax = *((r15 + 0x18)); 0x00459286 mov rbp, qword [r15 + 0x20] | rbp = *((r15 + 0x20)); 0x0045928a test byte [r15 + 0x48], 4 | | if ((*((r15 + 0x48)) & 4) != 0) { 0x0045928f jne 0x4595f6 | goto label_15; | } 0x00459295 cmp rax, rbp | | if (rax == rbp) { 0x00459298 je 0x459403 | goto label_16; | } 0x0045929e mov rdx, rbp | rdx = rbp; 0x004592a1 sub rdx, rax | rdx -= rax; 0x004592a4 cmp rdx, 4 | | if (rdx >= 4) { 0x004592a8 jae 0x4594b4 | goto label_17; | } 0x004592ae xor esi, esi | esi = 0; 0x004592b0 mov rcx, rax | rcx = rax; 0x004592b3 jmp 0x4595e0 | goto label_18; | } 0x004592b8 mov rbx, r14 | rbx = r14; 0x004592bb neg rbx | rbx = -rbx; 0x004592be mov esi, dword [r15 + 0x40] | esi = *((r15 + 0x40)); 0x004592c2 lea rdx, [rsp + 8] | rdx = rsp + 8; 0x004592c7 mov edi, 1 | edi = 1; 0x004592cc call 0x407540 | eax = fxstat (); 0x004592d1 test eax, eax | | if (eax == 0) { 0x004592d3 jne 0x4592f5 | 0x004592d5 mov eax, 0xf000 | eax = 0xf000; 0x004592da and eax, dword [rsp + 0x20] | eax &= *((rsp + 0x20)); 0x004592de cmp eax, 0x8000 | | if (eax == 0x8000) { 0x004592e3 jne 0x4592f5 | 0x004592e5 mov rcx, qword [rsp + 0x38] | rcx = *((rsp + 0x38)); 0x004592ea xor eax, eax | eax = 0; 0x004592ec test rcx, rcx | 0x004592ef cmovns rax, rcx | __asm ("cmovns rax, rcx"); 0x004592f3 jmp 0x4592f7 | | } | } else { 0x004592f5 xor eax, eax | eax = 0; | } 0x004592f7 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x004592fe cmp rax, rbx | | if (rax >= rbx) { 0x00459301 jl 0x459314 | | label_13: 0x00459303 mov edi, dword [r15 + 0x40] | 0x00459307 mov rsi, r14 | rsi = r14; 0x0045930a mov edx, ebp | edx = ebp; 0x0045930c call 0x459cd0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x00459311 mov r13, rax | r13 = rax; | } 0x00459314 mov eax, dword [r12] | eax = *(r12); 0x00459318 jmp 0x45961d | goto label_14; | label_11: 0x0045931d mov edi, dword [r15 + 0x40] | 0x00459321 xor esi, esi | esi = 0; 0x00459323 mov edx, 1 | edx = 1; 0x00459328 call 0x459cd0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x0045932d mov r13, rax | r13 = rax; 0x00459330 sub r13, rbx | r13 -= rbx; 0x00459333 jmp 0x45968a | goto label_1; | label_4: 0x00459338 xor esi, esi | esi = 0; 0x0045933a jmp 0x459493 | goto label_19; | label_5: 0x0045933f mov rcx, rdx | rcx = rdx; 0x00459342 and rcx, 0xfffffffffffffffc | rcx &= 0xfffffffffffffffc; 0x00459346 lea rsi, [rcx - 4] | rsi = rcx - 4; 0x0045934a mov r8, rsi | r8 = rsi; 0x0045934d shr r8, 2 | r8 >>= 2; 0x00459351 inc r8 | r8++; 0x00459354 test rsi, rsi | | if (rsi == 0) { 0x00459357 je 0x45940a | goto label_20; | } 0x0045935d mov rdi, r8 | rdi = r8; 0x00459360 and rdi, 0xfffffffffffffffe | rdi &= 0xfffffffffffffffe; 0x00459364 neg rdi | rdi = -rdi; 0x00459367 pxor xmm0, xmm0 | xmm0 = 0; 0x0045936b xor esi, esi | esi = 0; 0x0045936d movdqa xmm2, xmmword [rip + 0x421eb] | __asm ("movdqa xmm2, xmmword [0x0049b560]"); 0x00459375 movdqa xmm3, xmmword [rip + 0x421f3] | __asm ("movdqa xmm3, xmmword [0x0049b570]"); 0x0045937d pxor xmm1, xmm1 | xmm1 = 0; 0x00459381 nop word cs:[rax + rax] | 0x0045938b nop dword [rax + rax] | | do { 0x00459390 movzx ebx, word [rax + rsi] | ebx = *((rax + rsi)); 0x00459394 movd xmm4, ebx | xmm4 = ebx; 0x00459398 movzx ebx, word [rax + rsi + 2] | ebx = *((rax + rsi + 2)); 0x0045939d movd xmm5, ebx | xmm5 = ebx; 0x004593a1 pcmpeqb xmm4, xmm2 | __asm ("pcmpeqb xmm4, xmm2"); 0x004593a5 pmovzxbq xmm4, xmm4 | __asm ("pmovzxbq xmm4, xmm4"); 0x004593aa pand xmm4, xmm3 | xmm4 &= xmm3; 0x004593ae paddq xmm4, xmm0 | __asm ("paddq xmm4, xmm0"); 0x004593b2 pcmpeqb xmm5, xmm2 | __asm ("pcmpeqb xmm5, xmm2"); 0x004593b6 pmovzxbq xmm5, xmm5 | __asm ("pmovzxbq xmm5, xmm5"); 0x004593bb pand xmm5, xmm3 | xmm5 &= xmm3; 0x004593bf paddq xmm5, xmm1 | __asm ("paddq xmm5, xmm1"); 0x004593c3 movzx ebx, word [rax + rsi + 4] | ebx = *((rax + rsi + 4)); 0x004593c8 movd xmm0, ebx | xmm0 = ebx; 0x004593cc movzx ebx, word [rax + rsi + 6] | ebx = *((rax + rsi + 6)); 0x004593d1 movd xmm1, ebx | xmm1 = ebx; 0x004593d5 pcmpeqb xmm0, xmm2 | __asm ("pcmpeqb xmm0, xmm2"); 0x004593d9 pmovzxbq xmm0, xmm0 | __asm ("pmovzxbq xmm0, xmm0"); 0x004593de pand xmm0, xmm3 | xmm0 &= xmm3; 0x004593e2 paddq xmm0, xmm4 | __asm ("paddq xmm0, xmm4"); 0x004593e6 pcmpeqb xmm1, xmm2 | __asm ("pcmpeqb xmm1, xmm2"); 0x004593ea pmovzxbq xmm1, xmm1 | __asm ("pmovzxbq xmm1, xmm1"); 0x004593ef pand xmm1, xmm3 | xmm1 &= xmm3; 0x004593f3 paddq xmm1, xmm5 | __asm ("paddq xmm1, xmm5"); 0x004593f7 add rsi, 8 | rsi += 8; 0x004593fb add rdi, 2 | rdi += 2; 0x004593ff jne 0x459390 | | } while (rdi != 0); 0x00459401 jmp 0x459414 | goto label_21; | label_16: 0x00459403 xor esi, esi | esi = 0; 0x00459405 jmp 0x4595f3 | goto label_22; | label_20: 0x0045940a pxor xmm0, xmm0 | xmm0 = 0; 0x0045940e xor esi, esi | esi = 0; 0x00459410 pxor xmm1, xmm1 | xmm1 = 0; | label_21: 0x00459414 test r8b, 1 | | if ((r8b & 1) != 0) { 0x00459418 je 0x45945d | 0x0045941a movzx edi, word [rax + rsi + 2] | edi = *((rax + rsi + 2)); 0x0045941f movd xmm2, edi | xmm2 = edi; 0x00459423 movdqa xmm3, xmmword [rip + 0x42135] | __asm ("movdqa xmm3, xmmword [0x0049b560]"); 0x0045942b pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x0045942f pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459434 movdqa xmm4, xmmword [rip + 0x42134] | __asm ("movdqa xmm4, xmmword [0x0049b570]"); 0x0045943c pand xmm2, xmm4 | xmm2 &= xmm4; 0x00459440 paddq xmm1, xmm2 | __asm ("paddq xmm1, xmm2"); 0x00459444 movzx esi, word [rax + rsi] | esi = *((rax + rsi)); 0x00459448 movd xmm2, esi | xmm2 = esi; 0x0045944c pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x00459450 pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459455 pand xmm2, xmm4 | xmm2 &= xmm4; 0x00459459 paddq xmm0, xmm2 | __asm ("paddq xmm0, xmm2"); | } 0x0045945d paddq xmm0, xmm1 | __asm ("paddq xmm0, xmm1"); 0x00459461 pshufd xmm1, xmm0, 0xee | __asm ("pshufd xmm1, xmm0, 0xee"); 0x00459466 paddq xmm1, xmm0 | __asm ("paddq xmm1, xmm0"); 0x0045946a movq rsi, xmm1 | rsi = xmm1; 0x0045946f cmp rdx, rcx | | if (rdx == rcx) { 0x00459472 je 0x459493 | goto label_19; | } 0x00459474 add rcx, rax | rcx += rax; 0x00459477 nop word [rax + rax] | | do { | label_6: 0x00459480 xor edx, edx | edx = 0; 0x00459482 cmp byte [rcx], 0xa | 0x00459485 sete dl | dl = (*(rcx) == 0xa) ? 1 : 0; 0x00459488 add rsi, rdx | rsi += rdx; 0x0045948b inc rcx | rcx++; 0x0045948e cmp rbp, rcx | 0x00459491 jne 0x459480 | | } while (rbp != rcx); | label_19: 0x00459493 add rbp, rsi | rbp += rsi; | label_3: 0x00459496 sub rbp, rax | rbp -= rax; 0x00459499 mov edi, dword [r15 + 0x40] | 0x0045949d xor esi, esi | esi = 0; 0x0045949f mov edx, 1 | edx = 1; 0x004594a4 call 0x459cd0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x004594a9 mov r13, rax | r13 = rax; 0x004594ac add r13, rbp | r13 += rbp; 0x004594af jmp 0x45968a | goto label_1; | label_17: 0x004594b4 mov rcx, rdx | rcx = rdx; 0x004594b7 and rcx, 0xfffffffffffffffc | rcx &= 0xfffffffffffffffc; 0x004594bb lea rsi, [rcx - 4] | rsi = rcx - 4; 0x004594bf mov r8, rsi | r8 = rsi; 0x004594c2 shr r8, 2 | r8 >>= 2; 0x004594c6 inc r8 | r8++; 0x004594c9 test rsi, rsi | | if (rsi == 0) { 0x004594cc je 0x459569 | goto label_23; | } 0x004594d2 mov rdi, r8 | rdi = r8; 0x004594d5 and rdi, 0xfffffffffffffffe | rdi &= 0xfffffffffffffffe; 0x004594d9 neg rdi | rdi = -rdi; 0x004594dc pxor xmm0, xmm0 | xmm0 = 0; 0x004594e0 xor esi, esi | esi = 0; 0x004594e2 movdqa xmm2, xmmword [rip + 0x42076] | __asm ("movdqa xmm2, xmmword [0x0049b560]"); 0x004594ea movdqa xmm3, xmmword [rip + 0x4207e] | __asm ("movdqa xmm3, xmmword [0x0049b570]"); 0x004594f2 pxor xmm1, xmm1 | xmm1 = 0; | do { 0x004594f6 movzx ebx, word [rax + rsi] | ebx = *((rax + rsi)); 0x004594fa movd xmm4, ebx | xmm4 = ebx; 0x004594fe movzx ebx, word [rax + rsi + 2] | ebx = *((rax + rsi + 2)); 0x00459503 movd xmm5, ebx | xmm5 = ebx; 0x00459507 pcmpeqb xmm4, xmm2 | __asm ("pcmpeqb xmm4, xmm2"); 0x0045950b pmovzxbq xmm4, xmm4 | __asm ("pmovzxbq xmm4, xmm4"); 0x00459510 pand xmm4, xmm3 | xmm4 &= xmm3; 0x00459514 paddq xmm4, xmm0 | __asm ("paddq xmm4, xmm0"); 0x00459518 pcmpeqb xmm5, xmm2 | __asm ("pcmpeqb xmm5, xmm2"); 0x0045951c pmovzxbq xmm5, xmm5 | __asm ("pmovzxbq xmm5, xmm5"); 0x00459521 pand xmm5, xmm3 | xmm5 &= xmm3; 0x00459525 paddq xmm5, xmm1 | __asm ("paddq xmm5, xmm1"); 0x00459529 movzx ebx, word [rax + rsi + 4] | ebx = *((rax + rsi + 4)); 0x0045952e movd xmm0, ebx | xmm0 = ebx; 0x00459532 movzx ebx, word [rax + rsi + 6] | ebx = *((rax + rsi + 6)); 0x00459537 movd xmm1, ebx | xmm1 = ebx; 0x0045953b pcmpeqb xmm0, xmm2 | __asm ("pcmpeqb xmm0, xmm2"); 0x0045953f pmovzxbq xmm0, xmm0 | __asm ("pmovzxbq xmm0, xmm0"); 0x00459544 pand xmm0, xmm3 | xmm0 &= xmm3; 0x00459548 paddq xmm0, xmm4 | __asm ("paddq xmm0, xmm4"); 0x0045954c pcmpeqb xmm1, xmm2 | __asm ("pcmpeqb xmm1, xmm2"); 0x00459550 pmovzxbq xmm1, xmm1 | __asm ("pmovzxbq xmm1, xmm1"); 0x00459555 pand xmm1, xmm3 | xmm1 &= xmm3; 0x00459559 paddq xmm1, xmm5 | __asm ("paddq xmm1, xmm5"); 0x0045955d add rsi, 8 | rsi += 8; 0x00459561 add rdi, 2 | rdi += 2; 0x00459565 jne 0x4594f6 | | } while (rdi != 0); 0x00459567 jmp 0x459573 | goto label_24; | label_23: 0x00459569 pxor xmm0, xmm0 | xmm0 = 0; 0x0045956d xor esi, esi | esi = 0; 0x0045956f pxor xmm1, xmm1 | xmm1 = 0; | label_24: 0x00459573 test r8b, 1 | | if ((r8b & 1) != 0) { 0x00459577 je 0x4595bc | 0x00459579 movzx edi, word [rax + rsi + 2] | edi = *((rax + rsi + 2)); 0x0045957e movd xmm2, edi | xmm2 = edi; 0x00459582 movdqa xmm3, xmmword [rip + 0x41fd6] | __asm ("movdqa xmm3, xmmword [0x0049b560]"); 0x0045958a pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x0045958e pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459593 movdqa xmm4, xmmword [rip + 0x41fd5] | __asm ("movdqa xmm4, xmmword [0x0049b570]"); 0x0045959b pand xmm2, xmm4 | xmm2 &= xmm4; 0x0045959f paddq xmm1, xmm2 | __asm ("paddq xmm1, xmm2"); 0x004595a3 movzx esi, word [rax + rsi] | esi = *((rax + rsi)); 0x004595a7 movd xmm2, esi | xmm2 = esi; 0x004595ab pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x004595af pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x004595b4 pand xmm2, xmm4 | xmm2 &= xmm4; 0x004595b8 paddq xmm0, xmm2 | __asm ("paddq xmm0, xmm2"); | } 0x004595bc paddq xmm0, xmm1 | __asm ("paddq xmm0, xmm1"); 0x004595c0 pshufd xmm1, xmm0, 0xee | __asm ("pshufd xmm1, xmm0, 0xee"); 0x004595c5 paddq xmm1, xmm0 | __asm ("paddq xmm1, xmm0"); 0x004595c9 movq rsi, xmm1 | rsi = xmm1; 0x004595ce cmp rdx, rcx | | if (rdx == rcx) { 0x004595d1 je 0x4595f3 | goto label_22; | } 0x004595d3 add rcx, rax | rcx += rax; 0x004595d6 nop word cs:[rax + rax] | | do { | label_18: 0x004595e0 xor edx, edx | edx = 0; 0x004595e2 cmp byte [rcx], 0xa | 0x004595e5 sete dl | dl = (*(rcx) == 0xa) ? 1 : 0; 0x004595e8 add rsi, rdx | rsi += rdx; 0x004595eb inc rcx | rcx++; 0x004595ee cmp rbp, rcx | 0x004595f1 jne 0x4595e0 | | } while (rbp != rcx); | label_22: 0x004595f3 add rbp, rsi | rbp += rsi; | label_15: 0x004595f6 sub rbp, rax | rbp -= rax; 0x004595f9 test r14, r14 | | if (r14 == 0) { 0x004595fc je 0x4596a1 | goto label_25; | } 0x00459602 sub r14, rbp | r14 -= rbp; | label_12: 0x00459605 mov edi, dword [r15 + 0x40] | 0x00459609 mov rsi, r14 | rsi = r14; 0x0045960c mov edx, 1 | edx = 1; 0x00459611 call 0x459cd0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x00459616 mov r13, rax | r13 = rax; 0x00459619 mov eax, dword [r15 + 0x50] | eax = *((r15 + 0x50)); | label_14: 0x0045961d lea ecx, [rax - 1] | ecx = rax - 1; 0x00459620 cmp ecx, 1 | | if (ecx <= 1) { 0x00459623 ja 0x45966c | 0x00459625 cmp eax, 2 | | if (eax == 2) { 0x00459628 jne 0x459649 | 0x0045962a movdqu xmm0, xmmword [r15 + 0x78] | __asm ("movdqu xmm0, xmmword [r15 + 0x78]"); 0x00459630 mov rax, qword [r15 + 0x88] | rax = *((r15 + 0x88)); 0x00459637 movdqu xmmword [r15 + 0x10], xmm0 | __asm ("movdqu xmmword [r15 + 0x10], xmm0"); 0x0045963d mov qword [r15 + 0x20], rax | *((r15 + 0x20)) = rax; 0x00459641 mov dword [r15 + 0x50], 1 | *((r15 + 0x50)) = 1; | } 0x00459649 mov rdi, qword [r15 + 0x90] | rdi = *((r15 + 0x90)); 0x00459650 test rdi, rdi | | if (rdi != 0) { 0x00459653 je 0x459661 | 0x00459655 movsxd rsi, dword [r15 + 0x98] | rsi = *((r15 + 0x98)); 0x0045965c call 0x459fe0 | eax = BloombergLP::bdls::FilesystemUtil::unmap(void*,unsigned long) (rdi, rsi, rdx, rcx, r8, r9); | } 0x00459661 mov qword [r15 + 0x90], 0 | *((r15 + 0x90)) = 0; | } 0x0045966c mov dword [r15 + 0x50], 0 | *((r15 + 0x50)) = 0; 0x00459674 pxor xmm0, xmm0 | xmm0 = 0; 0x00459678 movdqu xmmword [r15 + 0x10], xmm0 | __asm ("movdqu xmmword [r15 + 0x10], xmm0"); 0x0045967e movdqu xmmword [r15 + 0x20], xmm0 | __asm ("movdqu xmmword [r15 + 0x20], xmm0"); 0x00459684 movdqu xmmword [r15 + 0x30], xmm0 | __asm ("movdqu xmmword [r15 + 0x30], xmm0"); | do { | label_1: 0x0045968a xor eax, eax | eax = 0; 0x0045968c mov rdx, r13 | rdx = r13; 0x0045968f add rsp, 0x98 | 0x00459696 pop rbx | 0x00459697 pop r12 | 0x00459699 pop r13 | 0x0045969b pop r14 | 0x0045969d pop r15 | 0x0045969f pop rbp | 0x004596a0 ret | return rax; | label_25: 0x004596a1 mov edi, dword [r15 + 0x40] | 0x004596a5 xor esi, esi | esi = 0; 0x004596a7 mov edx, 1 | edx = 1; 0x004596ac call 0x459cd0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x004596b1 mov r13, rax | r13 = rax; 0x004596b4 sub r13, rbp | r13 -= rbp; 0x004596b7 jmp 0x45968a | | } while (1); | }