Function at 0x14004b100
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 [0x1402c8920]
xor rax, rsp
mov qword [rbp + 0x3c0], rax
mov qword [rbp - 0x48], r9
mov rdi, r8
mov r12, rcx
mov r13, qword [r8 + 0x28]
mov qword [rbp - 0x58], r13
xor r15d, r15d
cmp r13, 0xffff
jle 0x14004b1fb
mov rbx, qword [r8 + 0x18]
lea rsi, [r13 - 0xffff]
add rsi, rbx
cmp rbx, rsi
ja 0x14004b18b
nop word [rax + rax]
mov edx, 0xa
mov rcx, rbx
call fcn.1401f7854
test rax, rax
je 0x14004b18b
lea rbx, [rax + 2]
cmp rbx, rsi
jbe 0x14004b170
mov r8, qword [rdi + 0x28]
test r8, r8
mov rax, r15
je 0x14004b19b
mov rax, qword [rdi + 0x18]
sub rbx, rax
test rbx, rbx
jle 0x14004b1f0
cmp rbx, r8
jge 0x14004b1d6
mov rcx, qword [rdi + 0x18]
sub r8, rbx
lea rdx, [rcx + rbx]
call fcn.1401f7d40
mov rdx, qword [rdi + 0x28]
cmp rdx, rbx
je 0x14004b1d6
sub rdx, rbx
mov rcx, rdi
call fcn.14004d940
mov r13, qword [rdi + 0x28]
mov qword [rbp - 0x58], r13
jmp 0x14004b1fb
mov rdx, qword [rdi + 0x18]
test rdx, rdx
je 0x14004b1e8
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
mov qword [rdi + 0x18], r15
mov qword [rdi + 0x20], r15
mov qword [rbp - 0x58], r15
mov r13, r15
mov qword [rdi + 0x28], r15
cmp r13, 2
jb 0x14004b215
mov rax, qword [rdi + 0x18]
cmp word [rax + r13 - 2], r15w
jne 0x14004b215
lea rax, [r13 - 2]
mov qword [rdi + 0x28], rax
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rsp + 0x38], rax
lea rbx, vtable.CVolObject.0
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x48], r15
lea rax, vtable.CVolMem.0
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x60], r15
mov qword [rsp + 0x58], r15
mov eax, 0x40
mov qword [rsp + 0x68], rax
mov qword [rbp - 0x50], 1
mov dword [rsp + 0x30], r15d
mov qword [rsp + 0x28], r15
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
je 0x14004b463
cmp dword [rsp + 0x30], 0
je 0x14004b46d
mov dword [rsp + 0x30], r15d
mov qword [rsp + 0x20], r15
lea r9, [rsp + 0x30]
mov r8d, 0x400
lea rdx, [rbp - 0x40]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x14004b469
mov eax, dword [rsp + 0x30]
test eax, eax
je 0x14004b46d
mov ebx, eax
mov rdx, qword [rsp + 0x58]
mov rax, rdx
mov r14, qword [rsp + 0x60]
sub rax, r14
cmp rax, rbx
jl 0x14004b35d
cmp rbx, 1
jne 0x14004b306
mov rcx, qword [rsp + 0x50]
movzx eax, byte [rbp - 0x40]
mov byte [r14 + rcx], al
inc qword [rsp + 0x60]
jmp 0x14004b42f
cmp rbx, 2
jne 0x14004b324
mov rcx, qword [rsp + 0x50]
movzx eax, word [rbp - 0x40]
mov word [r14 + rcx], ax
add qword [rsp + 0x60], rbx
jmp 0x14004b42f
cmp rbx, 4
jne 0x14004b340
mov rcx, qword [rsp + 0x50]
mov eax, dword [rbp - 0x40]
mov dword [r14 + rcx], eax
add qword [rsp + 0x60], rbx
jmp 0x14004b42f
cmp rbx, 8
jne 0x14004b35d
mov rcx, qword [rsp + 0x50]
mov rax, qword [rbp - 0x40]
mov qword [r14 + rcx], rax
add qword [rsp + 0x60], rbx
jmp 0x14004b42f
test rbx, rbx
je 0x14004b42f
lea rsi, [r14 + rbx]
cmp rsi, r14
jne 0x14004b379
mov rcx, qword [rsp + 0x50]
jmp 0x14004b420
test rsi, rsi
jne 0x14004b3a9
mov rdx, qword [rsp + 0x50]
test rdx, rdx
je 0x14004b395
lea rcx, [rsp + 0x38]
mov rax, qword [rsp + 0x38]
call qword [rax + 0x18]
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x60], r15
mov qword [rsp + 0x58], r15
mov rcx, r15
jmp 0x14004b420
mov rcx, qword [rsp + 0x50]
test rcx, rcx
jne 0x14004b3c2
mov rdx, rsi
lea rcx, [rsp + 0x38]
call fcn.14004d8c0
jmp 0x14004b41d
mov r15, qword [rsp + 0x68]
test r15, r15
mov eax, 0x40
cmovle r15, rax
cmp rdx, rsi
jl 0x14004b3ea
sub rdx, rsi
cmp rdx, r15
jg 0x14004b3ea
mov qword [rsp + 0x60], rsi
xor r15d, r15d
jmp 0x14004b420
mov rax, rsi
cqo
idiv r15
sub r15, rdx
add r15, rsi
mov r8, r15
mov rdx, rcx
lea rcx, [rsp + 0x38]
mov rax, qword [rsp + 0x38]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], r15
mov qword [rsp + 0x60], rsi
xor r15d, r15d
mov rcx, rax
add rcx, r14
mov r8, rbx
lea rdx, [rbp - 0x40]
call fcn.1401f7d40
mov dword [rsp + 0x30], r15d
mov qword [rsp + 0x28], r15
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
jne 0x14004b291
lea rbx, vtable.CVolObject.0
mov qword [rbp - 0x50], r15
jmp 0x14004b474
mov qword [rbp - 0x50], r15
lea rbx, vtable.CVolObject.0
mov r14, qword [rsp + 0x60]
test r14, r14
je 0x14004b7d3
mov rdx, qword [rsp + 0x58]
mov rax, rdx
sub rax, r14
cmp rax, 4
jl 0x14004b4a7
mov rax, qword [rsp + 0x50]
mov dword [r14 + rax], r15d
add qword [rsp + 0x60], 4
jmp 0x14004b55f
lea rbx, [r14 + 4]
cmp rbx, r14
jne 0x14004b4ba
mov rcx, qword [rsp + 0x50]
jmp 0x14004b55b
test rbx, rbx
jne 0x14004b4ea
mov rdx, qword [rsp + 0x50]
test rdx, rdx
je 0x14004b4d6
lea rcx, [rsp + 0x38]
mov rax, qword [rsp + 0x38]
call qword [rax + 0x18]
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x60], r15
mov qword [rsp + 0x58], r15
mov rcx, r15
jmp 0x14004b55b
mov rcx, qword [rsp + 0x50]
test rcx, rcx
jne 0x14004b503
mov rdx, rbx
lea rcx, [rsp + 0x38]
call fcn.14004d8c0
jmp 0x14004b558
mov rsi, qword [rsp + 0x68]
test rsi, rsi
mov eax, 0x40
cmovle rsi, rax
cmp rdx, rbx
jl 0x14004b528
sub rdx, rbx
cmp rdx, rsi
jg 0x14004b528
mov qword [rsp + 0x60], rbx
jmp 0x14004b55b
mov rax, rbx
cqo
idiv rsi
sub rsi, rdx
add rsi, rbx
mov r8, rsi
mov rdx, rcx
lea rcx, [rsp + 0x38]
mov rax, qword [rsp + 0x38]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], rbx
mov rcx, rax
mov dword [rcx + r14], r15d
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rsp + 0x70], rax
lea rax, vtable.CVolObject.0
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], r15
mov qword [rbp - 0x80], r15
lea rax, vtable.CVolMem.0
mov qword [rsp + 0x70], rax
mov qword [rbp - 0x78], r15
mov qword [rbp - 0x68], r15
mov qword [rbp - 0x70], r15
mov eax, 0x40
mov qword [rbp - 0x60], rax
lea rsi, [rax - 0x41]
cmp qword [rsp + 0x60], 0
je 0x14004b6f8
mov r13, qword [rsp + 0x50]
test r13, r13
je 0x14004b6f8
cmp byte [r13], 0
je 0x14004b6f8
mov r15, rsi
nop dword [rax]
lea r15, [r15 + 1]
cmp byte [r15 + r13], 0
jne 0x14004b5d0
xor ebx, ebx
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rbx
lea r9d, [r15 + 1]
mov r8, r13
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
cdqe
mov qword [rsp + 0x30], rax
lea r12, [rax + rax]
mov r14, qword [rbp - 0x78]
test r14, r14
je 0x14004b684
cmp r12, qword [rbp - 0x68]
je 0x14004b6ca
test r12, r12
jne 0x14004b63a
mov rdx, r14
lea rcx, [rsp + 0x70]
mov rax, qword [rsp + 0x70]
call qword [rax + 0x18]
mov qword [rbp - 0x78], rbx
mov qword [rbp - 0x68], rbx
mov r14d, ebx
jmp 0x14004b6c6
mov rbx, qword [rbp - 0x60]
test rbx, rbx
mov eax, 0x40
cmovle rbx, rax
mov rax, qword [rbp - 0x70]
cmp rax, r12
jl 0x14004b661
sub rax, r12
cmp rax, rbx
jg 0x14004b661
mov qword [rbp - 0x68], r12
jmp 0x14004b6ca
mov rax, r12
cqo
idiv rbx
sub rbx, rdx
add rbx, r12
mov r8, rbx
mov rdx, r14
lea rcx, [rsp + 0x70]
mov rax, qword [rsp + 0x70]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14004b6bb
test r12, r12
jne 0x14004b68e
mov r14, rbx
jmp 0x14004b6ca
mov rbx, qword [rbp - 0x60]
test rbx, rbx
mov eax, 0x40
cmovle rbx, rax
mov rax, r12
cqo
idiv rbx
sub rbx, rdx
add rbx, r12
mov rdx, rbx
lea rcx, [rsp + 0x70]
mov rax, qword [rsp + 0x70]
call qword [rax]
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x68], r12
mov r14, rax
mov qword [rbp - 0x70], rbx
mov rax, qword [rsp + 0x30]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r14
lea r9d, [r15 + 1]
mov r8, r13
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jle 0x14004b6f8
test r14, r14
je 0x14004b790
jmp 0x14004b6ff
lea r14, [0x14027cc90]
movzx ecx, word [r14]
test cx, cx
je 0x14004b790
nop dword [rax]
inc rsi
cmp word [r14 + rsi*2], 0
jne 0x14004b710
add rsi, rsi
mov rbx, qword [rdi + 0x28]
mov rax, qword [rdi + 0x20]
sub rax, rbx
cmp rax, rsi
jl 0x14004b76f
cmp rsi, 2
jne 0x14004b742
mov rax, qword [rdi + 0x18]
mov word [rbx + rax], cx
add qword [rdi + 0x28], rsi
jmp 0x14004b790
cmp rsi, 4
jne 0x14004b758
mov ecx, dword [r14]
mov rax, qword [rdi + 0x18]
mov dword [rbx + rax], ecx
add qword [rdi + 0x28], rsi
jmp 0x14004b790
cmp rsi, 8
jne 0x14004b76f
mov rcx, qword [r14]
mov rax, qword [rdi + 0x18]
mov qword [rbx + rax], rcx
add qword [rdi + 0x28], rsi
jmp 0x14004b790
test rsi, rsi
jle 0x14004b790
lea rdx, [rbx + rsi]
mov rcx, rdi
call fcn.14004d940
lea rcx, [rbx + rax]
mov r8, rsi
mov rdx, r14
call fcn.1401f7d40
nop
lea r12, vtable.CVolMem.0
mov qword [rsp + 0x70], r12
mov rdx, qword [rbp - 0x78]
test rdx, rdx
je 0x14004b7b2
lea rcx, [rsp + 0x70]
mov rax, qword [rsp + 0x70]
call qword [rax + 0x18]
xor r15d, r15d
mov qword [rbp - 0x78], r15
mov qword [rbp - 0x68], r15
mov qword [rbp - 0x70], r15
lea rbx, vtable.CVolObject.0
mov qword [rsp + 0x70], rbx
mov r13, qword [rbp - 0x58]
jmp 0x14004b7da
lea r12, vtable.CVolMem.0
mov rcx, qword [rbp - 0x48]
test rcx, rcx
je 0x14004b7ed
mov rax, qword [rdi + 0x28]
sub rax, r13
mov qword [rcx], rax
mov rdx, qword [rdi + 0x20]
mov r14, qword [rdi + 0x28]
mov rax, rdx
sub rax, r14
cmp rax, 2
jl 0x14004b814
mov rax, qword [rdi + 0x18]
mov word [r14 + rax], r15w
add qword [rdi + 0x28], 2
jmp 0x14004b8c8
lea rsi, [r14 + 2]
mov rcx, qword [rdi + 0x18]
cmp rsi, r14
je 0x14004b8c3
test rsi, rsi
jne 0x14004b84c
test rcx, rcx
je 0x14004b83b
mov rax, qword [rdi]
mov rdx, rcx
mov rcx, rdi
call qword [rax + 0x18]
mov qword [rdi + 0x18], r15
mov qword [rdi + 0x28], r15
mov qword [rdi + 0x20], r15
mov rcx, r15
jmp 0x14004b8c3
mov rbx, qword [rdi + 0x30]
mov eax, 0x40
test rcx, rcx
jne 0x14004b87c
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 0x14004b8ad
test rbx, rbx
cmovle rbx, rax
cmp rdx, rsi
jl 0x14004b890
sub rdx, rsi
cmp rdx, rbx
jle 0x14004b8b8
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.OLEAUT32.dll_SafeArrayGetDim]
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], r15w
mov qword [rsp + 0x38], r12
mov rdx, qword [rsp + 0x50]
test rdx, rdx
je 0x14004b8e5
lea rcx, [rsp + 0x38]
mov r8, qword [rsp + 0x38]
call qword [r8 + 0x18]
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x60], r15
mov qword [rsp + 0x58], r15
mov qword [rsp + 0x38], rbx
mov rax, qword [rbp - 0x50]
mov rcx, qword [rbp + 0x3c0]
xor rcx, rsp
call fcn.1401f5cf0
mov rbx, qword [rsp + 0x518]
add rsp, 0x4d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret