Function at 0x446140
Capabilities:
Check if file exists
Create directory
Get common file path

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x4eca20
push 0x4956b0
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
sub esp, 0xa78
mov eax, dword [0x4f0008]
xor dword [ebp - 8], eax
xor eax, ebp
mov dword [ebp - 0x24], eax
push esi
push edi
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
mov esi, ecx
mov dword [ebp - 0xa74], esi
lea eax, [ebp - 0xa88]
push eax
lea eax, [ebp - 0xa80]
push eax
lea eax, [ebp - 0xa8c]
push eax
lea eax, [ebp - 0xa78]
push eax
call fcn.00447420
lea edi, [esi + 0x30]
mov dword [ebp - 0xa7c], edi
mov ecx, dword [edi]
mov eax, dword [ebp - 0xa78]
mov dword [ecx + 0x4f1d8], eax
mov dword [ebp - 4], 0
mov ecx, esi
call fcn.00446920
test eax, eax
je 0x4468c2
push ecx
mov ecx, esi
call fcn.00446ab0
test eax, eax
je 0x4468cb
mov ecx, esi
call fcn.00446c40
test eax, eax
je 0x4468d4
mov ecx, esi
call fcn.00446d90
test eax, eax
je 0x4468dd
push dword [ebp - 0xa88]
mov ecx, esi
call fcn.00446f30
test eax, eax
je 0x4468e6
mov eax, dword [esi + 0x74]
inc eax
mov dword [esi + 0x74], eax
mov ecx, dword [edi]
call fcn.00401fa0
mov edx, dword [0x504f90]
mov ecx, dword [edi]
mov eax, dword [0x504f98]
mov dword [ecx + 0x5714c], eax
mov dword [ecx + 0x57138], edx
mov ecx, esi
call fcn.00446fc0
test eax, eax
je 0x4468ef
mov ecx, esi
call fcn.00447070
test eax, eax
je 0x4468f8
push dword [ebp - 0xa8c]
mov ecx, esi
call fcn.004471e0
test eax, eax
je 0x446901
inc dword [esi + 0x74]
push dword [esi + 0x44]
call dword [sym.imp.USER32.dll_UpdateWindow]
push dword [ebp - 0xa80]
mov ecx, esi
call fcn.00447230
test eax, eax
je 0x44690a
inc dword [esi + 0x74]
mov ecx, dword [edi]
call fcn.00402a20
inc dword [esi + 0x74]
mov ecx, dword [edi]
call fcn.00402ca0
mov dword [ebp - 4], 0xfffffffe
mov dword [esi + 0x70], 1
mov dword [ebp - 4], 1
mov ecx, esi
call fcn.00449bd0
mov dword [ebp - 0xa90], eax
mov dword [ebp - 4], 0xfffffffe
jmp 0x446301
mov edx, dword [esi + 4]
test edx, edx
je 0x44651a
cmp dword [0x504f94], 0
je 0x446505
mov ecx, dword [0x4f7f30]
mov eax, dword [edx + 0xc]
mov dword [ecx + 0x6e4], eax
mov eax, dword [edx + 0x10]
mov dword [ecx + 0x6e8], eax
mov eax, dword [edx + 8]
mov dword [ecx + 0x6ec], eax
mov eax, dword [edx + 0x14]
mov dword [ecx + 0x6f0], eax
mov eax, dword [edx + 4]
mov dword [ecx + 0x6f4], eax
mov eax, dword [edx + 0x18]
mov dword [ecx + 0x6f8], eax
lea ecx, [ebp - 0x250]
call fcn.00488580
mov eax, dword [0x4f7f30]
mov dword [ebp - 0xa74], eax
lea eax, [ebp - 0x250]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
test ecx, ecx
jne 0x446392
push ecx
lea eax, [ebp - 0x250]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push str.gamemenu.dat
lea eax, [ebp - 0x250]
push eax
push 0x4d0ed4
lea eax, [ebp - 0x458]
push eax
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
call edi
add esp, 0xc
xor edx, edx
lea ecx, [ebp - 0x458]
call fcn.0048d3a0
add esp, 4
mov dword [ebp - 0xa78], eax
test eax, eax
je 0x44650b
movq xmm0, qword [str.SMNU]
movq qword [ebp - 0x30], xmm0
mov cx, word [0x4d81ac]
mov word [ebp - 0x28], cx
mov cl, byte [ebp - 0x30]
mov byte [ebp - 0xa84], cl
mov eax, dword [ebp - 0x30]
shr eax, 0x10
mov byte [ebp - 0xa83], al
mov al, byte [ebp - 0x2c]
mov byte [ebp - 0xa82], al
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
mov byte [ebp - 0xa81], al
mov edx, dword [ebp - 0xa84]
mov eax, dword [ebp - 0xa78]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], 0x4f3
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 8
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xa74]
mov eax, dword [eax + 0x6e4]
mov dword [edx + ecx], eax
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 4
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xa74]
mov eax, dword [eax + 0x6e8]
mov dword [edx + ecx], eax
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 4
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xa74]
mov eax, dword [eax + 0x6ec]
mov dword [edx + ecx], eax
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 4
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xa74]
mov eax, dword [eax + 0x6f0]
mov dword [edx + ecx], eax
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 4
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xa74]
mov eax, dword [eax + 0x6f4]
mov dword [edx + ecx], eax
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 4
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xa74]
mov eax, dword [eax + 0x6f8]
mov dword [edx + ecx], eax
mov eax, dword [ebp - 0xa78]
add dword [eax + 4], 4
mov ecx, eax
call fcn.0048d4e0
push 0x48
push dword [esi + 4]
call fcn.00491330
add esp, 8
jmp 0x446520
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
push 0x48
push dword [esi + 4]
call fcn.00491330
add esp, 8
jmp 0x446520
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
mov eax, dword [0x4f7e48]
test eax, eax
je 0x44654d
push 0x34
push eax
call fcn.00491330
add esp, 8
mov ecx, dword [0x4f7dd8]
test ecx, ecx
je 0x446543
call fcn.0048cf30
mov dword [0x4f7dd8], 0
mov esi, dword [ebp - 0xa7c]
mov ecx, dword [esi]
call fcn.00416150
mov esi, dword [esi]
mov ecx, dword [esi + 0x571cc]
test ecx, ecx
je 0x44656b
call fcn.0048cf30
mov dword [esi + 0x571cc], 0
mov ecx, dword [esi + 0x571dc]
test ecx, ecx
je 0x446584
call fcn.0048cf30
mov dword [esi + 0x571dc], 0
mov ecx, dword [esi + 0x571e4]
test ecx, ecx
je 0x44659e
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov ecx, dword [esi + 0x571e0]
test ecx, ecx
je 0x4465ad
call fcn.0048cf30
mov dword [esi + 0x571e0], 0
mov ecx, dword [esi + 0x571d0]
test ecx, ecx
je 0x4465c6
call fcn.0048cf30
mov dword [esi + 0x571d0], 0
mov ecx, dword [esi + 0x571d4]
test ecx, ecx
je 0x4465df
call fcn.0048cf30
mov dword [esi + 0x571d4], 0
mov ecx, dword [esi + 0x571d8]
test ecx, ecx
je 0x4465f8
call fcn.0048cf30
mov dword [esi + 0x571d8], 0
mov eax, dword [ebp - 0xa7c]
mov esi, dword [eax]
test esi, esi
je 0x446623
mov ecx, esi
call fcn.00401d00
push 0x57254
push esi
call fcn.00491330
add esp, 8
mov edx, dword [0x4f7dac]
test edx, edx
je 0x446718
movups xmm0, xmmword [str.keyboard]
movups xmmword [ebp - 0x48], xmm0
mov ax, word [0x4d1664]
mov word [ebp - 0x38], ax
mov ecx, 1
mov dword [ebp - 0xa74], ecx
mov eax, dword [edx + 4]
mov esi, dword [eax + 4]
test esi, esi
je 0x446718
nop
test ecx, ecx
je 0x4466f0
cmp dword [0x504f94], 0
je 0x4466b1
lea eax, [ebp - 0xa7c]
push eax
push 0
push 0
push 0x4bb490
call dword [sym.imp.SHELL32.dll_SHGetKnownFolderPath]
push str.SRPG_Studio
push dword [ebp - 0xa7c]
push 0x4d0ed4
lea eax, [ebp - 0x660]
push eax
call edi
add esp, 0x10
push dword [ebp - 0xa7c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x4466c9
mov eax, dword [0x4f7f30]
add eax, 0x978
push eax
lea eax, [ebp - 0x660]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str.game.ini
lea eax, [ebp - 0x660]
push eax
push 0x4d0ed4
lea eax, [ebp - 0x868]
push eax
call edi
add esp, 0x10
mov dword [ebp - 0xa74], 0
lea eax, [ebp - 0x868]
push eax
push dword [esi + 0x10]
push dword [esi + 0xc]
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov esi, dword [esi + 4]
test esi, esi
mov ecx, dword [ebp - 0xa74]
jne 0x446660
mov eax, dword [0x4f7db4]
test eax, eax
je 0x446820
movups xmm0, xmmword [str.gamepad]
movups xmmword [ebp - 0x34], xmm0
mov ecx, 1
mov dword [ebp - 0xa74], ecx
mov eax, dword [eax + 4]
mov esi, dword [eax + 4]
test esi, esi
je 0x446820
nop dword [eax]
test ecx, ecx
je 0x4467e0
cmp dword [0x504f94], 0
je 0x4467a1
lea eax, [ebp - 0xa7c]
push eax
push 0
push 0
push 0x4bb490
call dword [sym.imp.SHELL32.dll_SHGetKnownFolderPath]
push str.SRPG_Studio
push dword [ebp - 0xa7c]
push 0x4d0ed4
lea eax, [ebp - 0x458]
push eax
call edi
add esp, 0x10
push dword [ebp - 0xa7c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x4467b9
mov eax, dword [0x4f7f30]
add eax, 0x978
push eax
lea eax, [ebp - 0x458]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str.game.ini
lea eax, [ebp - 0x458]
push eax
push 0x4d0ed4
lea eax, [ebp - 0xa70]
push eax
call edi
add esp, 0x10
mov dword [ebp - 0xa74], 0
push dword [esi + 8]
push 0x4c0424
lea eax, [ebp - 0x248]
push eax
call edi
add esp, 0xc
lea eax, [ebp - 0xa70]
push eax
lea eax, [ebp - 0x248]
push eax
push dword [esi + 0xc]
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov esi, dword [esi + 4]
test esi, esi
mov ecx, dword [ebp - 0xa74]
jne 0x446750
mov eax, dword [ebp - 0xa90]
jmp 0x4468a4
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x24]
xor ecx, ebp
call fcn.004912f2
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
push 0
push 0
call fcn.00495a71
int3