Function at 0x4225a1
Capabilities:
Check if file exists
Get file size
Read file on windows

Disassembly:
push 0xf4
mov eax, 0x5a1a56
call fcn.004348d9
mov edi, dword [ebp + 8]
xor esi, esi
mov dword [ebp - 0xf4], edi
mov dword [ebp - 0xfc], esi
push esi
xor eax, eax
mov dword [ebp - 4], esi
push 0x61f778
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 7
mov dword [ebp - 0x18], esi
mov word [ebp - 0x28], ax
call fcn.00401a60
lea ecx, [ebp - 0xe4]
mov byte [ebp - 4], 1
call fcn.004416fd
call fcn.0043aa79
test al, al
je 0x42260c
invalid
cmp dword [ebp + 0x20], 8
lea eax, [ebp + 0xc]
cmovae eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x422897
cmp dword [ebp + 0x20], 8
lea eax, [ebp + 0xc]
push esi
cmovae eax, dword [ebp + 0xc]
push 0x80
push 4
push esi
push 1
push accept
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
mov dword [ebp - 0xe8], ebx
cmp ebx, 0xffffffff
jne 0x422666
invalid
inc dword [ebx + 0x1175fffb]
push 0x61f778
mov ecx, edi
call fcn.00401870
jmp 0x4228a2
call fcn.0043a446
test al, al
je 0x422687
jne 0x42264e
push es
ret 0x38b2
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0xec], eax
inc eax
push eax
mov dword [ebp - 0xf8], eax
call fcn.004341c5
mov dword [ebp - 0xf0], eax
pop ecx
test eax, eax
je 0x422655
call fcn.0043a8db
test al, al
je 0x4226d3
jne 0x42264f
dec ebx
add dword [ebx + edx*8 - 0x490c74b2], edx
aad 0xc9
fisttp dword [eax + 0x33]
mov ah, dh
jno 0x4226f9
invalid
call fcn.0043a9ef
test al, al
je 0x4226fa
xlatb
fnstcw word [edi + 0x76]
xchg dword [edx - 0x1a36f5c0], esi
mov dl, 0x4c
cmp ebx, dword [ebx - 3]
dec esi
mov cl, 0xee
pop ebx
dec edx
test ecx, edx
lds ecx, [edx + 0x3c]
adc al, 0xb4
mov bl, dl
invalid
push dword [ebp - 0xf8]
mov esi, dword [ebp - 0xf0]
push 0
push esi
call fcn.00445350
add esp, 0xc
lea eax, [ebp - 0x100]
push 0
push eax
push dword [ebp - 0xec]
push esi
push dword [ebp - 0xe8]
call dword [sym.imp.KERNEL32.dll_ReadFile]
call fcn.0043a851
test al, al
je 0x42274d
sub edx, dword [edi - 0x55]
cmp esi, dword [edi + ecx + 0x71d7390c]
pop ds
adc al, 0xb2
mov ecx, 0x816b097b
xor al, 0x2b
mov ebp, 0x92e8ba6b
jle 0x422752
call fcn.0043a5e4
add byte [eax + eax*8 + 0x16051874], al
cld
fld qword es:[ebx]
mov al, byte [0x96256c1e]
test al, al
je 0x42276e
add eax, 0xdd26fc16
add esp, dword [eax - 0x69da93e2]
wait
xchg esi, eax
push eax
test esp, esp
mov ecx, 0x2dfc0478
mov edx, dword [ebx]
popal
call fcn.0043a66e
test al, al
je 0x42278f
jl 0x422777
pop es
and ebx, dword [edx + 0x6458b6bb]
cmc
imul esp, edi, 0x31a66b6b
jnp 0x42278a
pop ebx
xor bh, byte [ebp - 0x73]
das
and al, 0xff
mov ch, 0x18
push dword [ebp - 0xe8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0xec]
mov ebx, dword [ebp - 0xf0]
lea ecx, [ebp - 0xe4]
push ebx
call fcn.004420cb
push ebx
call fcn.004341c0
pop ecx
call fcn.0043a80c
test al, al
je 0x4227d5
iretd
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0xe4]
call fcn.00441916
push eax
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 2
push eax
call fcn.004250cb
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 4
call fcn.00401c80
call fcn.0043a7c7
test al, al
je 0x422821
sbb eax, 0x9df31dda
xchg edx, eax
mov dh, 0x4a
dec edx
nop
movsb byte es:[edi], byte [esi]
sbb eax, 0x379706c
cmpsb byte [esi], byte es:[edi]
inc esi
test ebx, 0x7dbee88e
add dword [eax], eax
call fcn.0043a5e4
test al, al
je 0x422848
sub ecx, dword [edx - 0x6c]
push ebp
adc al, 0xa8
pop ecx
mov al, byte [0x8ce]
pop ebx
neg bh
outsb dx, byte [esi]
or eax, 0x9d85713a
mov ch, 0xb2
lodsd eax, dword [esi]
adc dword [ebx], esi
loopne 0x422882
adc byte [ebp - 0x18], 0x66
jle 0x42284d
call fcn.0043a6b3
add byte [eax + eax*8 - 0x3e8de08c], al
test al, al
je 0x422870
jb 0x422814
loope 0x4228a4
add esi, dword [edx]
ljmp 0x970c
xor esi, esi
cmp dword [ebp - 0x30], esi
jbe 0x422886
push 0xffffffffffffffff
push esi
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x28]
call fcn.00401b60
invalid
push esi
push 1
lea ecx, [ebp - 0x40]
call fcn.004019a0
mov edi, dword [ebp - 0xf4]
lea eax, [ebp - 0x28]
mov ecx, edi
push eax
call fcn.00408f80
push esi
push 1
lea ecx, [ebp - 0x28]
call fcn.004019a0
push esi
push 1
lea ecx, [ebp + 0xc]
call fcn.004019a0
mov eax, edi
call fcn.00434894
ret
add dword [ebp - 0xc1727b3], ecx
invalid