Function at 0x45c0f0
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xc3c
mov eax, dword [0x1162fd0]
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea esi, [esp + 0x30]
mov dword [esp + 8], 0x200
mov dword [esp + 4], esi
mov dword [esp], eax
call ebp
sub esp, 0xc
mov dword [esp], esi
lea ebx, [esp + 0x830]
call sub.msvcrt.dll_strlen
lea eax, [esi + eax - 4]
mov dword [eax], 0x696e692e
mov byte [eax + 4], 0
mov dword [esp + 4], 0x51af3a
mov dword [esp], esi
call sub.msvcrt.dll_fopen
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test eax, eax
je 0x45c608
mov dword [esp], esi
call fcn.00401bb0
mov dword [esp], ebx
mov dword [esp + 4], eax
mov ebp, eax
mov dword [0x1162e44], eax
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c4f0
test al, 0x10
jne 0x45c4f0
mov eax, dword [0x1162e44]
mov dword [esp + 0x10], 0x3e8
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], eax
mov dword [esp + 8], 0x51afbf
mov dword [esp + 4], str.LibPath
mov dword [esp], str.Base
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
sub esp, 0x18
mov dword [esp], esi
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c580
cmp byte [esp + eax + 0x2f], 0x5c
je 0x45c1e2
mov edx, 0x5c
mov word [esp + eax + 0x30], dx
mov dword [esp + 4], esi
mov dword [esp], ebx
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c208
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c5a8
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c4a8
test al, 0x10
je 0x45c4a8
mov eax, dword [0x1162e44]
mov dword [esp + 8], 0
mov dword [esp + 4], str.DontMoveUser
mov dword [esp + 0xc], eax
mov dword [esp], str.Base
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
sub esp, 0x10
test eax, eax
mov dword [esp], esi
setne byte [0xd67a86]
call fcn.00446310
mov ebp, dword [0xde84b4]
mov dword [esp], ebx
mov dword [esp + 4], ebp
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c287
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c5b8
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c4d8
test al, 0x10
je 0x45c4d8
mov ebp, dword [0xde84b0]
mov dword [esp], ebx
mov dword [esp + 4], ebp
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c2cc
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c5c8
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c4c0
test al, 0x10
je 0x45c4c0
mov ebp, dword [0xde84ac]
mov dword [esp], ebx
mov dword [esp + 4], ebp
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c311
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c5d8
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c568
test al, 0x10
je 0x45c568
mov ebp, dword [0xde84a8]
mov dword [esp], ebx
mov dword [esp + 4], ebp
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c356
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c5e8
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c550
test al, 0x10
je 0x45c550
mov ebp, dword [0xde84a4]
mov dword [esp], ebx
mov dword [esp + 4], ebp
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c39b
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c5f8
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c538
test al, 0x10
je 0x45c538
mov eax, dword [0xde84a8]
mov dword [esp + 0xc], str.font
mov dword [esp + 4], 0x400
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00404e10
mov dword [esp], esi
call fcn.00401bb0
mov dword [esp], ebx
mov dword [esp + 4], eax
mov ebp, eax
mov dword [0x1162fc0], eax
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
test eax, eax
je 0x45c40a
cmp byte [esp + eax + 0x82f], 0x5c
je 0x45c598
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c520
test al, 0x10
je 0x45c520
mov eax, dword [0x1162fc0]
mov dword [esp + 0xc], str.9X15.FON
mov dword [esp + 4], 0x400
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00404e10
mov dword [esp + 4], esi
mov dword [esp], ebx
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c508
test al, 0x10
jne 0x45c508
mov eax, dword [0xde84a8]
mov dword [esp], esi
mov dword [esp + 0xc], str.graphics
mov dword [esp + 8], eax
mov dword [esp + 4], 0x400
call fcn.00404e10
mov dword [esp], esi
call fcn.00401bb0
mov dword [0x1162fbc], eax
add esp, 0xc3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], esi
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c221
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c2e5
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c2a0
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_file:_n_s
call fcn.004025a0
jmp 0x45c18c
mov dword [esp + 4], esi
mov dword [esp], str.Cannot_find_required_file:_n_s
call fcn.004025a0
jmp 0x45c469
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c423
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c3b4
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c36f
mov dword [esp + 4], ebp
mov dword [esp], str.Cannot_find_required_directory:_n_s
call fcn.004025a0
jmp 0x45c32a
mov dword [esp], str.LibPath_shouldnt_be_empty_in_ANGBAND.INI
call fcn.00401670
jmp 0x45c1e2
mov byte [esp + eax + 0x82f], 0
jmp 0x45c40a
mov byte [esp + eax + 0x82f], 0
jmp 0x45c208
mov byte [esp + eax + 0x82f], 0
jmp 0x45c287
mov byte [esp + eax + 0x82f], 0
jmp 0x45c2cc
mov byte [esp + eax + 0x82f], 0
jmp 0x45c311
mov byte [esp + eax + 0x82f], 0
jmp 0x45c356
mov byte [esp + eax + 0x82f], 0
jmp 0x45c39b
lea eax, [esp + 0x430]
mov dword [esp + 8], 0x200
mov dword [esp + 4], eax
mov eax, dword [0x1162fd0]
mov dword [esp], eax
call ebp
sub esp, 0xc
lea eax, [esp + 0x430]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
lea eax, [esp + eax + 0x42c]
mov dword [eax], 0x696e692e
mov dword [eax + 4], 0x6665642e
mov dword [eax + 8], 0x746c7561
mov byte [eax + 0xc], 0
lea eax, [esp + 0x430]
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
call edi
sub esp, 4
cmp eax, 0xffffffff
je 0x45c718
test al, 0x10
jne 0x45c718
mov dword [esp + 4], 0x51af28
mov dword [esp], esi
mov byte [esp + 0x830], 0
call sub.msvcrt.dll_fopen
lea ecx, [esp + 0x430]
mov dword [esp + 4], 0x51af3a
mov dword [esp], ecx
mov dword [esp + 0x2c], eax
call sub.msvcrt.dll_fopen
mov ecx, dword [esp + 0x2c]
mov ebp, eax
test ecx, ecx
je 0x45c758
test ebp, ebp
jne 0x45c6f0
jmp 0x45c775
mov dword [esp + 8], ebp
mov dword [esp + 4], 0x400
mov dword [esp], ebx
call sub.msvcrt.dll_fgets
mov dword [esp], ebp
call sub.msvcrt.dll_feof
test eax, eax
je 0x45c740
mov dword [esp], ebp
call sub.msvcrt.dll_feof
test eax, eax
je 0x45c6d0
mov dword [esp], ebp
call sub.msvcrt.dll_fclose
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call sub.msvcrt.dll_fclose
jmp 0x45c158
lea eax, [esp + 0x430]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], str.Error:_Neither__s_nor__s_exists
call fcn.00402550
mov dword [esp], eax
call fcn.00401610
jmp 0x45c158
mov eax, dword [esp + 0x2c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputs
jmp 0x45c6f0
mov dword [esp + 4], esi
mov dword [esp], str.error:_cant_open__s_for_writing
call fcn.00402550
mov dword [esp], eax
call fcn.00401670
jmp 0x45c6c3
lea eax, [esp + 0x430]
mov dword [esp], str.error:_cant_open__s_for_reading
mov dword [esp + 4], eax
call fcn.00402550
mov dword [esp], eax
call fcn.00401670
jmp 0x45c6f0