Function at 0x402f00
Capabilities:
Check if file exists
Delete file
Get common file path
Move file
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x436e67
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xa34
push ebx
push ebp
push esi
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x225]
mov byte [esp + 0x224], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x1d]
mov byte [esp + 0x1c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x739]
mov byte [esp + 0x738], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x329]
mov byte [esp + 0x328], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [0x44f670]
xor esi, esi
cmp eax, esi
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], esi
je 0x402fa3
xor eax, eax
jmp 0x403683
lea eax, [esp + 0x224]
push 0x104
push eax
call fcn.00402c90
add esp, 8
mov ecx, 0x104
lea eax, [esp + 0x224]
cmp byte [eax], 0
je 0x402fcf
inc eax
dec ecx
jne 0x402fc4
jmp 0x403002
cmp ecx, esi
je 0x403002
lea edx, [esp + 0x14]
test edx, edx
je 0x402fe4
mov eax, 0x104
sub eax, ecx
jmp 0x402fe8
mov eax, dword [esp + 0x14]
mov ecx, 0x104
push 0x44190c
sub ecx, eax
lea edx, [esp + eax + 0x228]
push ecx
push edx
call fcn.00402320
mov edi, dword [esp + 0xa64]
mov ebp, dword [esp + 0xa58]
push 0
push edi
push ebp
call fcn.00405c50
mov esi, dword [sym.imp.SHLWAPI.dll_StrStrIA]
add esp, 0xc
push 0x441904
push ebp
call esi
mov ebx, dword [esp + 0xa5c]
test eax, eax
jne 0x403131
push 0x4418fc
push ebp
call esi
test eax, eax
jne 0x403131
push 0x4418f4
push ebp
call esi
test eax, eax
je 0x4030dc
mov edi, 0x4418e8
or ecx, 0xffffffff
xor eax, eax
mov esi, 0x4418e8
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x738]
mov eax, ecx
mov edx, dword [esp + 0xa54]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
push 0x104
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x330]
push ecx
push 0
push 0x4418e4
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [esp + 0x738]
lea ecx, [esp + 0x328]
push eax
push ecx
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
jle 0x40319f
mov eax, 1
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
jmp 0x40319f
push 0x4418dc
push ebp
call esi
test eax, eax
je 0x403106
mov edx, dword [esp + 0xa54]
push 0
push edi
push ebx
push ebp
push edx
call fcn.00406ba0
add esp, 0x14
mov dword [esp + 0x10], eax
jmp 0x40319f
push 0x4418d4
push ebp
call esi
test eax, eax
je 0x40319f
mov eax, dword [esp + 0xa54]
push 0
push edi
push ebx
push ebp
push eax
call fcn.00406ba0
add esp, 0x14
mov dword [esp + 0x10], eax
jmp 0x40319f
mov edi, dword [esp + 0xa54]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esp + 0x224]
lea edx, [esp + 0x738]
push ecx
push 0x104
push edx
push 0
push 0x4418e4
push edi
call esi
push ebx
lea eax, [esp + 0x32c]
push 0x104
push eax
push 0
push 0x4418e4
push edi
call esi
lea ecx, [esp + 0x738]
lea edx, [esp + 0x328]
push ecx
push edx
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
jle 0x40319f
mov eax, 1
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
lea eax, [esp + 0x1c]
push 0x104
push eax
call fcn.00402c90
add esp, 8
mov ecx, 0x104
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x4031c5
inc eax
dec ecx
jne 0x4031ba
jmp 0x4031f1
test ecx, ecx
je 0x4031f1
lea edx, [esp + 0x14]
test edx, edx
je 0x4031da
mov eax, 0x104
sub eax, ecx
jmp 0x4031de
mov eax, dword [esp + 0x14]
mov ecx, 0x104
push ebp
sub ecx, eax
lea edx, [esp + eax + 0x20]
push ecx
push edx
call fcn.00402320
mov ebp, dword [esp + 0xa68]
test ebp, ebp
je 0x403207
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
lea ecx, [esp + 0x1c]
push ecx
call edi
test eax, eax
jne 0x40322e
lea edx, [esp + 0x1c]
push edx
call fcn.00402ed0
add esp, 4
mov esi, 1
test eax, eax
je 0x403232
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x1c]
push eax
call edi
test eax, eax
je 0x403300
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_4
push 0x104
push 0x104
lea ecx, [esp + 0x18]
mov dword [esp + 0xa54], 0
call sub.MFC42.DLL_CString::GetBuffer
push eax
call fcn.00402c90
add esp, 8
lea ecx, [esp + 0x10]
push 0x104
call sub.MFC42.DLL_CString::GetBuffer
mov edx, 0x104
mov ecx, eax
cmp byte [ecx], 0
je 0x403291
inc ecx
dec edx
jne 0x403286
jmp 0x4032bf
test edx, edx
je 0x4032bf
lea ecx, [esp + 0x14]
test ecx, ecx
je 0x4032a6
mov ecx, 0x104
sub ecx, edx
jmp 0x4032aa
mov ecx, dword [esp + 0x14]
mov edx, 0x104
push 0x4418c8
sub edx, ecx
add ecx, eax
push edx
push ecx
call fcn.00402320
mov eax, dword [esp + 0x10]
push 1
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x4032dc
mov esi, 1
jmp 0x4032ec
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x1c]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileA]
lea ecx, [esp + 0x10]
mov dword [esp + 0xa4c], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0xa60]
test eax, eax
jne 0x403317
test esi, esi
jne 0x403317
or eax, 0xffffffff
jmp 0x403683
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x635]
mov byte [esp + 0x634], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
test ebp, ebp
push ebx
push 0x104
stosb byte es:[edi], al
je 0x403355
mov edx, dword [esp + 0xa5c]
lea ecx, [esp + 0x63c]
push ecx
push 0
push edx
push 0x4418bc
jmp 0x40336c
mov ecx, dword [esp + 0xa5c]
lea eax, [esp + 0x63c]
push eax
push 0
push 0x4418b8
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edi, [esp + 0x634]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x40367e
mov ecx, 0x81
lea edi, [esp + 0x42d]
mov byte [esp + 0x42c], al
push 0x2e
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x20]
push 0
push edx
stosb byte es:[edi], al
call dword [sym.imp.SHLWAPI.dll_StrRChrIA]
test eax, eax
jne 0x4033bc
or eax, 0xffffffff
jmp 0x403683
lea esi, [esp + 0x1c]
lea edx, [esp + 0x42c]
mov edi, 0x208
lea ecx, [esp + 0x42c]
sub esi, edx
mov dl, byte [ecx + esi]
test dl, dl
je 0x4033e4
mov byte [ecx], dl
inc ecx
dec edi
jne 0x4033d5
jmp 0x4033e8
test edi, edi
jne 0x4033e9
dec ecx
mov byte [ecx], 0
lea ecx, [esp + 0x1c]
sub eax, ecx
or ebp, 0xffffffff
mov edx, eax
lea edi, [esp + 0x1c]
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jae 0x40340f
mov byte [esp + edx + 0x42c], al
mov ecx, 0x208
lea eax, [esp + 0x42c]
cmp byte [eax], 0
je 0x403426
inc eax
dec ecx
jne 0x40341b
jmp 0x40346d
test ecx, ecx
je 0x40346d
lea edx, [esp + 0x14]
test edx, edx
je 0x40343b
mov eax, 0x208
sub eax, ecx
jmp 0x40343f
mov eax, dword [esp + 0x14]
mov edx, 0x208
sub edx, eax
lea eax, [esp + eax + 0x42c]
je 0x40346d
mov esi, 0x4418b0
sub esi, eax
mov cl, byte [eax + esi]
test cl, cl
je 0x403465
mov byte [eax], cl
inc eax
dec edx
jne 0x403456
jmp 0x403469
test edx, edx
jne 0x40346a
dec eax
mov byte [eax], 0
lea eax, [esp + 0x42c]
push 0x493e0
lea ecx, [esp + 0x638]
push eax
push ecx
call fcn.00406330
add esp, 0xc
test eax, eax
je 0x40367e
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x83d]
mov byte [esp + 0x83c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x121]
mov byte [esp + 0x120], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x1c]
lea ecx, [esp + 0x120]
stosb byte es:[edi], al
mov esi, 0x104
lea eax, [esp + 0x120]
sub edx, ecx
mov cl, byte [eax + edx]
test cl, cl
je 0x4034f0
mov byte [eax], cl
inc eax
dec esi
jne 0x4034e1
jmp 0x4034f4
test esi, esi
jne 0x4034f5
dec eax
mov byte [eax], 0
mov ecx, 0x104
lea eax, [esp + 0x120]
cmp byte [eax], 0
je 0x40350f
inc eax
dec ecx
jne 0x403504
jmp 0x403556
test ecx, ecx
je 0x403556
lea edx, [esp + 0x14]
test edx, edx
je 0x403524
mov eax, 0x104
sub eax, ecx
jmp 0x403528
mov eax, dword [esp + 0x14]
mov edx, 0x104
sub edx, eax
lea eax, [esp + eax + 0x120]
je 0x403556
mov esi, 0x4418a8
sub esi, eax
mov cl, byte [eax + esi]
test cl, cl
je 0x40354e
mov byte [eax], cl
inc eax
dec edx
jne 0x40353f
jmp 0x403552
test edx, edx
jne 0x403553
dec eax
mov byte [eax], 0
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [esp + 0x120]
push eax
call esi
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x4036ee
mov ebx, dword [sym.imp.KERNEL32.dll_MoveFileA]
lea edx, [esp + 0x120]
lea eax, [esp + 0x1c]
push edx
push eax
call ebx
test eax, eax
jne 0x4036f4
lea ecx, [esp + 0x1c]
push ecx
call fcn.00402ed0
add esp, 4
test eax, eax
je 0x40369c
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_4
push 0x104
lea ecx, [esp + 0x14]
mov dword [esp + 0xa50], 1
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push 0x104
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::GetBuffer
lea edx, [esp + 0x42c]
push eax
push edx
call fcn.00402430
add esp, 8
lea eax, [esp + 0x10]
lea ecx, [esp + 0x14]
push 0x441898
push eax
push ecx
call sub.MFC42.DLL_operator_3
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0xa50], 2
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x14]
mov byte [esp + 0xa4c], 1
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x1c]
push 5
push edx
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
mov eax, dword [esp + 0xa54]
lea ecx, [esp + 0x224]
lea edx, [esp + 0x328]
push ecx
push edx
push 0x4418e4
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [esp + 0x42c]
push ecx
call esi
lea ecx, [esp + 0x10]
mov dword [esp + 0xa4c], ebp
call sub.MFC42.DLL_CString::CString
mov eax, 3
mov ecx, dword [esp + 0xa44]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xa40
ret
call sub.MFC42.DLL_AfxGetThread
test eax, eax
je 0x4036ae
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x4036b0
xor eax, eax
mov eax, dword [eax + 0x20]
push 0x1004
push 0x44114c
push 0x441868
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x4036dd
lea ecx, [esp + 0x42c]
push ecx
call esi
call fcn.00405130
lea edx, [esp + 0x42c]
push edx
call esi
mov eax, 4
jmp 0x403683
mov ebx, dword [sym.imp.KERNEL32.dll_MoveFileA]
lea eax, [esp + 0x83c]
push 0x208
push eax
call fcn.00402c90
mov ecx, dword [esp + 0xa6c]
push 1
lea edx, [esp + 0x848]
push ecx
push edx
call fcn.00405c50
lea eax, [esp + 0x850]
lea ecx, [esp + 0x440]
push eax
push ecx
call fcn.00402430
add esp, 0x1c
test eax, eax
jne 0x40386c
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40384e
lea edx, [esp + 0x1c]
lea eax, [esp + 0x42c]
push edx
push eax
call ebx
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_4
push 0x104
push 0x104
lea ecx, [esp + 0x18]
mov dword [esp + 0xa54], 3
call sub.MFC42.DLL_CString::GetBuffer
push eax
call fcn.00402c90
add esp, 8
lea ecx, [esp + 0x10]
push 0x104
call sub.MFC42.DLL_CString::GetBuffer
mov edx, 0x104
mov ecx, eax
cmp byte [ecx], 0
je 0x4037a8
inc ecx
dec edx
jne 0x40379d
jmp 0x4037eb
test edx, edx
je 0x4037eb
lea ecx, [esp + 0x14]
test ecx, ecx
je 0x4037bd
mov ecx, 0x104
sub ecx, edx
jmp 0x4037c1
mov ecx, dword [esp + 0x14]
mov edx, 0x104
lea eax, [ecx + eax]
sub edx, ecx
je 0x4037eb
mov esi, 0x441858
sub esi, eax
mov cl, byte [eax + esi]
test cl, cl
je 0x4037e3
mov byte [eax], cl
inc eax
dec edx
jne 0x4037d4
jmp 0x4037e7
test edx, edx
jne 0x4037e8
dec eax
mov byte [eax], 0
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x120]
push edx
push eax
call ebx
mov edi, dword [esp + 0xa54]
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [esp + 0x224]
lea edx, [esp + 0x328]
push ecx
push edx
push 0x4418e4
push edi
call esi
lea eax, [esp + 0x224]
push eax
push 0x441854
push 0x441840
push edi
call esi
lea ecx, [esp + 0x10]
mov dword [esp + 0xa4c], ebp
call sub.MFC42.DLL_CString::CString
mov eax, 1
jmp 0x403683
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x120]
push ecx
push edx
call ebx
lea eax, [esp + 0x42c]
push eax
call esi
jmp 0x40367e
lea ecx, [esp + 0x42c]
push ecx
call esi
lea edx, [esp + 0x120]
push edx
call esi
lea eax, [esp + 0x120]
push 0x441834
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrIA]
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
je 0x40396f
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::CString_4
push 0x104
push 0x104
lea ecx, [esp + 0x20]
mov dword [esp + 0xa54], 4
call sub.MFC42.DLL_CString::GetBuffer
push eax
call fcn.00402c90
add esp, 8
lea ecx, [esp + 0x18]
push 0x104
call sub.MFC42.DLL_CString::GetBuffer
mov edx, 0x104
mov ecx, eax
cmp byte [ecx], 0
je 0x4038f1
inc ecx
dec edx
jne 0x4038e6
jmp 0x403934
test edx, edx
je 0x403934
lea ecx, [esp + 0x14]
test ecx, ecx
je 0x403906
mov ecx, 0x104
sub ecx, edx
jmp 0x40390a
mov ecx, dword [esp + 0x14]
mov edx, 0x104
lea eax, [ecx + eax]
sub edx, ecx
je 0x403934
mov esi, 0x441858
sub esi, eax
mov cl, byte [esi + eax]
test cl, cl
je 0x40392c
mov byte [eax], cl
inc eax
dec edx
jne 0x40391d
jmp 0x403930
test edx, edx
jne 0x403931
dec eax
mov byte [eax], 0
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x120]
push edx
push eax
call ebx
mov edx, dword [esp + 0xa54]
lea ecx, [esp + 0x224]
push ecx
push 0x441854
push 0x441840
push edx
call edi
lea ecx, [esp + 0x18]
mov dword [esp + 0xa4c], ebp
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x14]
test eax, eax
je 0x403996
mov edx, dword [esp + 0xa54]
lea eax, [esp + 0x224]
lea ecx, [esp + 0x328]
push eax
push ecx
push 0x4418e4
push edx
call edi
mov eax, 1
jmp 0x403683