Function at 0x402a30
Capabilities:
Read file on windows

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x1a0
mov edx, 1
mov rsi, rcx
mov ecx, 0x40
call sub.msvcrt.dll_calloc
mov rcx, qword [0x004068a0]
lea rdx, str.arch
mov rbx, rax
call sub.msvcrt.dll_strstr
test rax, rax
je 0x402a73
lea rcx, str.DBG:_p2xar_open
call fcn.004045e8
mov edx, 0x8000
mov rcx, rsi
call sub.msvcrt.dll__open
cmp eax, 0xffffffff
mov dword [rbx], eax
je 0x402d43
mov rcx, rbx
call fcn.004022c0
cmp eax, 0xffffffff
je 0x402cc0
mov ecx, dword [rbx]
mov r8d, 1
mov edx, 0xffffff00
lea rsi, [rsp + 0xa0]
call sub.msvcrt.dll__lseek
mov ecx, dword [rbx]
mov r8d, 0x100
mov rdx, rsi
call sub.msvcrt.dll__read
cmp eax, 0x100
jne 0x402cc0
mov edx, 0x100
mov rcx, rsi
call fcn.004026a0
lea rdx, str.NAMEP2X_V06.TOC
mov rcx, rsi
call sub.msvcrt.dll_strstr
cmp rax, rsi
mov rdi, rax
je 0x402cd0
mov ecx, dword [rbx]
xor edx, edx
xor r8d, r8d
mov dword [rbx + 0x20], 0
movabs rdi, 0x7574616e67697320
call sub.msvcrt.dll__lseek
mov ecx, dword [rbx]
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], rdi
mov dword [rdx + 0x12], 0xa0d6572
mov byte [rdx + 0x16], 0
call fcn.00401e30
cmp eax, 0xffffffff
je 0x402cb2
mov ecx, dword [rbx]
mov r8d, 0x100
mov rdx, rsi
mov byte [rsp + 0xa0], 0
call fcn.00401f50
mov r8, rsi
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x402b75
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
mov edi, eax
cmove r8, rdx
add dil, al
sbb r8, 3
sub r8, rsi
lea rdi, [r8 + 1]
mov rcx, rdi
call sub.msvcrt.dll_malloc
mov r8, rdi
mov rdx, rsi
mov rcx, rax
mov qword [rbx + 8], rax
call sub.msvcrt.dll_memcpy
mov ecx, dword [rbx]
mov r8d, 0x100
mov rdx, rsi
mov byte [rsp + 0xa0], 0
call fcn.00401f50
mov r8, rsi
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x402be7
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
mov edi, eax
cmove r8, rdx
add dil, al
sbb r8, 3
sub r8, rsi
lea rdi, [r8 + 1]
mov rcx, rdi
call sub.msvcrt.dll_malloc
mov r8, rdi
mov rdx, rsi
mov rcx, rax
mov qword [rbx + 0x10], rax
call sub.msvcrt.dll_memcpy
mov ecx, dword [rbx]
mov r8d, 0x100
mov rdx, rsi
mov byte [rsp + 0xa0], 0
call fcn.00401f50
mov r8, rsi
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x402c59
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
mov edi, eax
cmove r8, rdx
add dil, al
sbb r8, 3
sub r8, rsi
lea rdi, [r8 + 1]
mov rcx, rdi
call sub.msvcrt.dll_malloc
mov r8, rdi
mov rdx, rsi
mov qword [rbx + 0x18], rax
mov rcx, rax
call sub.msvcrt.dll_memcpy
jmp 0x402cc2
mov ecx, dword [rbx]
call sub.msvcrt.dll__close
nop dword [rax]
xor ebx, ebx
mov rax, rbx
add rsp, 0x1a0
pop rbx
pop rsi
pop rdi
ret
mov ecx, dword [rbx]
mov r8d, 1
xor edx, edx
mov dword [rbx + 0x20], 6
call sub.msvcrt.dll__lseek
lea rdx, str.SIZE
mov rcx, rdi
mov esi, 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, rbx
sub esi, r8d
lea edx, [rsi - 0x100]
call fcn.004029a0
mov edx, dword [rsp + 0x20]
mov qword [rbx + 0x28], rax
mov rcx, rax
call fcn.004026a0
mov rax, rbx
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, rsi
mov r8d, dword [rax]
call fcn.00401cb0
mov rcx, rbx
xor ebx, ebx
call sub.msvcrt.dll_free
jmp 0x402cc2