Function at 0x14003b830
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x810]
sub rsp, 0x910
mov qword [rsp + 0x50], 0xfffffffffffffffe
mov qword [rsp + 0x960], rbx
mov rax, qword [0x1402922b8]
xor rax, rsp
mov qword [rbp + 0x800], rax
mov rdi, rdx
mov rbx, rcx
test r8b, r8b
jne 0x14003b88b
mov rcx, rdx
call fcn.14003d510
test al, al
je 0x14003b88b
xor al, al
jmp 0x14003bb7c
mov rdx, rbx
lea rcx, [rbp + 0x1b0]
call fcn.140038de0
nop
xor ebx, ebx
mov rax, qword [rbp + 0x1c8]
cmp rax, 0xffffffffffffffff
jne 0x14003b910
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [rbx + 1]
lea rcx, [rbp + 0x1d8]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [rbp + 0x1c8], rax
cmp rax, 0xffffffffffffffff
jne 0x14003b8f6
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rbp + 0x3f0], eax
mov rax, qword [rbp + 0x1c8]
jmp 0x14003b90c
movdqa xmm0, xmmword [0x140192af0]
movdqa xmmword [rbp + 0x3e0], xmm0
mov dword [rbp + 0x3f0], ebx
cmp rax, 0xffffffffffffffff
setne al
lea r13, vtable.EA::IO::FileStream.0
lea r12, vtable.EA::IO::IStream.0
test al, al
jne 0x14003b92d
xor sil, sil
jmp 0x14003bb09
mov rdx, rdi
lea rcx, [rsp + 0x60]
call fcn.140038de0
nop
cmp qword [rsp + 0x78], 0xffffffffffffffff
jne 0x14003b99f
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], 2
xor r9d, r9d
mov edx, 0x40000000
lea r8d, [r9 + 3]
lea rcx, [rbp - 0x78]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [rsp + 0x78], rax
cmp rax, 0xffffffffffffffff
jne 0x14003b983
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rbp + 0x1a0], eax
jmp 0x14003b999
movdqa xmm0, xmmword [0x140192b00]
movdqa xmmword [rbp + 0x190], xmm0
mov dword [rbp + 0x1a0], ebx
cmp qword [rsp + 0x78], 0xffffffffffffffff
setne sil
test sil, sil
jne 0x14003ba11
mov rcx, qword [rbp + 0x1c8]
cmp rcx, 0xffffffffffffffff
je 0x14003ba09
mov rdx, qword [rbp + 0x1d0]
test rdx, rdx
je 0x14003b9d1
mov rax, qword [rdx]
mov rcx, rdx
call qword [rax + 0x38]
mov rcx, qword [rbp + 0x1c8]
mov qword [rbp + 0x1d0], rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp + 0x1c8], 0xffffffffffffffff
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x3e0], xmm0
mov dword [rbp + 0x3f0], 0xfffffffe
mov qword [rbp + 0x3f8], 0xffffffffffffffff
xor sil, sil
jmp 0x14003baaa
mov rcx, qword [rbp + 0x1c8]
cmp rcx, 0xffffffffffffffff
je 0x14003bbb3
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x48]
mov r8d, 0x400
lea rdx, [rbp + 0x400]
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x14003bba6
mov r14d, dword [rsp + 0x48]
test r14, r14
jne 0x14003bbba
mov rcx, qword [rsp + 0x78]
cmp rcx, 0xffffffffffffffff
je 0x14003baaa
mov rdx, qword [rbp - 0x80]
test rdx, rdx
je 0x14003ba77
mov rax, qword [rdx]
mov rcx, rdx
call qword [rax + 0x38]
mov rcx, qword [rsp + 0x78]
mov qword [rbp - 0x80], rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x78], 0xffffffffffffffff
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x190], xmm0
mov dword [rbp + 0x1a0], 0xfffffffe
mov qword [rbp + 0x1a8], 0xffffffffffffffff
mov qword [rsp + 0x60], r13
mov rcx, qword [rsp + 0x78]
cmp rcx, 0xffffffffffffffff
je 0x14003bb04
mov rdx, qword [rbp - 0x80]
test rdx, rdx
je 0x14003bad1
mov rax, qword [rdx]
mov rcx, rdx
call qword [rax + 0x38]
mov rcx, qword [rsp + 0x78]
mov qword [rbp - 0x80], rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x78], 0xffffffffffffffff
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x190], xmm0
mov dword [rbp + 0x1a0], 0xfffffffe
mov qword [rbp + 0x1a8], 0xffffffffffffffff
mov qword [rsp + 0x60], r12
mov qword [rbp + 0x1b0], r13
mov rcx, qword [rbp + 0x1c8]
cmp rcx, 0xffffffffffffffff
je 0x14003bb71
mov rdx, qword [rbp + 0x1d0]
test rdx, rdx
je 0x14003bb39
mov rax, qword [rdx]
mov rcx, rdx
call qword [rax + 0x38]
mov rcx, qword [rbp + 0x1c8]
mov qword [rbp + 0x1d0], rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp + 0x1c8], 0xffffffffffffffff
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x3e0], xmm0
mov dword [rbp + 0x3f0], 0xfffffffe
mov qword [rbp + 0x3f8], 0xffffffffffffffff
mov qword [rbp + 0x1b0], r12
movzx eax, sil
mov rcx, qword [rbp + 0x800]
xor rcx, rsp
call fcn.14012fd90
mov rbx, qword [rsp + 0x960]
add rsp, 0x910
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
mov dword [rbp + 0x3f0], eax
mov r14, 0xffffffffffffffff
mov rdi, rbx
mov qword [rsp + 0x40], rbx
mov r9d, 1
lea r8, [rsp + 0x40]
mov rdx, rbx
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov r15, 0xffffffffffffffff
test eax, eax
cmovne r15, qword [rsp + 0x40]
nop word [rax + rax]
mov rcx, qword [rsp + 0x78]
cmp rcx, 0xffffffffffffffff
je 0x14003bc3a
mov r8d, r14d
sub r8d, edi
lea rdx, [rbp + 0x400]
add rdx, rdi
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x4c]
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x14003bc29
mov sil, 1
mov rcx, qword [rsp + 0x78]
jmp 0x14003bc3d
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rbp + 0x1a0], eax
mov rcx, qword [rsp + 0x78]
xor sil, sil
mov qword [rsp + 0x40], rbx
mov r9d, 1
lea r8, [rsp + 0x40]
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov rcx, 0xffffffffffffffff
test eax, eax
cmovne rcx, qword [rsp + 0x40]
sub rcx, r15
test sil, sil
je 0x14003ba55
add rdi, rcx
cmp rdi, r14
jb 0x14003bbf0
jmp 0x14003ba11