Function at 0x402a10
Capabilities:
Read file on windows

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x1a0
mov edx, 1
mov rbx, rcx
mov ecx, 0x40
call sub.msvcrt.dll_calloc
mov rcx, qword [0x004068c0]
lea rdx, str.arch
mov rsi, rax
call sub.msvcrt.dll_strstr
test rax, rax
je 0x402a53
lea rcx, str.DBG:_p2xar_open
call fcn.00404498
mov edx, 0x8000
mov rcx, rbx
call sub.msvcrt.dll__open
cmp eax, 0xffffffff
mov dword [rsi], eax
je 0x402d33
mov rcx, rsi
call fcn.004022b0
cmp eax, 0xffffffff
je 0x402cb0
mov ecx, dword [rsi]
mov r8d, 1
mov edx, 0xffffff00
lea rdi, [rsp + 0xa0]
call sub.msvcrt.dll__lseek
mov ecx, dword [rsi]
mov r8d, 0x100
mov rdx, rdi
call sub.msvcrt.dll__read
cmp eax, 0x100
jne 0x402cb0
mov edx, 0x100
mov rcx, rdi
call fcn.00402680
lea rdx, str.NAMEP2X_V06.TOC
mov rcx, rdi
call sub.msvcrt.dll_strstr
cmp rax, rdi
mov rbx, rax
je 0x402cc0
mov ecx, dword [rsi]
xor edx, edx
xor r8d, r8d
mov dword [rsi + 0x20], 0
movabs rbx, 0x7574616e67697320
call sub.msvcrt.dll__lseek
mov ecx, dword [rsi]
lea rdx, [rsp + 0x20]
movabs rax, 0x312064616f6c6264
mov qword [rsp + 0x20], rax
mov eax, 0x302e
mov r8d, 0x16
mov word [rsp + 0x28], ax
mov qword [rsp + 0x2a], rbx
mov dword [rdx + 0x12], 0xa0d6572
mov byte [rdx + 0x16], 0
call fcn.00401e40
cmp eax, 0xffffffff
je 0x402ca0
mov ecx, dword [rsi]
mov r8d, 0x100
mov rdx, rdi
mov byte [rsp + 0xa0], 0
call fcn.00401f60
mov r8, rdi
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x402b55
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
mov ebx, eax
cmove r8, rdx
add bl, al
sbb r8, 3
sub r8, rdi
lea rbx, [r8 + 1]
mov rcx, rbx
call sub.msvcrt.dll_malloc
mov r8, rbx
mov rdx, rdi
mov rcx, rax
mov qword [rsi + 8], rax
call sub.msvcrt.dll_memcpy
mov ecx, dword [rsi]
mov r8d, 0x100
mov rdx, rdi
mov byte [rsp + 0xa0], 0
call fcn.00401f60
mov r8, rdi
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x402bc6
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
mov ebx, eax
cmove r8, rdx
add bl, al
sbb r8, 3
sub r8, rdi
lea rbx, [r8 + 1]
mov rcx, rbx
call sub.msvcrt.dll_malloc
mov r8, rbx
mov rdx, rdi
mov rcx, rax
mov qword [rsi + 0x10], rax
call sub.msvcrt.dll_memcpy
mov ecx, dword [rsi]
mov r8d, 0x100
mov rdx, rdi
mov byte [rsp + 0xa0], 0
call fcn.00401f60
mov r8, rdi
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x402c37
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
mov ebx, eax
cmove r8, rdx
add bl, al
sbb r8, 3
sub r8, rdi
lea rbx, [r8 + 1]
mov rcx, rbx
call sub.msvcrt.dll_malloc
mov r8, rbx
mov rdx, rdi
mov qword [rsi + 0x18], rax
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov rax, rsi
add rsp, 0x1a0
pop rbx
pop rsi
pop rdi
ret
mov ecx, dword [rsi]
call sub.msvcrt.dll__close
nop word [rax + rax]
xor esi, esi
mov rax, rsi
add rsp, 0x1a0
pop rbx
pop rsi
pop rdi
ret
mov ecx, dword [rsi]
mov r8d, 1
xor edx, edx
mov dword [rsi + 0x20], 6
call sub.msvcrt.dll__lseek
lea rdx, str.SIZE
mov rcx, rbx
mov edi, eax
call sub.msvcrt.dll_strstr
lea r8, [rsp + 0x20]
lea rcx, [rax + 5]
lea rdx, [0x0040617a]
call sub.msvcrt.dll_sscanf
mov r8d, dword [rsp + 0x20]
xor r9d, r9d
mov rcx, rsi
sub edi, r8d
lea edx, [rdi - 0x100]
call fcn.00402970
mov edx, dword [rsp + 0x20]
mov qword [rsi + 0x28], rax
mov rcx, rax
call fcn.00402680
mov rax, rsi
add rsp, 0x1a0
pop rbx
pop rsi
pop rdi
ret
call qword [sym.imp.msvcrt.dll__errno]
lea rcx, str.Error:_Cant_open_archive_file__s__errno_d_n
mov rdx, rbx
mov r8d, dword [rax]
call fcn.00401cd0
mov rcx, rsi
xor esi, esi
call sub.msvcrt.dll_free
jmp 0x402cb2