; assembly | /* r2dec pseudo code output */ | /* ball_asyncfileobserver.t/none @ 0x459620 */ | #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) */ 0x00459620 push rbp | 0x00459621 push r15 | 0x00459623 push r14 | 0x00459625 push r13 | 0x00459627 push r12 | 0x00459629 push rbx | 0x0045962a sub rsp, 0x98 | 0x00459631 mov ebp, edx | 0x00459633 mov r14, rsi | r14 = rsi; 0x00459636 mov r15, rdi | r15 = rdi; 0x00459639 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x00459640 xor ebx, ebx | ebx = 0; 0x00459642 test edx, edx | | if (edx != 0) { 0x00459644 je 0x459656 | 0x00459646 cmp ebp, 2 | | if (ebp == 2) { 0x00459649 je 0x459656 | goto label_1; | } 0x0045964b cmp ebp, 1 | | if (ebp != 1) { 0x0045964e jne 0x459b7a | goto label_2; | } 0x00459654 mov bl, 1 | bl = 1; | } | label_1: 0x00459656 cmp byte [r15 + 0x44], 0 | | if (*((r15 + 0x44)) == 0) { 0x0045965b je 0x459b7a | goto label_2; | } 0x00459661 test r14, r14 | 0x00459664 setne cl | cl = (r14 != 0) ? 1 : 0; 0x00459667 mov edx, ebx | edx = ebx; 0x00459669 xor dl, 1 | dl ^= 1; 0x0045966c mov eax, dword [r15 + 0x50] | eax = *((r15 + 0x50)); 0x00459670 or dl, cl | dl |= cl; | if (dl == 0) { 0x00459672 jne 0x4596b3 | 0x00459674 cmp eax, 3 | | if (eax != 3) { 0x00459677 jne 0x459706 | goto label_3; | } 0x0045967d mov rax, qword [r15 + 0x28] | rax = *((r15 + 0x28)); 0x00459681 mov rbp, qword [r15 + 0x30] | rbp = *((r15 + 0x30)); 0x00459685 test byte [r15 + 0x48], 4 | | if ((*((r15 + 0x48)) & 4) != 0) { 0x0045968a jne 0x459986 | goto label_4; | } 0x00459690 cmp rax, rbp | | if (rax == rbp) { 0x00459693 je 0x459837 | goto label_5; | } 0x00459699 mov rdx, rbp | rdx = rbp; 0x0045969c sub rdx, rax | rdx -= rax; 0x0045969f cmp rdx, 4 | | if (rdx >= 4) { 0x004596a3 jae 0x45983e | goto label_6; | } 0x004596a9 xor esi, esi | esi = 0; 0x004596ab mov rcx, rax | rcx = rax; 0x004596ae jmp 0x459970 | goto label_7; | } 0x004596b3 lea r12, [r15 + 0x50] | r12 = r15 + 0x50; 0x004596b7 cmp eax, 3 | | if (eax == 3) { 0x004596ba jne 0x4596d7 | 0x004596bc mov rax, qword [r15] | rax = *(r15); 0x004596bf mov rdi, r15 | rdi = r15; 0x004596c2 mov esi, 0xffffffff | esi = 0xffffffff; 0x004596c7 call qword [rax + 0x68] | eax = uint64_t (*rax + 0x68)() (); 0x004596ca cmp eax, 0xffffffff | | if (eax == 0xffffffff) { 0x004596cd je 0x45977a | goto label_8; | } 0x004596d3 mov eax, dword [r12] | eax = *(r12); | } 0x004596d7 cmp eax, 1 | | if (eax == 1) { 0x004596da je 0x45970f | goto label_9; | } | do { 0x004596dc cmp eax, 2 | | if (eax != 2) { 0x004596df jne 0x459736 | goto label_10; | } 0x004596e1 movdqu xmm0, xmmword [r15 + 0x78] | __asm ("movdqu xmm0, xmmword [r15 + 0x78]"); 0x004596e7 mov rax, qword [r15 + 0x88] | rax = *((r15 + 0x88)); 0x004596ee movdqu xmmword [r15 + 0x10], xmm0 | __asm ("movdqu xmmword [r15 + 0x10], xmm0"); 0x004596f4 mov qword [r15 + 0x20], rax | *((r15 + 0x20)) = rax; 0x004596f8 mov dword [r15 + 0x50], 1 | *((r15 + 0x50)) = 1; 0x00459700 test bl, bl | | if (bl == 0) { 0x00459702 je 0x459746 | goto label_11; | } 0x00459704 jmp 0x459713 | goto label_12; | label_3: 0x00459706 lea r12, [r15 + 0x50] | r12 = r15 + 0x50; 0x0045970a cmp eax, 1 | 0x0045970d jne 0x4596dc | | } while (eax != 1); | label_9: 0x0045970f test bl, bl | | if (bl != 0) { 0x00459711 je 0x459746 | | label_12: 0x00459713 cmp qword [r15 + 0x90], 0 | | if (*((r15 + 0x90)) == 0) { 0x0045971b je 0x459799 | goto label_13; | } 0x0045971d mov rbx, qword [r15 + 0x20] | rbx = *((r15 + 0x20)); 0x00459721 sub rbx, qword [r15 + 0x18] | rbx -= *((r15 + 0x18)); 0x00459725 test r14, r14 | | if (r14 == 0) { 0x00459728 je 0x45981c | goto label_14; | } 0x0045972e sub r14, rbx | r14 -= rbx; 0x00459731 jmp 0x459af5 | goto label_15; | label_10: 0x00459736 mov dword [r12], 0 | *(r12) = 0; 0x0045973e test bl, bl | | if (bl != 0) { 0x00459740 jne 0x459af5 | goto label_15; | } | } | label_11: 0x00459746 mov r13, 0xffffffffffffffff | r13 = 0xffffffffffffffff; 0x0045974d cmp ebp, 2 | | if (ebp == 2) { 0x00459750 je 0x4597cf | goto label_16; | } 0x00459752 cmp ebp, 1 | | if (ebp == 1) { 0x00459755 je 0x459760 | goto label_17; | } 0x00459757 test ebp, ebp | | if (ebp != 0) { 0x00459759 jne 0x459771 | goto label_0; | } 0x0045975b test r14, r14 | 0x0045975e js 0x459771 | | while (rax >= rbx) { | label_17: 0x00459760 mov edi, dword [r15 + 0x40] | 0x00459764 mov rsi, r14 | rsi = r14; 0x00459767 mov edx, ebp | edx = ebp; 0x00459769 call 0x45a1b0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x0045976e mov r13, rax | r13 = rax; | label_0: 0x00459771 mov eax, dword [r12] | eax = *(r12); 0x00459775 jmp 0x459b0d | goto label_18; | label_8: 0x0045977a mov dword [r15 + 0x50], 4 | *((r15 + 0x50)) = 4; 0x00459782 pxor xmm0, xmm0 | xmm0 = 0; 0x00459786 movdqu xmmword [r15 + 0x28], xmm0 | __asm ("movdqu xmmword [r15 + 0x28], xmm0"); 0x0045978c mov qword [r15 + 0x38], 0 | *((r15 + 0x38)) = 0; 0x00459794 jmp 0x459b7a | goto label_2; | label_13: 0x00459799 mov rax, qword [r15 + 0x18] | rax = *((r15 + 0x18)); 0x0045979d mov rbp, qword [r15 + 0x20] | rbp = *((r15 + 0x20)); 0x004597a1 test byte [r15 + 0x48], 4 | | if ((*((r15 + 0x48)) & 4) != 0) { 0x004597a6 jne 0x459ae6 | goto label_19; | } 0x004597ac cmp rax, rbp | | if (rax == rbp) { 0x004597af je 0x4598f3 | goto label_20; | } 0x004597b5 mov rdx, rbp | rdx = rbp; 0x004597b8 sub rdx, rax | rdx -= rax; 0x004597bb cmp rdx, 4 | | if (rdx >= 4) { 0x004597bf jae 0x4599a4 | goto label_21; | } 0x004597c5 xor esi, esi | esi = 0; 0x004597c7 mov rcx, rax | rcx = rax; 0x004597ca jmp 0x459ad0 | goto label_22; | label_16: 0x004597cf mov rbx, r14 | rbx = r14; 0x004597d2 neg rbx | rbx = -rbx; 0x004597d5 mov esi, dword [r15 + 0x40] | esi = *((r15 + 0x40)); 0x004597d9 lea rdx, [rsp + 8] | rdx = rsp + 8; 0x004597de mov edi, 1 | edi = 1; 0x004597e3 call 0x407540 | eax = fxstat (); 0x004597e8 test eax, eax | | if (eax == 0) { 0x004597ea jne 0x45980c | 0x004597ec mov eax, 0xf000 | eax = 0xf000; 0x004597f1 and eax, dword [rsp + 0x20] | eax &= *((rsp + 0x20)); 0x004597f5 cmp eax, 0x8000 | | if (eax == 0x8000) { 0x004597fa jne 0x45980c | 0x004597fc mov rcx, qword [rsp + 0x38] | rcx = *((rsp + 0x38)); 0x00459801 xor eax, eax | eax = 0; 0x00459803 test rcx, rcx | 0x00459806 cmovns rax, rcx | __asm ("cmovns rax, rcx"); 0x0045980a jmp 0x45980e | | } | } else { 0x0045980c xor eax, eax | eax = 0; | } 0x0045980e cmp rax, rbx | 0x00459811 jge 0x459760 | | } 0x00459817 jmp 0x459771 | goto label_0; | label_14: 0x0045981c mov edi, dword [r15 + 0x40] | 0x00459820 xor esi, esi | esi = 0; 0x00459822 mov edx, 1 | edx = 1; 0x00459827 call 0x45a1b0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x0045982c mov r13, rax | r13 = rax; 0x0045982f sub r13, rbx | r13 -= rbx; 0x00459832 jmp 0x459b7a | goto label_2; | label_5: 0x00459837 xor esi, esi | esi = 0; 0x00459839 jmp 0x459983 | goto label_23; | label_6: 0x0045983e mov rcx, rdx | rcx = rdx; 0x00459841 and rcx, 0xfffffffffffffffc | rcx &= 0xfffffffffffffffc; 0x00459845 lea rsi, [rcx - 4] | rsi = rcx - 4; 0x00459849 mov r8, rsi | r8 = rsi; 0x0045984c shr r8, 2 | r8 >>= 2; 0x00459850 inc r8 | r8++; 0x00459853 test rsi, rsi | | if (rsi == 0) { 0x00459856 je 0x4598fa | goto label_24; | } 0x0045985c mov rdi, r8 | rdi = r8; 0x0045985f and rdi, 0xfffffffffffffffe | rdi &= 0xfffffffffffffffe; 0x00459863 neg rdi | rdi = -rdi; 0x00459866 pxor xmm0, xmm0 | xmm0 = 0; 0x0045986a xor esi, esi | esi = 0; 0x0045986c movdqa xmm2, xmmword [rip + 0x4287c] | __asm ("movdqa xmm2, xmmword [0x0049c0f0]"); 0x00459874 movdqa xmm3, xmmword [rip + 0x42884] | __asm ("movdqa xmm3, xmmword [0x0049c100]"); 0x0045987c pxor xmm1, xmm1 | xmm1 = 0; | do { 0x00459880 movzx ebx, word [rax + rsi] | ebx = *((rax + rsi)); 0x00459884 movd xmm4, ebx | xmm4 = ebx; 0x00459888 movzx ebx, word [rax + rsi + 2] | ebx = *((rax + rsi + 2)); 0x0045988d movd xmm5, ebx | xmm5 = ebx; 0x00459891 pcmpeqb xmm4, xmm2 | __asm ("pcmpeqb xmm4, xmm2"); 0x00459895 pmovzxbq xmm4, xmm4 | __asm ("pmovzxbq xmm4, xmm4"); 0x0045989a pand xmm4, xmm3 | xmm4 &= xmm3; 0x0045989e paddq xmm4, xmm0 | __asm ("paddq xmm4, xmm0"); 0x004598a2 pcmpeqb xmm5, xmm2 | __asm ("pcmpeqb xmm5, xmm2"); 0x004598a6 pmovzxbq xmm5, xmm5 | __asm ("pmovzxbq xmm5, xmm5"); 0x004598ab pand xmm5, xmm3 | xmm5 &= xmm3; 0x004598af paddq xmm5, xmm1 | __asm ("paddq xmm5, xmm1"); 0x004598b3 movzx ebx, word [rax + rsi + 4] | ebx = *((rax + rsi + 4)); 0x004598b8 movd xmm0, ebx | xmm0 = ebx; 0x004598bc movzx ebx, word [rax + rsi + 6] | ebx = *((rax + rsi + 6)); 0x004598c1 movd xmm1, ebx | xmm1 = ebx; 0x004598c5 pcmpeqb xmm0, xmm2 | __asm ("pcmpeqb xmm0, xmm2"); 0x004598c9 pmovzxbq xmm0, xmm0 | __asm ("pmovzxbq xmm0, xmm0"); 0x004598ce pand xmm0, xmm3 | xmm0 &= xmm3; 0x004598d2 paddq xmm0, xmm4 | __asm ("paddq xmm0, xmm4"); 0x004598d6 pcmpeqb xmm1, xmm2 | __asm ("pcmpeqb xmm1, xmm2"); 0x004598da pmovzxbq xmm1, xmm1 | __asm ("pmovzxbq xmm1, xmm1"); 0x004598df pand xmm1, xmm3 | xmm1 &= xmm3; 0x004598e3 paddq xmm1, xmm5 | __asm ("paddq xmm1, xmm5"); 0x004598e7 add rsi, 8 | rsi += 8; 0x004598eb add rdi, 2 | rdi += 2; 0x004598ef jne 0x459880 | | } while (rdi != 0); 0x004598f1 jmp 0x459904 | goto label_25; | label_20: 0x004598f3 xor esi, esi | esi = 0; 0x004598f5 jmp 0x459ae3 | goto label_26; | label_24: 0x004598fa pxor xmm0, xmm0 | xmm0 = 0; 0x004598fe xor esi, esi | esi = 0; 0x00459900 pxor xmm1, xmm1 | xmm1 = 0; | label_25: 0x00459904 test r8b, 1 | | if ((r8b & 1) != 0) { 0x00459908 je 0x45994d | 0x0045990a movzx edi, word [rax + rsi + 2] | edi = *((rax + rsi + 2)); 0x0045990f movd xmm2, edi | xmm2 = edi; 0x00459913 movdqa xmm3, xmmword [rip + 0x427d5] | __asm ("movdqa xmm3, xmmword [0x0049c0f0]"); 0x0045991b pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x0045991f pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459924 movdqa xmm4, xmmword [rip + 0x427d4] | __asm ("movdqa xmm4, xmmword [0x0049c100]"); 0x0045992c pand xmm2, xmm4 | xmm2 &= xmm4; 0x00459930 paddq xmm1, xmm2 | __asm ("paddq xmm1, xmm2"); 0x00459934 movzx esi, word [rax + rsi] | esi = *((rax + rsi)); 0x00459938 movd xmm2, esi | xmm2 = esi; 0x0045993c pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x00459940 pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459945 pand xmm2, xmm4 | xmm2 &= xmm4; 0x00459949 paddq xmm0, xmm2 | __asm ("paddq xmm0, xmm2"); | } 0x0045994d paddq xmm0, xmm1 | __asm ("paddq xmm0, xmm1"); 0x00459951 pshufd xmm1, xmm0, 0xee | __asm ("pshufd xmm1, xmm0, 0xee"); 0x00459956 paddq xmm1, xmm0 | __asm ("paddq xmm1, xmm0"); 0x0045995a movq rsi, xmm1 | rsi = xmm1; 0x0045995f cmp rdx, rcx | | if (rdx == rcx) { 0x00459962 je 0x459983 | goto label_23; | } 0x00459964 add rcx, rax | rcx += rax; 0x00459967 nop word [rax + rax] | | do { | label_7: 0x00459970 xor edx, edx | edx = 0; 0x00459972 cmp byte [rcx], 0xa | 0x00459975 sete dl | dl = (*(rcx) == 0xa) ? 1 : 0; 0x00459978 add rsi, rdx | rsi += rdx; 0x0045997b inc rcx | rcx++; 0x0045997e cmp rbp, rcx | 0x00459981 jne 0x459970 | | } while (rbp != rcx); | label_23: 0x00459983 add rbp, rsi | rbp += rsi; | label_4: 0x00459986 sub rbp, rax | rbp -= rax; 0x00459989 mov edi, dword [r15 + 0x40] | 0x0045998d xor esi, esi | esi = 0; 0x0045998f mov edx, 1 | edx = 1; 0x00459994 call 0x45a1b0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x00459999 mov r13, rax | r13 = rax; 0x0045999c add r13, rbp | r13 += rbp; 0x0045999f jmp 0x459b7a | goto label_2; | label_21: 0x004599a4 mov rcx, rdx | rcx = rdx; 0x004599a7 and rcx, 0xfffffffffffffffc | rcx &= 0xfffffffffffffffc; 0x004599ab lea rsi, [rcx - 4] | rsi = rcx - 4; 0x004599af mov r8, rsi | r8 = rsi; 0x004599b2 shr r8, 2 | r8 >>= 2; 0x004599b6 inc r8 | r8++; 0x004599b9 test rsi, rsi | | if (rsi == 0) { 0x004599bc je 0x459a59 | goto label_27; | } 0x004599c2 mov rdi, r8 | rdi = r8; 0x004599c5 and rdi, 0xfffffffffffffffe | rdi &= 0xfffffffffffffffe; 0x004599c9 neg rdi | rdi = -rdi; 0x004599cc pxor xmm0, xmm0 | xmm0 = 0; 0x004599d0 xor esi, esi | esi = 0; 0x004599d2 movdqa xmm2, xmmword [rip + 0x42716] | __asm ("movdqa xmm2, xmmword [0x0049c0f0]"); 0x004599da movdqa xmm3, xmmword [rip + 0x4271e] | __asm ("movdqa xmm3, xmmword [0x0049c100]"); 0x004599e2 pxor xmm1, xmm1 | xmm1 = 0; | do { 0x004599e6 movzx ebx, word [rax + rsi] | ebx = *((rax + rsi)); 0x004599ea movd xmm4, ebx | xmm4 = ebx; 0x004599ee movzx ebx, word [rax + rsi + 2] | ebx = *((rax + rsi + 2)); 0x004599f3 movd xmm5, ebx | xmm5 = ebx; 0x004599f7 pcmpeqb xmm4, xmm2 | __asm ("pcmpeqb xmm4, xmm2"); 0x004599fb pmovzxbq xmm4, xmm4 | __asm ("pmovzxbq xmm4, xmm4"); 0x00459a00 pand xmm4, xmm3 | xmm4 &= xmm3; 0x00459a04 paddq xmm4, xmm0 | __asm ("paddq xmm4, xmm0"); 0x00459a08 pcmpeqb xmm5, xmm2 | __asm ("pcmpeqb xmm5, xmm2"); 0x00459a0c pmovzxbq xmm5, xmm5 | __asm ("pmovzxbq xmm5, xmm5"); 0x00459a11 pand xmm5, xmm3 | xmm5 &= xmm3; 0x00459a15 paddq xmm5, xmm1 | __asm ("paddq xmm5, xmm1"); 0x00459a19 movzx ebx, word [rax + rsi + 4] | ebx = *((rax + rsi + 4)); 0x00459a1e movd xmm0, ebx | xmm0 = ebx; 0x00459a22 movzx ebx, word [rax + rsi + 6] | ebx = *((rax + rsi + 6)); 0x00459a27 movd xmm1, ebx | xmm1 = ebx; 0x00459a2b pcmpeqb xmm0, xmm2 | __asm ("pcmpeqb xmm0, xmm2"); 0x00459a2f pmovzxbq xmm0, xmm0 | __asm ("pmovzxbq xmm0, xmm0"); 0x00459a34 pand xmm0, xmm3 | xmm0 &= xmm3; 0x00459a38 paddq xmm0, xmm4 | __asm ("paddq xmm0, xmm4"); 0x00459a3c pcmpeqb xmm1, xmm2 | __asm ("pcmpeqb xmm1, xmm2"); 0x00459a40 pmovzxbq xmm1, xmm1 | __asm ("pmovzxbq xmm1, xmm1"); 0x00459a45 pand xmm1, xmm3 | xmm1 &= xmm3; 0x00459a49 paddq xmm1, xmm5 | __asm ("paddq xmm1, xmm5"); 0x00459a4d add rsi, 8 | rsi += 8; 0x00459a51 add rdi, 2 | rdi += 2; 0x00459a55 jne 0x4599e6 | | } while (rdi != 0); 0x00459a57 jmp 0x459a63 | goto label_28; | label_27: 0x00459a59 pxor xmm0, xmm0 | xmm0 = 0; 0x00459a5d xor esi, esi | esi = 0; 0x00459a5f pxor xmm1, xmm1 | xmm1 = 0; | label_28: 0x00459a63 test r8b, 1 | | if ((r8b & 1) != 0) { 0x00459a67 je 0x459aac | 0x00459a69 movzx edi, word [rax + rsi + 2] | edi = *((rax + rsi + 2)); 0x00459a6e movd xmm2, edi | xmm2 = edi; 0x00459a72 movdqa xmm3, xmmword [rip + 0x42676] | __asm ("movdqa xmm3, xmmword [0x0049c0f0]"); 0x00459a7a pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x00459a7e pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459a83 movdqa xmm4, xmmword [rip + 0x42675] | __asm ("movdqa xmm4, xmmword [0x0049c100]"); 0x00459a8b pand xmm2, xmm4 | xmm2 &= xmm4; 0x00459a8f paddq xmm1, xmm2 | __asm ("paddq xmm1, xmm2"); 0x00459a93 movzx esi, word [rax + rsi] | esi = *((rax + rsi)); 0x00459a97 movd xmm2, esi | xmm2 = esi; 0x00459a9b pcmpeqb xmm2, xmm3 | __asm ("pcmpeqb xmm2, xmm3"); 0x00459a9f pmovzxbq xmm2, xmm2 | __asm ("pmovzxbq xmm2, xmm2"); 0x00459aa4 pand xmm2, xmm4 | xmm2 &= xmm4; 0x00459aa8 paddq xmm0, xmm2 | __asm ("paddq xmm0, xmm2"); | } 0x00459aac paddq xmm0, xmm1 | __asm ("paddq xmm0, xmm1"); 0x00459ab0 pshufd xmm1, xmm0, 0xee | __asm ("pshufd xmm1, xmm0, 0xee"); 0x00459ab5 paddq xmm1, xmm0 | __asm ("paddq xmm1, xmm0"); 0x00459ab9 movq rsi, xmm1 | rsi = xmm1; 0x00459abe cmp rdx, rcx | | if (rdx == rcx) { 0x00459ac1 je 0x459ae3 | goto label_26; | } 0x00459ac3 add rcx, rax | rcx += rax; 0x00459ac6 nop word cs:[rax + rax] | | do { | label_22: 0x00459ad0 xor edx, edx | edx = 0; 0x00459ad2 cmp byte [rcx], 0xa | 0x00459ad5 sete dl | dl = (*(rcx) == 0xa) ? 1 : 0; 0x00459ad8 add rsi, rdx | rsi += rdx; 0x00459adb inc rcx | rcx++; 0x00459ade cmp rbp, rcx | 0x00459ae1 jne 0x459ad0 | | } while (rbp != rcx); | label_26: 0x00459ae3 add rbp, rsi | rbp += rsi; | label_19: 0x00459ae6 sub rbp, rax | rbp -= rax; 0x00459ae9 test r14, r14 | | if (r14 == 0) { 0x00459aec je 0x459b91 | goto label_29; | } 0x00459af2 sub r14, rbp | r14 -= rbp; | label_15: 0x00459af5 mov edi, dword [r15 + 0x40] | 0x00459af9 mov rsi, r14 | rsi = r14; 0x00459afc mov edx, 1 | edx = 1; 0x00459b01 call 0x45a1b0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x00459b06 mov r13, rax | r13 = rax; 0x00459b09 mov eax, dword [r15 + 0x50] | eax = *((r15 + 0x50)); | label_18: 0x00459b0d lea ecx, [rax - 1] | ecx = rax - 1; 0x00459b10 cmp ecx, 1 | | if (ecx <= 1) { 0x00459b13 ja 0x459b5c | 0x00459b15 cmp eax, 2 | | if (eax == 2) { 0x00459b18 jne 0x459b39 | 0x00459b1a movdqu xmm0, xmmword [r15 + 0x78] | __asm ("movdqu xmm0, xmmword [r15 + 0x78]"); 0x00459b20 mov rax, qword [r15 + 0x88] | rax = *((r15 + 0x88)); 0x00459b27 movdqu xmmword [r15 + 0x10], xmm0 | __asm ("movdqu xmmword [r15 + 0x10], xmm0"); 0x00459b2d mov qword [r15 + 0x20], rax | *((r15 + 0x20)) = rax; 0x00459b31 mov dword [r15 + 0x50], 1 | *((r15 + 0x50)) = 1; | } 0x00459b39 mov rdi, qword [r15 + 0x90] | rdi = *((r15 + 0x90)); 0x00459b40 test rdi, rdi | | if (rdi != 0) { 0x00459b43 je 0x459b51 | 0x00459b45 movsxd rsi, dword [r15 + 0x98] | rsi = *((r15 + 0x98)); 0x00459b4c call 0x45a4c0 | eax = BloombergLP::bdls::FilesystemUtil::unmap(void*,unsigned long) (rdi, rsi, rdx, rcx, r8, r9); | } 0x00459b51 mov qword [r15 + 0x90], 0 | *((r15 + 0x90)) = 0; | } 0x00459b5c mov dword [r15 + 0x50], 0 | *((r15 + 0x50)) = 0; 0x00459b64 pxor xmm0, xmm0 | xmm0 = 0; 0x00459b68 movdqu xmmword [r15 + 0x10], xmm0 | __asm ("movdqu xmmword [r15 + 0x10], xmm0"); 0x00459b6e movdqu xmmword [r15 + 0x20], xmm0 | __asm ("movdqu xmmword [r15 + 0x20], xmm0"); 0x00459b74 movdqu xmmword [r15 + 0x30], xmm0 | __asm ("movdqu xmmword [r15 + 0x30], xmm0"); | do { | label_2: 0x00459b7a xor eax, eax | eax = 0; 0x00459b7c mov rdx, r13 | rdx = r13; 0x00459b7f add rsp, 0x98 | 0x00459b86 pop rbx | 0x00459b87 pop r12 | 0x00459b89 pop r13 | 0x00459b8b pop r14 | 0x00459b8d pop r15 | 0x00459b8f pop rbp | 0x00459b90 ret | return rax; | label_29: 0x00459b91 mov edi, dword [r15 + 0x40] | 0x00459b95 xor esi, esi | esi = 0; 0x00459b97 mov edx, 1 | edx = 1; 0x00459b9c call 0x45a1b0 | rax = BloombergLP::bdls::FilesystemUtil::seek(int,long,int) (*((r15 + 0x40))); 0x00459ba1 mov r13, rax | r13 = rax; 0x00459ba4 sub r13, rbp | r13 -= rbp; 0x00459ba7 jmp 0x459b7a | | } while (1); | }