Function at 0x1002ec10
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x94
mov eax, dword [0x1009c00c]
xor eax, ebp
mov dword [ebp - 4], eax
mov dl, byte [ebp + 0x10]
mov eax, str.true
push ebx
push esi
mov esi, dword [ebp + 8]
test dl, dl
push edi
mov dword [ebp - 0x78], ecx
mov edi, str.false
mov ecx, dword [ebp + 0xc]
cmove eax, edi
push eax
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x6c], ecx
push dword [ecx]
mov byte [ebp - 0x6d], dl
push esi
push 0x229
push str.CVPserIO::Read
push str.VPserIO.cpp
push str._s_:__s_:__d_:_pbuf_0x_x__count__d__bTOisErr__s_r_n
call fcn.10032e90
add esp, 0x1c
xor ebx, ebx
test esi, esi
jne 0x1002ec86
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100417b6
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ebp - 0x6c]
xorps xmm0, xmm0
mov edx, dword [ebp - 0x78]
xor esi, esi
mov edi, 1
mov dword [ebp - 0x74], ebx
movlpd qword [ebp - 0x94], xmm0
mov ecx, dword [eax]
mov eax, dword [edx + 0x40]
mov dword [ebp - 0x80], ecx
movlpd qword [ebp - 0x8c], xmm0
mov dword [ebp - 0x84], eax
test ecx, ecx
je 0x1002ed7d
nop
test edi, edi
je 0x1002ed7d
lea eax, [ebp - 0x94]
sub ecx, esi
push eax
lea eax, [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x7c]
push ecx
add eax, esi
push eax
push dword [edx + 0x3c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x1002ed15
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
je 0x1002ed0d
push eax
push str.CVPserIO::Read_:_ReadFile_Error__d_:
call fcn.10032d70
add esp, 8
mov ebx, 4
xor edi, edi
jmp 0x1002ed5e
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [ebp - 0x78]
lea eax, [ebp - 0x74]
push 1
push eax
lea eax, [ebp - 0x94]
push eax
push dword [ecx + 0x3c]
call dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
test eax, eax
jne 0x1002ed5e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e4
je 0x1002ed56
push eax
push str.CVPserIO::Read_:_GetOverlappedResult_Error__d_:
call fcn.10032d70
add esp, 8
mov ebx, 4
xor edi, edi
jmp 0x1002ed5e
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x1002ee1d
test edi, edi
je 0x1002ed6f
add esi, eax
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x78]
cmp esi, ecx
jb 0x1002ecc0
mov eax, dword [ebp - 0x6c]
push esi
push dword [eax]
push str.CVPserIO::Read
push str._s_:_Requested__d__Actual__d_r_n
call fcn.10032e90
mov eax, dword [ebp - 0x6c]
add esp, 0x10
mov dword [eax], esi
test esi, esi
je 0x1002ee01
cmp word [0x100a812c], 3
jb 0x1002ee01
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push str.__08x__:
lea eax, [ebp - 0x68]
push 0x64
push eax
call fcn.10002400
mov ecx, dword [ebp - 0x7c]
add esp, 4
mov edx, esi
call fcn.100331b0
add esp, 0xc
lea eax, [ebp - 0x68]
push 0x1007caa0
push 0x100a8130
push str.CVPserIO::Read
push eax
push str._s_s__r_n_s_s
push 1
call fcn.100474ec
add esp, 4
push eax
call fcn.10002360
add esp, 0x18
mov byte [0x100a8130], 0
mov ecx, dword [ebp - 4]
xor eax, eax
test edi, edi
pop edi
cmovne ebx, eax
xor ecx, ebp
pop esi
mov eax, ebx
pop ebx
call fcn.100417b6
mov esp, ebp
pop ebp
ret 0xc
test esi, esi
jne 0x1002ed7d
mov eax, dword [ebp - 0x6c]
cmp dword [eax], esi
je 0x1002ed80
cmp byte [ebp - 0x6d], 0
je 0x1002ed80
push esi
push dword [eax]
xor edi, edi
lea ebx, [esi + 2]
push str.CVPserIO::Read
push str._s_:_Requested__d__Actual__d_r_n
call fcn.10032e90
mov eax, dword [ebp - 0x6c]
add esp, 0x10
mov dword [eax], esi
jmp 0x1002ee01