Function at 0x18003f3b0
Capabilities:
Read file on windows
Read pipe

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3d0]
sub rsp, 0x4d0
mov rax, qword [0x1801130d0]
xor rax, rsp
mov qword [rbp + 0x3c0], rax
mov r12, r9
mov qword [rsp + 0x38], r9
mov rdi, r8
mov r14, rcx
mov r15, qword [r8 + 0x28]
mov qword [rsp + 0x30], r15
xor r13d, r13d
cmp r15, 0xffff
jle 0x18003f4ad
mov rbx, qword [r8 + 0x18]
lea rsi, [r15 - 0xffff]
add rsi, rbx
cmp rbx, rsi
ja 0x18003f43b
nop word [rax + rax]
mov edx, 0xa
mov rcx, rbx
call fcn.18009d1e4
test rax, rax
je 0x18003f43b
lea rbx, [rax + 2]
cmp rbx, rsi
jbe 0x18003f420
mov r8, qword [rdi + 0x28]
test r8, r8
mov rax, r13
je 0x18003f44b
mov rax, qword [rdi + 0x18]
sub rbx, rax
test rbx, rbx
jle 0x18003f4a1
cmp rbx, r8
jge 0x18003f487
mov rcx, qword [rdi + 0x18]
sub r8, rbx
lea rdx, [rcx + rbx]
call fcn.18009d4b0
mov rdx, qword [rdi + 0x28]
cmp rdx, rbx
je 0x18003f487
sub rdx, rbx
mov rcx, rdi
call fcn.1800418f0
mov r15, qword [rdi + 0x28]
mov qword [rsp + 0x30], r15
jmp 0x18003f4ad
mov rdx, qword [rdi + 0x18]
test rdx, rdx
je 0x18003f499
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + Ordinal_26]
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x20], r13
mov qword [rsp + 0x30], r13
mov r15, r13
mov qword [rdi + 0x28], r13
cmp r15, 2
jb 0x18003f4c7
mov rax, qword [rdi + 0x18]
cmp word [rax + r15 - 2], r13w
jne 0x18003f4c7
lea rax, [r15 - 2]
mov qword [rdi + 0x28], rax
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rsp + 0x48], rax
lea rbx, vtable.CVolObject.0
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x50], r13
mov qword [rsp + 0x58], r13
lea rax, vtable.CVolMem.0
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x68], r13
mov eax, 0x40
mov qword [rsp + 0x78], rax
mov qword [rbp - 0x80], 1
mov dword [rsp + 0x40], r13d
mov qword [rsp + 0x28], r13
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
je 0x18003f654
cmp dword [rsp + 0x40], 0
je 0x18003f65e
mov dword [rsp + 0x40], r13d
mov qword [rsp + 0x20], r13
lea r9, [rsp + 0x40]
mov r8d, 0x400
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x18003f65a
mov eax, dword [rsp + 0x40]
test eax, eax
je 0x18003f65e
mov ebx, eax
mov rax, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
sub rax, rsi
cmp rax, rbx
jl 0x18003f5fd
cmp rbx, 1
jne 0x18003f5b1
mov rcx, qword [rsp + 0x60]
movzx eax, byte [rbp - 0x40]
mov byte [rsi + rcx], al
inc qword [rsp + 0x70]
jmp 0x18003f620
cmp rbx, 2
jne 0x18003f5cb
mov rcx, qword [rsp + 0x60]
movzx eax, word [rbp - 0x40]
mov word [rsi + rcx], ax
add qword [rsp + 0x70], rbx
jmp 0x18003f620
cmp rbx, 4
jne 0x18003f5e3
mov rcx, qword [rsp + 0x60]
mov eax, dword [rbp - 0x40]
mov dword [rsi + rcx], eax
add qword [rsp + 0x70], rbx
jmp 0x18003f620
cmp rbx, 8
jne 0x18003f5fd
mov rcx, qword [rsp + 0x60]
mov rax, qword [rbp - 0x40]
mov qword [rsi + rcx], rax
add qword [rsp + 0x70], rbx
jmp 0x18003f620
test rbx, rbx
je 0x18003f620
lea rdx, [rbx + rsi]
lea rcx, [rsp + 0x48]
call fcn.1800418f0
lea rcx, [rsi + rax]
mov r8, rbx
lea rdx, [rbp - 0x40]
call fcn.18009d4b0
mov dword [rsp + 0x40], r13d
mov qword [rsp + 0x28], r13
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
jne 0x18003f543
lea rbx, vtable.CVolObject.0
mov qword [rbp - 0x80], r13
jmp 0x18003f665
mov qword [rbp - 0x80], r13
lea rbx, vtable.CVolObject.0
mov r14, qword [rsp + 0x70]
test r14, r14
je 0x18003f95f
mov rdx, qword [rsp + 0x68]
mov rax, rdx
sub rax, r14
cmp rax, 4
jl 0x18003f698
mov rax, qword [rsp + 0x60]
mov dword [r14 + rax], r13d
add qword [rsp + 0x70], 4
jmp 0x18003f76a
lea rsi, [r14 + 4]
cmp rsi, r14
jne 0x18003f6ab
mov rcx, qword [rsp + 0x60]
jmp 0x18003f75f
test rsi, rsi
jne 0x18003f6de
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x18003f6c7
lea rcx, [rsp + 0x48]
mov rax, qword [rsp + 0x48]
call qword [rax + Ordinal_26]
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x68], r13
mov rcx, r13
jmp 0x18003f75f
mov rcx, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x78]
mov eax, 0x40
test rcx, rcx
jne 0x18003f718
test rbx, rbx
cmovle rbx, rax
mov rax, rsi
cqo
idiv rbx
sub rbx, rdx
add rbx, rsi
mov rdx, rbx
lea rcx, [rsp + 0x48]
mov rax, qword [rsp + 0x48]
call qword [rax]
jmp 0x18003f74d
test rbx, rbx
cmovle rbx, rax
cmp rdx, rsi
jl 0x18003f72c
sub rdx, rsi
cmp rdx, rbx
jle 0x18003f75a
mov rax, rsi
cqo
idiv rbx
sub rbx, rdx
add rbx, rsi
mov r8, rbx
mov rdx, rcx
lea rcx, [rsp + 0x48]
mov rax, qword [rsp + 0x48]
call qword [rax + reloc.WS2_32.dll_recv]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], rbx
mov rcx, rax
mov qword [rsp + 0x70], rsi
mov dword [rcx + r14], r13d
lea rbx, vtable.CVolObject.0
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x78], rbx
mov qword [rbp - 0x70], r13
mov qword [rbp - 0x68], r13
lea rax, vtable.CVolMem.0
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x60], r13
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x58], r13
mov eax, 0x40
mov qword [rbp - 0x48], rax
cmp qword [rsp + 0x70], 0
je 0x18003f930
mov r12, qword [rsp + 0x60]
test r12, r12
je 0x18003f92b
cmp byte [r12], 0
je 0x18003f92b
mov rsi, 0xffffffffffffffff
mov r14, rsi
lea r14, [r14 + 1]
cmp byte [r12 + r14], 0
jne 0x18003f7d0
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
lea r9d, [r14 + 1]
mov r8, r12
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movsxd rbx, eax
mov qword [rsp + 0x40], rbx
lea r13, [rbx + rbx]
cmp qword [rbp - 0x60], 0
je 0x18003f817
mov rdx, r13
lea rcx, [rbp - 0x78]
call fcn.1800418f0
jmp 0x18003f85d
test r13, r13
jne 0x18003f821
mov r15, r13
jmp 0x18003f863
mov rbx, qword [rbp - 0x48]
test rbx, rbx
mov eax, 0x40
cmovle rbx, rax
mov rax, r13
cqo
idiv rbx
sub rbx, rdx
add rbx, r13
mov rdx, rbx
lea rcx, [rbp - 0x78]
mov rax, qword [rbp - 0x78]
call qword [rax]
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rbx
mov qword [rbp - 0x50], r13
mov rbx, qword [rsp + 0x40]
xor r13d, r13d
mov r15, rax
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], r15
lea r9d, [r14 + 1]
mov r8, r12
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jle 0x18003f91f
test r15, r15
je 0x18003f91f
movzx ecx, word [r15]
test cx, cx
je 0x18003f91f
nop dword [rax + rax]
inc rsi
cmp word [r15 + rsi*2], 0
jne 0x18003f8a0
add rsi, rsi
mov rbx, qword [rdi + 0x28]
mov rax, qword [rdi + 0x20]
sub rax, rbx
cmp rax, rsi
jl 0x18003f8ff
cmp rsi, 2
jne 0x18003f8d2
mov rax, qword [rdi + 0x18]
mov word [rbx + rax], cx
add qword [rdi + 0x28], rsi
jmp 0x18003f91f
cmp rsi, 4
jne 0x18003f8e8
mov ecx, dword [r15]
mov rax, qword [rdi + 0x18]
mov dword [rbx + rax], ecx
add qword [rdi + 0x28], rsi
jmp 0x18003f91f
cmp rsi, 8
jne 0x18003f8ff
mov rcx, qword [r15]
mov rax, qword [rdi + 0x18]
mov qword [rbx + rax], rcx
add qword [rdi + 0x28], rsi
jmp 0x18003f91f
test rsi, rsi
jle 0x18003f91f
lea rdx, [rbx + rsi]
mov rcx, rdi
call fcn.1800418f0
lea rcx, [rbx + rax]
mov r8, rsi
mov rdx, r15
call fcn.18009d4b0
mov r15, qword [rsp + 0x30]
lea rbx, vtable.CVolObject.0
mov r12, qword [rsp + 0x38]
lea rax, vtable.CVolMem.0
mov qword [rbp - 0x78], rax
mov rdx, qword [rbp - 0x60]
test rdx, rdx
je 0x18003f94f
lea rcx, [rbp - 0x78]
mov rax, qword [rbp - 0x78]
call qword [rax + Ordinal_26]
mov qword [rbp - 0x60], r13
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x58], r13
mov qword [rbp - 0x78], rbx
test r12, r12
je 0x18003f96f
mov rax, qword [rdi + 0x28]
sub rax, r15
mov qword [r12], rax
mov rdx, qword [rdi + 0x20]
mov r14, qword [rdi + 0x28]
mov rax, rdx
sub rax, r14
cmp rax, 2
jl 0x18003f996
mov rax, qword [rdi + 0x18]
mov word [r14 + rax], r13w
add qword [rdi + 0x28], 2
jmp 0x18003fa4a
lea rsi, [r14 + 2]
mov rcx, qword [rdi + 0x18]
cmp rsi, r14
je 0x18003fa45
test rsi, rsi
jne 0x18003f9ce
test rcx, rcx
je 0x18003f9bd
mov rax, qword [rdi]
mov rdx, rcx
mov rcx, rdi
call qword [rax + Ordinal_26]
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x28], r13
mov qword [rdi + 0x20], r13
mov rcx, r13
jmp 0x18003fa45
mov rbx, qword [rdi + 0x30]
mov eax, 0x40
test rcx, rcx
jne 0x18003f9fe
test rbx, rbx
cmovle rbx, rax
mov rax, rsi
cqo
idiv rbx
sub rbx, rdx
add rbx, rsi
mov rax, qword [rdi]
mov rdx, rbx
mov rcx, rdi
call qword [rax]
jmp 0x18003fa2f
test rbx, rbx
cmovle rbx, rax
cmp rdx, rsi
jl 0x18003fa12
sub rdx, rsi
cmp rdx, rbx
jle 0x18003fa3a
mov rax, rsi
cqo
idiv rbx
sub rbx, rdx
add rbx, rsi
mov rax, qword [rdi]
mov r8, rbx
mov rdx, rcx
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov qword [rdi + 0x20], rbx
mov qword [rdi + 0x18], rax
mov rcx, rax
mov qword [rdi + 0x28], rsi
lea rbx, vtable.CVolObject.0
mov word [rcx + r14], r13w
lea rax, vtable.CVolMem.0
mov qword [rsp + 0x48], rax
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x18003fa6e
lea rcx, [rsp + 0x48]
mov r8, qword [rsp + 0x48]
call qword [r8 + Ordinal_27]
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x48], rbx
mov rax, qword [rbp - 0x80]
mov rcx, qword [rbp + 0x3c0]
xor rcx, rsp
call fcn.18009ad10
mov rbx, qword [rsp + 0x518]
add rsp, 0x4d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret