Function at 0x4025f0
Capabilities:
Get file size
Link many functions at runtime
Read .ini file
Read file on windows
Set current directory

Disassembly:
push ebp
mov ebp, esp
mov eax, reloc.MSVCR80.dll___0exception_std__QAE_ABV01__Z
call fcn.004055d0
call fcn.00401030
mov dword [ebp - 0xefbc], eax
mov eax, dword [0x4071bc]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0xea74], eax
mov ecx, dword [0x4071f4]
push ecx
mov edx, dword [ebp - 0xefbc]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [fcn.0040de7c], eax
mov eax, dword [0x407200]
push eax
mov ecx, dword [ebp - 0xea74]
push ecx
call dword [fcn.0040de7c]
mov dword [0x40de64], eax
lea edx, [ebp - 0xf2d8]
push edx
call fcn.004023f0
add esp, 4
mov dword [ebp - 0xefc0], eax
lea eax, [ebp - 0xf2d8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0xf2d8]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 0xea70], eax
lea edx, [ebp - 0xf2d8]
push edx
lea eax, [ebp - 0xed98]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, dword [0x407224]
push ecx
lea edx, [ebp - 0xed98]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0xed98]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
jne 0x4026c0
xor eax, eax
jmp 0x403198
mov ecx, dword [ebp - 0xea70]
mov byte [ebp + ecx - 0xed98], 0
mov edx, dword [0x407228]
push edx
lea eax, [ebp - 0xed98]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [ebp - 0xed98]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
jne 0x4026fa
xor eax, eax
jmp 0x403198
mov edx, dword [ebp - 0xea70]
mov byte [ebp + edx - 0xed98], 0
mov eax, dword [0x40722c]
push eax
lea ecx, [ebp - 0xed98]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [ebp - 0xed98]
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
jne 0x402733
xor eax, eax
jmp 0x403198
mov eax, dword [ebp - 0xea70]
mov byte [ebp + eax - 0xed98], 0
mov ecx, dword [0x407230]
push ecx
lea edx, [ebp - 0xed98]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0xed98]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
jne 0x40276d
xor eax, eax
jmp 0x403198
mov ecx, dword [ebp - 0xea70]
mov byte [ebp + ecx - 0xed98], 0
mov edx, dword [0x407234]
push edx
lea eax, [ebp - 0xed98]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [ebp - 0xed98]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0xefb4], eax
cmp dword [ebp - 0xefb4], 0
jne 0x4027b2
xor eax, eax
jmp 0x403198
mov edx, dword [0x407238]
push edx
mov eax, dword [ebp - 0xefb4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40de94], eax
mov ecx, dword [0x40723c]
push ecx
mov edx, dword [ebp - 0xefb4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40e5bc], eax
mov eax, dword [0x407240]
push eax
mov ecx, dword [ebp - 0xefb4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40de70], eax
mov edx, dword [0x407244]
push edx
mov eax, dword [ebp - 0xefb4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40dfdc], eax
mov ecx, dword [0x407248]
push ecx
mov edx, dword [ebp - 0xefb4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40de98], eax
mov eax, dword [0x407260]
push eax
mov ecx, dword [ebp - 0xefb4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40e48c], eax
mov edx, dword [0x40724c]
push edx
mov eax, dword [ebp - 0xefb4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x40de88], eax
push 0
push 0x1a
lea ecx, [ebp - 0xf1c8]
push ecx
mov edx, dword [ebp - 0xf1cc]
push edx
call dword [0x40de64]
test eax, eax
jne 0x402882
xor eax, eax
jmp 0x403198
lea eax, [ebp - 0xf1c8]
push eax
lea ecx, [ebp - 0xec90]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [0x407204]
push edx
lea eax, [ebp - 0xec90]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [ebp - 0xec90]
push ecx
push 0x104
lea edx, [ebp - 0xeb80]
push edx
push 0
mov eax, dword [0x40720c]
push eax
mov ecx, dword [0x407208]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0xf2dc], 0
jmp 0x4028ed
mov edx, dword [ebp - 0xf2dc]
add edx, 1
mov dword [ebp - 0xf2dc], edx
lea eax, [ebp - 0xeb80]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp dword [ebp - 0xf2dc], eax
jge 0x402925
mov ecx, dword [ebp - 0xf2dc]
movsx edx, byte [ebp + ecx - 0xeb80]
cmp edx, 0x2f
jne 0x402923
mov eax, dword [ebp - 0xf2dc]
mov byte [ebp + eax - 0xeb80], 0x5c
jmp 0x4028de
mov ecx, dword [ebp - 0xefc0]
push ecx
lea edx, [ebp - 0xeb80]
push edx
lea eax, [ebp - 0xf1c8]
push eax
mov ecx, dword [0x407250]
push ecx
lea edx, [ebp - 0xefb0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
lea eax, [ebp - 0xeb80]
push eax
lea ecx, [ebp - 0xf1c8]
push ecx
mov edx, dword [0x407254]
push edx
lea eax, [ebp - 0xeea0]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 1
lea ecx, [ebp - 0xeb80]
push ecx
lea edx, [ebp - 0xf1c8]
push edx
mov eax, dword [0x407250]
push eax
lea ecx, [ebp - 0xefb0]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
push 0
push 0
push 3
push 0
push 1
push 0x80000000
lea edx, [ebp - 0xefb0]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0xeea4], eax
cmp dword [ebp - 0xeea4], 0xffffffff
jne 0x402a76
push 2
lea eax, [ebp - 0xeb80]
push eax
lea ecx, [ebp - 0xf1c8]
push ecx
mov edx, dword [0x407250]
push edx
lea eax, [ebp - 0xefb0]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
push 0
push 0
push 3
push 0
push 1
push 0x80000000
lea ecx, [ebp - 0xefb0]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0xeea4], eax
cmp dword [ebp - 0xeea4], 0xffffffff
jne 0x402a76
push 3
lea edx, [ebp - 0xeb80]
push edx
lea eax, [ebp - 0xf1c8]
push eax
mov ecx, dword [0x407250]
push ecx
lea edx, [ebp - 0xefb0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
push 0
push 0
push 3
push 0
push 1
push 0x80000000
lea eax, [ebp - 0xefb0]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0xeea4], eax
cmp dword [ebp - 0xeea4], 0xffffffff
jne 0x402a76
xor eax, eax
jmp 0x403198
push 0
mov ecx, dword [ebp - 0xeea4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0xea78], eax
cmp dword [ebp - 0xea78], 5
ja 0x402a9b
xor eax, eax
jmp 0x403198
mov edx, dword [ebp - 0xea78]
push edx
call fcn.00405404
add esp, 4
mov dword [ebp - 0xf300], eax
mov eax, dword [ebp - 0xf300]
mov dword [ebp - 0xea6c], eax
mov ecx, dword [ebp - 0xea78]
push ecx
call fcn.00405404
add esp, 4
mov dword [ebp - 0xf304], eax
mov edx, dword [ebp - 0xf304]
mov dword [ebp - 4], edx
mov eax, dword [ebp - 0xea78]
push eax
call fcn.00405404
add esp, 4
mov dword [ebp - 0xf308], eax
mov ecx, dword [ebp - 0xf308]
mov dword [ebp - 0xeb84], ecx
push 0
lea edx, [ebp - 0xefb8]
push edx
mov eax, dword [ebp - 0xea78]
push eax
mov ecx, dword [ebp - 0xea6c]
push ecx
mov edx, dword [ebp - 0xeea4]
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [ebp - 0xeea4]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xea6c]
push ecx
mov edx, dword [ebp - 0xeb84]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [0x4071b4]
push eax
mov ecx, dword [ebp - 0xea6c]
push ecx
call fcn.00402370
add esp, 8
mov edx, dword [0x4071b4]
push edx
push 0
call fcn.00402370
add esp, 8
mov dword [ebp - 4], eax
lea eax, [ebp - 0xeea0]
push eax
call dword [0x40de94]
add esp, 4
test eax, eax
jne 0x403192
call dword [0x40de70]
mov dword [ebp - 0xf1d0], eax
cmp dword [ebp - 0xf1d0], 0
je 0x403192
push 0x40d24c
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [0x407258]
push edx
lea eax, [ebp - 0xea68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x40d250
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edx, dword [0x40725c]
push edx
lea eax, [ebp - 0xea68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x40d254
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edx, dword [0x407258]
push edx
lea eax, [ebp - 0xea68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x40d258
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0
push 1
mov edx, dword [ebp - 0xf1d0]
push edx
call dword [0x40dfdc]
add esp, 0xc
test eax, eax
jne 0x403182
mov dword [ebp - 0xf2e4], 0
mov dword [ebp - 0xf2e8], 0
jmp 0x402c5f
mov eax, dword [ebp - 0xf2e8]
add eax, 1
mov dword [ebp - 0xf2e8], eax
mov ecx, dword [ebp - 0xeb84]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
sub eax, 2
cmp dword [ebp - 0xf2e8], eax
jg 0x402cc6
mov edx, dword [ebp - 0xeb84]
add edx, dword [ebp - 0xf2e8]
movsx eax, byte [edx]
cmp eax, 0xd
jne 0x402cc4
mov ecx, dword [ebp - 0xeb84]
add ecx, dword [ebp - 0xf2e8]
movsx edx, byte [ecx + 1]
cmp edx, 0xa
jne 0x402cc4
mov eax, dword [ebp - 0xeb84]
add eax, dword [ebp - 0xf2e8]
movsx ecx, byte [eax + 2]
cmp ecx, 0x2e
jne 0x402cc4
mov edx, dword [ebp - 0xf2e4]
add edx, 1
mov dword [ebp - 0xf2e4], edx
jmp 0x402c50
mov dword [ebp - 0xf2ec], 0
jmp 0x402ce1
mov eax, dword [ebp - 0xf2ec]
add eax, 1
mov dword [ebp - 0xf2ec], eax
mov ecx, dword [ebp - 0xf2e4]
sub ecx, 1
cmp dword [ebp - 0xf2ec], ecx
jge 0x40315a
push 0x300
call fcn.004031a0
add esp, 4
mov dword [ebp - reloc.MSVCR80.dll___0exception_std__QAE_ABV01__Z], eax
mov edx, dword [ebp - reloc.MSVCR80.dll___0exception_std__QAE_ABV01__Z]
mov dword [ebp - 0xf2f4], edx
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 0xf2e0], eax
mov dword [ebp - 0xea70], 0
jmp 0x402d40
mov ecx, dword [ebp - 0xea70]
add ecx, 1
mov dword [ebp - 0xea70], ecx
mov edx, dword [ebp - 0xea70]
cmp edx, dword [ebp - 0xf2e0]
jge 0x402d90
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0xea70]
movsx ecx, byte [eax]
cmp ecx, 0xd
jne 0x402d75
mov edx, dword [ebp - 4]
add edx, dword [ebp - 0xea70]
movsx eax, byte [edx + 1]
cmp eax, 0xa
jne 0x402d75
jmp 0x402d90
mov ecx, dword [ebp - 0xf2f4]
add ecx, dword [ebp - 0xea70]
mov edx, dword [ebp - 4]
add edx, dword [ebp - 0xea70]
mov al, byte [edx]
mov byte [ecx], al
jmp 0x402d31
mov ecx, dword [ebp - 0xea70]
add ecx, 2
mov dword [ebp - 0xea70], ecx
mov edx, dword [ebp - 4]
add edx, dword [ebp - 0xea70]
movsx eax, byte [edx]
cmp eax, 0xd
jne 0x402dc2
mov ecx, dword [ebp - 4]
add ecx, dword [ebp - 0xea70]
movsx edx, byte [ecx + 1]
cmp edx, 0xa
je 0x402dd3
mov eax, dword [ebp - 0xea70]
add eax, 1
mov dword [ebp - 0xea70], eax
jmp 0x402d9f
mov ecx, dword [ebp - 0xea70]
add ecx, 2
mov dword [ebp - 0xea70], ecx
mov dword [ebp - 0xf2f8], 0
jmp 0x402e0c
mov edx, dword [ebp - 0xea70]
add edx, 1
mov dword [ebp - 0xea70], edx
mov eax, dword [ebp - 0xf2f8]
add eax, 1
mov dword [ebp - 0xf2f8], eax
mov ecx, dword [ebp - 0xea70]
cmp ecx, dword [ebp - 0xf2e0]
jge 0x402e60
mov edx, dword [ebp - 4]
add edx, dword [ebp - 0xea70]
movsx eax, byte [edx]
cmp eax, 0xd
jne 0x402e41
mov ecx, dword [ebp - 4]
add ecx, dword [ebp - 0xea70]
movsx edx, byte [ecx + 1]
cmp edx, 0xa
jne 0x402e41
jmp 0x402e60
mov eax, dword [ebp - 0xf2f4]
add eax, dword [ebp - 0xf2f8]
mov ecx, dword [ebp - 4]
add ecx, dword [ebp - 0xea70]
mov dl, byte [ecx]
mov byte [eax + 0x100], dl
jmp 0x402dee
mov eax, dword [ebp - 0xea70]
add eax, 2
mov dword [ebp - 0xea70], eax
mov ecx, dword [ebp - 4]
add ecx, dword [ebp - 0xea70]
movsx edx, byte [ecx]
cmp edx, 0xd
jne 0x402e92
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0xea70]
movsx ecx, byte [eax + 1]
cmp ecx, 0xa
je 0x402ea3
mov edx, dword [ebp - 0xea70]
add edx, 1
mov dword [ebp - 0xea70], edx
jmp 0x402e6f
mov eax, dword [ebp - 0xea70]
add eax, 2
mov dword [ebp - 0xea70], eax
mov dword [ebp - reloc.MSVCR80.dll___2_YAPAXI_Z], 0
jmp 0x402edc
mov ecx, dword [ebp - 0xea70]
add ecx, 1
mov dword [ebp - 0xea70], ecx
mov edx, dword [ebp - reloc.MSVCR80.dll___2_YAPAXI_Z]
add edx, 1
mov dword [ebp - reloc.MSVCR80.dll___2_YAPAXI_Z], edx
mov eax, dword [ebp - 0xea70]
cmp eax, dword [ebp - 0xf2e0]
jge 0x402f30
mov ecx, dword [ebp - 4]
add ecx, dword [ebp - 0xea70]
movsx edx, byte [ecx]
cmp edx, 0xd
jne 0x402f11
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0xea70]
movsx ecx, byte [eax + 1]
cmp ecx, 0xa
jne 0x402f11
jmp 0x402f30
mov edx, dword [ebp - 0xf2f4]
add edx, dword [ebp - reloc.MSVCR80.dll___2_YAPAXI_Z]
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0xea70]
mov cl, byte [eax]
mov byte [edx + 0x200], cl
jmp 0x402ebe
cmp dword [ebp - 0xefc0], 2
jne 0x402f4f
mov edx, dword [0x4071b4]
push edx
push 0
call fcn.00402370
add esp, 8
mov dword [ebp - 4], eax
jmp 0x402f6b
cmp dword [ebp - 0xefc0], 3
jne 0x402f6b
mov eax, dword [0x40cc88]
push eax
push 0
call fcn.00402370
add esp, 8
mov dword [ebp - 4], eax
mov ecx, dword [0x407258]
push ecx
lea edx, [ebp - 0xea68]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x40d25c
lea eax, [ebp - 0xea68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [ebp - 0xf2f4]
push ecx
push 0x40d260
lea edx, [ebp - 0xf0c0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0xf0c0]
push eax
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edx, dword [ebp - 0xf2f4]
add edx, 0x100
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
mov eax, dword [ebp - 0xf2f4]
add eax, 0x100
push eax
push 0x40dea4
push 0
call dword [0x40e5bc]
add esp, 0x10
push 0
push 0x40de58
push 0x40dea4
call dword [0x40de98]
add esp, 0xc
mov dword [ebp - 0xf2f0], eax
cmp dword [ebp - 0xf2f0], 0
jne 0x403042
mov ecx, dword [0x40de5c]
push ecx
mov edx, dword [ebp - 0xf2f4]
add edx, 0x100
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp - 0xf2f4]
add eax, dword [0x40de60]
mov byte [eax + 0x100], 0
mov ecx, dword [ebp - 0xf2f4]
add ecx, 0x100
push ecx
push 0x40d26c
lea edx, [ebp - 0xf0c0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0xf0c0]
push eax
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edx, dword [ebp - 0xf2f4]
add edx, 0x200
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
mov eax, dword [ebp - 0xf2f4]
add eax, 0x200
push eax
push 0x40dea4
push 0
call dword [0x40e5bc]
add esp, 0x10
push 0
push 0x40de58
push 0x40dea4
call dword [0x40de98]
add esp, 0xc
mov dword [ebp - 0xf2f0], eax
cmp dword [ebp - 0xf2f0], 0
jne 0x4030f9
mov ecx, dword [0x40de5c]
push ecx
mov edx, dword [ebp - 0xf2f4]
add edx, 0x200
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp - 0xf2f4]
add eax, dword [0x40de60]
mov byte [eax + 0x200], 0
mov ecx, dword [ebp - 0xf2f4]
add ecx, 0x200
push ecx
push 0x40d27c
lea edx, [ebp - 0xf0c0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0xf0c0]
push eax
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edx, dword [0x407258]
push edx
lea eax, [ebp - 0xea68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x40d28c
lea ecx, [ebp - 0xea68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
jmp 0x402cd2
mov edx, dword [ebp - 0xf2e4]
sub edx, 1
jne 0x403177
push 0x40cdab
lea eax, [ebp - 0xea68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp - 0xf1d0]
push ecx
call dword [0x40de88]
add esp, 4
lea eax, [ebp - 0xea68]
mov esp, ebp
pop ebp
ret