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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x218
mov eax, dword [0x41b004]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push esi
push str.Setup.ini
push 0x41cdfc
lea ecx, [ebp - 0x208]
push 0x417c5c
push ecx
mov dword [ebp - 0x20c], eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
lea edx, [ebp - 0x208]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x40645b
mov eax, dword [0x41cd90]
push 0x30
push str.file_open_error
push str._0x10010001_
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040aabb
mov esp, ebp
pop ebp
ret
push ebx
push edi
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
lea ecx, [ebx + 1]
push ecx
call fcn.0040ae25
mov edi, eax
add esp, 4
mov dword [ebp - 0x214], edi
test edi, edi
jne 0x4064b3
mov edx, dword [0x41cd90]
push 0x30
push str.memory_allocate_error
push str._0x10010002_
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop ebx
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040aabb
mov esp, ebp
pop ebp
ret
push 0
lea eax, [ebp - 0x218]
push eax
push ebx
push edi
push esi
mov byte [edi + ebx], 0
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x406509
mov ecx, dword [0x41cd90]
push 0x30
push str.read_error
push str._0x10010003_
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
push edi
call fcn.0040adeb
add esp, 4
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop ebx
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040aabb
mov esp, ebp
pop ebp
ret
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x4189a0
push edi
call fcn.0040aec0
mov esi, eax
add esp, 8
test esi, esi
je 0x4067e7
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x4189a0
call ebx
sub esi, edi
add esi, eax
add esi, edi
push 0x4189e0
push esi
mov dword [ebp - 0x210], esi
call fcn.0040aec0
mov edi, eax
add esp, 8
test edi, edi
je 0x4065c8
push 0x4189e0
call ebx
lea esi, [edi + eax]
push esi
call ebx
mov byte [ebp - 0x104], 0
mov cl, byte [esi]
test cl, cl
je 0x406592
lea eax, [ebp - 0x104]
mov edx, eax
sub esi, edx
lea esp, [esp]
cmp cl, 0x3b
je 0x406592
mov byte [eax], cl
inc eax
mov byte [eax], 0
mov cl, byte [esi + eax]
test cl, cl
jne 0x406580
push 0x4189e4
mov eax, 0x100
lea ecx, [ebp - 0x104]
call fcn.0040a280
lea eax, [ebp - 0x104]
push eax
call fcn.0040aba0
mov ecx, dword [ebp - 0x20c]
mov esi, dword [ebp - 0x210]
add esp, 8
mov dword [ecx + 0x430], eax
push str.CPU:
push esi
call fcn.0040aec0
mov edi, eax
add esp, 8
test edi, edi
je 0x406648
push str.CPU:
call ebx
lea esi, [edi + eax]
push esi
call ebx
mov byte [ebp - 0x104], 0
mov cl, byte [esi]
test cl, cl
je 0x406612
lea eax, [ebp - 0x104]
mov edx, eax
sub esi, edx
cmp cl, 0x3b
je 0x406612
mov byte [eax], cl
inc eax
mov byte [eax], 0
mov cl, byte [esi + eax]
test cl, cl
jne 0x406600
push 0x4189e4
mov eax, 0x100
lea ecx, [ebp - 0x104]
call fcn.0040a280
lea eax, [ebp - 0x104]
push eax
call fcn.0040aba0
mov ecx, dword [ebp - 0x20c]
mov esi, dword [ebp - 0x210]
add esp, 8
mov dword [ecx + 0x434], eax
push str.MEMORY:
push esi
call fcn.0040aec0
mov edi, eax
add esp, 8
test edi, edi
je 0x4066c8
push str.MEMORY:
call ebx
lea esi, [edi + eax]
push esi
call ebx
mov byte [ebp - 0x104], 0
mov cl, byte [esi]
test cl, cl
je 0x406692
lea eax, [ebp - 0x104]
mov edx, eax
sub esi, edx
cmp cl, 0x3b
je 0x406692
mov byte [eax], cl
inc eax
mov byte [eax], 0
mov cl, byte [esi + eax]
test cl, cl
jne 0x406680
push 0x4189e4
mov eax, 0x100
lea ecx, [ebp - 0x104]
call fcn.0040a280
lea eax, [ebp - 0x104]
push eax
call fcn.0040aba0
mov ecx, dword [ebp - 0x20c]
mov esi, dword [ebp - 0x210]
add esp, 8
mov dword [ecx + 0x438], eax
push str.DIRECTX:
push esi
call fcn.0040aec0
mov edi, eax
add esp, 8
test edi, edi
je 0x406748
push str.DIRECTX:
call ebx
lea esi, [edi + eax]
push esi
call ebx
mov byte [ebp - 0x104], 0
mov cl, byte [esi]
test cl, cl
je 0x406712
lea eax, [ebp - 0x104]
mov edx, eax
sub esi, edx
cmp cl, 0x3b
je 0x406712
mov byte [eax], cl
inc eax
mov byte [eax], 0
mov cl, byte [esi + eax]
test cl, cl
jne 0x406700
push 0x4189e4
mov eax, 0x100
lea ecx, [ebp - 0x104]
call fcn.0040a280
lea eax, [ebp - 0x104]
push eax
call fcn.0040aba0
mov ecx, dword [ebp - 0x20c]
mov esi, dword [ebp - 0x210]
add esp, 8
mov dword [ecx + 0x43c], eax
push str.VRAM:
push esi
call fcn.0040aec0
mov edi, eax
add esp, 8
test edi, edi
je 0x4067c2
push str.VRAM:
call ebx
lea esi, [edi + eax]
push esi
call ebx
mov byte [ebp - 0x104], 0
mov cl, byte [esi]
test cl, cl
je 0x406792
lea eax, [ebp - 0x104]
mov edx, eax
sub esi, edx
cmp cl, 0x3b
je 0x406792
mov byte [eax], cl
inc eax
mov byte [eax], 0
mov cl, byte [esi + eax]
test cl, cl
jne 0x406780
push 0x4189e4
mov eax, 0x100
lea ecx, [ebp - 0x104]
call fcn.0040a280
lea eax, [ebp - 0x104]
push eax
call fcn.0040aba0
mov ecx, dword [ebp - 0x20c]
add esp, 8
mov dword [ecx + 0x440], eax
mov edx, dword [ebp - 0x214]
push edx
call fcn.0040adeb
add esp, 4
pop edi
pop ebx
mov eax, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040aabb
mov esp, ebp
pop ebp
ret
mov eax, dword [0x41cd90]
push 0x30
push str.ini_file_error
push str._spec_
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
push edi
call fcn.0040adeb
mov ecx, dword [ebp - 4]
add esp, 4
pop edi
pop ebx
xor ecx, ebp
xor eax, eax
pop esi
call fcn.0040aabb
mov esp, ebp
pop ebp
ret