Function at 0x4150d0
Capabilities:
Get file size
Read file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov ecx, dword [eax]
push edi
xor edi, edi
mov dword [esp + 0x1c], edi
mov ebx, edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], edi
add ecx, 0x628
je 0x41511d
mov eax, dword [esi + 4]
mov eax, dword [eax]
add eax, 0x628
je 0x41511d
push eax
push ecx
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x41511d
inc edi
jmp 0x41531d
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
add ecx, 0xe60
cmp word [ecx], di
je 0x41531d
mov eax, dword [esi + 4]
mov eax, dword [eax]
cmp word [eax + 0xe60], di
je 0x41531d
push edi
push 0x80
push 3
push edi
push 1
push SysReAllocStringLen
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esp + 0x14], eax
cmp eax, 0xffffffff
jne 0x4151b5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x41531d
test byte [eax + 0x1c], 8
je 0x41531d
cmp byte [eax + 0x19], 2
jb 0x41531d
push ecx
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
mov edx, 0x401ef8
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x1c
pop ecx
call fcn.00412c68
jmp 0x41531d
mov eax, dword [esi + 4]
push edi
push 0x80
push 3
mov eax, dword [eax]
push edi
push 1
add eax, 0xe60
push SysReAllocStringLen
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esp + 0x18], eax
cmp eax, 0xffffffff
jne 0x415231
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x4152ed
test byte [eax + 0x1c], 8
je 0x4152ed
cmp byte [eax + 0x19], 2
jb 0x4152ed
push ecx
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
mov edx, 0x401ef8
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x1d
pop ecx
call fcn.00412c68
jmp 0x4152ed
mov esi, dword [sym.imp.KERNEL32.dll_GetFileSize]
push edi
push dword [esp + 0x18]
call esi
push edi
push dword [esp + 0x1c]
mov ebx, eax
call esi
mov esi, eax
mov dword [esp + 0x24], esi
cmp ebx, esi
jne 0x41529a
push ebx
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x41529e
mov ecx, dword [0x46a020]
cmp ecx, 0x46a020
je 0x41529a
test byte [ecx + 0x1c], 8
je 0x41529a
cmp byte [ecx + 0x19], 2
jb 0x41529a
call fcn.00411040
push eax
mov eax, dword [0x46a020]
mov edx, 0x401ef8
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x1e
pop ecx
call fcn.004110b1
mov ebx, edi
jmp 0x4152ed
push esi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov esi, eax
mov dword [esp + 0xc], esi
test esi, esi
jne 0x415328
mov ecx, dword [0x46a020]
cmp ecx, 0x46a020
je 0x4152e9
test byte [ecx + 0x1c], 8
je 0x4152e9
cmp byte [ecx + 0x19], 2
jb 0x4152e9
call fcn.00411040
push eax
mov eax, dword [0x46a020]
mov edx, 0x401ef8
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x1f
pop ecx
call fcn.004110b1
mov ebx, dword [esp + 0xc]
push dword [esp + 0x14]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov eax, dword [esp + 0x18]
cmp eax, 0xffffffff
je 0x415305
push eax
call esi
mov eax, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_LocalFree]
test eax, eax
je 0x415316
push eax
call esi
test ebx, ebx
je 0x41531d
push ebx
call esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push edi
lea eax, [esp + 0x20]
push eax
push ebx
push dword [esp + 0x1c]
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x415387
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x46a020]
cmp ecx, 0x46a020
je 0x4152e9
test byte [ecx + 0x1c], 8
je 0x4152e9
cmp byte [ecx + 0x19], 2
jb 0x4152e9
push eax
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x20
mov edx, 0x401ef8
pop ecx
call fcn.00412c68
jmp 0x4152e9
push edi
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x2c]
push esi
push dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x4153e4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x46a020]
cmp ecx, 0x46a020
je 0x4152e9
test byte [ecx + 0x1c], 8
je 0x4152e9
cmp byte [ecx + 0x19], 2
jb 0x4152e9
push eax
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x21
jmp 0x415377
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x20]
jne 0x4152e9
cmp eax, ebx
jne 0x4152e9
push ebx
push esi
push dword [esp + 0x18]
call sub.msvcrt.dll_memcmp
mov ebx, dword [esp + 0x18]
add esp, 0xc
test eax, eax
jne 0x4152ed
xor edi, edi
inc edi
jmp 0x4152ed