Function at 0x14000d250
Capabilities:
Get file size
Read file on windows
Write file on windows

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x58
mov qword [rbp - 0x10], 0xfffffffffffffffe
mov rsi, rdx
mov r12, rcx
cmp qword [rcx], 0xffffffffffffffff
jne 0x14000d288
mov rdx, qword [rdx]
or rbx, 0xffffffffffffffff
jmp 0x14000d5c0
lea rcx, [0x14003e798]
mov rax, qword [0x14003e798]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x28], rax
lea rdx, str._Google.NTx86_
test rdx, 0xffffffffffff0000
jne 0x14000d2d1
movzx ebx, dx
mov ecx, ebx
call fcn.140008320
test rax, rax
je 0x14000d2e1
mov r8d, ebx
mov rdx, rax
lea rcx, [rbp - 0x28]
call fcn.14000c2f0
jmp 0x14000d2e1
mov r8d, 0xe
lea rcx, [rbp - 0x28]
call fcn.14000c420
nop
xor r14d, r14d
mov dword [rbp + 0x58], r14d
lea rcx, str.kernel32
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rcx, rax
lea rdx, str.IsWow64Process
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140040568], rax
test rax, rax
je 0x14000d324
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rcx, rax
lea rdx, [rbp + 0x58]
call qword [0x140040568]
cmp dword [rbp + 0x58], r14d
je 0x14000d340
mov r8d, 0x10
lea rdx, str._Google.NTamd64_
lea rcx, [rbp - 0x28]
call fcn.14000c420
mov dword [rbp + 0x48], r14d
mov dword [rbp + 0x60], r14d
xor edx, edx
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov r15d, eax
lea ecx, [rax + 1]
call fcn.140014708
mov r13, rax
mov qword [rsp + 0x20], r14
lea r9, [rbp + 0x60]
mov r8d, r15d
mov rdx, rax
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov r11d, dword [rbp + 0x60]
mov byte [r11 + r13], r14b
lea rcx, [0x14003e798]
mov rdx, qword [0x14003e798]
call qword [rdx + 0x18]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x20], rbx
test r13, r13
je 0x14000d3cb
test r13, 0xffffffffffff0000
jne 0x14000d3cb
movzx edi, r13w
mov ecx, edi
call fcn.140008320
test rax, rax
je 0x14000d3db
mov r8d, edi
mov rdx, rax
lea rcx, [rbp - 0x20]
call fcn.14000c2f0
jmp 0x14000d3d7
mov rdx, r13
lea rcx, [rbp - 0x20]
call fcn.14000d5f0
mov rbx, qword [rbp - 0x20]
mov rdx, qword [rbp - 0x28]
test rdx, rdx
je 0x14000d57f
cmp dword [rbx - 0x10], 0
jl 0x14000d57f
mov rcx, rbx
call fcn.140017e40
mov rdi, rax
test rax, rax
je 0x14000d57f
sub rdi, rbx
sar rdi, 1
cmp edi, 0xffffffff
je 0x14000d57f
lea rcx, str._Google.NTamd64_
call qword [sym.imp.KERNEL32.dll_lstrlenW]
add edi, eax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
mov qword [rsp + 0x20], r14
lea r9, [rbp + 0x48]
mov r8d, edi
mov rdx, r13
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov r14, qword [rsi]
lea rcx, [0x14003e798]
mov rax, qword [0x14003e798]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x18], rbx
test r14, r14
je 0x14000d49b
test r14, 0xffffffffffff0000
jne 0x14000d49b
movzx r14d, r14w
mov ecx, r14d
call fcn.140008320
test rax, rax
je 0x14000d4ab
mov r8d, r14d
mov rdx, rax
lea rcx, [rbp - 0x18]
call fcn.14000c1b0
jmp 0x14000d4a7
mov rdx, r14
lea rcx, [rbp - 0x18]
call fcn.14000b310
mov rbx, qword [rbp - 0x18]
mov rax, qword [rsi]
xor r14d, r14d
mov qword [rsp + 0x20], r14
lea r9, [rbp + 0x48]
mov r8d, dword [rax - 0x10]
mov rdx, rbx
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_WriteFile]
lea rdx, [rbx - 0x18]
or rbx, 0xffffffffffffffff
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000d4e9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
sub r15d, edi
movsxd rdx, edi
add rdx, r13
mov qword [rsp + 0x20], r14
lea r9, [rbp + 0x48]
mov r8d, r15d
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [r12], rbx
mov rcx, r13
call fcn.140014c78
nop
mov rdx, qword [rbp - 0x20]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000d53e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rbp - 0x28]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000d55d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsi]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14000d578
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov eax, 1
jmp 0x14000d5da
lea rdx, [rbx - 0x18]
or rbx, 0xffffffffffffffff
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000d59e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rbp - 0x28]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000d5bd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsi]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14000d5d8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret