Function at 0x403290
Capabilities:
Delete registry value
Get file attributes
Get file system object information
Read .ini file
Set file attributes
Set registry value

Disassembly:
push 0xffffffffffffffff
push 0x405cfc
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x5a0
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::CString
xor ebx, ebx
lea ecx, [esp + 0x18]
mov dword [esp + 0x5b8], ebx
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov byte [esp + 0x5b8], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0x5b8], 2
call sub.MFC42.DLL_CString::CString
mov al, byte [0x40813c]
mov ecx, 0x43
mov byte [esp + 0x13c], al
xor eax, eax
lea edi, [esp + 0x13d]
mov byte [esp + 0x5b8], 3
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [0x408654]
mov dword [esp + 0x30], ebx
cmp eax, ebx
je 0x403549
lea ebp, [esi + 0x3e8]
lea ecx, [esp + 0x10]
push ebp
call sub.MFC42.DLL_CString::operator
mov ecx, dword [esp + 0x10]
push ecx
push 0x408540
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
jne 0x403427
mov edx, dword [esi + 0x3c0]
push 0
push 0
push 0x188
push edx
call ebx
cmp eax, dword [0x408668]
jne 0x403427
push 0x9c64
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x10]
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea eax, [esp + 0x24]
push eax
push 0xf003f
push 0
push ecx
push 0x80000002
call edi
test eax, eax
jne 0x403b05
mov dl, byte [0x408670]
mov byte [esp + 0x13d], al
lea eax, [esp + 0x20]
mov byte [esp + 0x13c], dl
mov edx, dword [esp + 0x24]
push eax
push 0xf003f
lea ecx, [esp + 0x144]
push 0
push ecx
push edx
call edi
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x40341b
push EnableWindow
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x28]
push eax
push 0xf003f
push 0
push ecx
push edx
call edi
test eax, eax
jne 0x403414
push eax
mov eax, dword [esp + 0x2c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov ecx, dword [esp + 0x20]
push ecx
call ebx
mov edx, dword [esp + 0x24]
push edx
call ebx
jmp 0x403b05
push 0x9c64
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::LoadStringA
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x24]
push eax
mov edi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
push ecx
push 0
push 0xf003f
push 0
push 0
push 0
push edx
push 0x80000002
call edi
test eax, eax
jne 0x403b05
mov al, byte [0x408670]
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x28]
push edx
push 0
push 0xf003f
mov byte [esp + 0x14c], al
push 0
push 0
lea eax, [esp + 0x154]
push 0
push eax
push ecx
mov byte [esp + 0x161], 0
call edi
test eax, eax
jne 0x403539
push EnableWindow
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x2c]
lea eax, [esp + 0x28]
push edx
mov edx, dword [esp + 0x24]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push ecx
push edx
call edi
test eax, eax
jne 0x40352e
push eax
push eax
mov eax, dword [esi + 0x3c0]
push 0x188
push eax
call ebx
push eax
push ebp
lea ecx, [esp + 0x144]
push str._s__d
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea edx, [esp + 0x13c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [esp + 0x28]
inc eax
push eax
lea eax, [esp + 0x140]
push eax
push 1
push 0
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov edx, dword [esp + 0x20]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x403b05
lea ecx, [esp + 0x34]
push 0x408670
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov cl, byte [esp + eax + 0x33]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp cl, 0x5c
je 0x40357f
lea eax, [esp + 0x34]
push 0x4080f8
push eax
call edi
push GetDlgCtrlID
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x34]
push ecx
push edx
call edi
push GetDlgCtrlID
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::LoadStringA
lea eax, [esi + 0x3e8]
lea ecx, [esp + 0x10]
push eax
call sub.MFC42.DLL_CString::operator
mov eax, dword [esp + 0x10]
push eax
push 0x408208
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4038c0
mov ecx, dword [esi + 0x3c0]
push ebx
push ebx
push 0x188
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
cmp eax, dword [0x408660]
jne 0x4038c0
push 0x9c4f
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x34]
push edx
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push eax
push ecx
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_FormatMessageA]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x403666
push 0
lea edx, [esp + 0x250]
push 0x200
push edx
push 0
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x250]
push eax
push ecx
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push reloc.USER32.dll_GetDlgCtrlID
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x34]
push edx
push 0
push eax
push ecx
call ebx
test eax, eax
jne 0x4036ca
push eax
lea edx, [esp + 0x250]
push 0x200
push edx
push eax
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x250]
push eax
push ecx
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push EnableWindow
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x34]
push edx
push 0
push eax
push ecx
call ebx
test eax, eax
jne 0x40372e
push eax
lea edx, [esp + 0x250]
push 0x200
push edx
push eax
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x250]
push eax
push ecx
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push 0x9c50
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
lea edx, [esp + 0x10]
lea ecx, [esi + 0x1e0]
push edx
call sub.MFC42.DLL_CWnd::GetWindowTextA
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov eax, dword [ecx - 8]
neg eax
sbb eax, eax
and eax, ecx
lea ecx, [esp + 0x34]
push ecx
push eax
mov eax, dword [esp + 0x24]
push edx
push eax
call ebx
test eax, eax
jne 0x4037ae
push eax
lea ecx, [esp + 0x250]
push 0x200
push ecx
push eax
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov edx, dword [esp + 0x14]
push 0
lea eax, [esp + 0x250]
push edx
push eax
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x140]
push 0x10e
push edx
push 0x40813c
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esp + 0x13c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test eax, eax
jne 0x4038a6
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x34]
push edx
push 0
push 0
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
jne 0x403845
push eax
lea ecx, [esp + 0x250]
push 0x200
push ecx
push eax
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov edx, dword [esp + 0x14]
push 0
lea eax, [esp + 0x250]
push edx
push eax
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
lea ecx, [esp + 0x34]
lea edx, [esp + 0x13c]
push ecx
push 0x10e
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionNamesA]
lea eax, [esp + 0x13c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jne 0x4038a6
lea ecx, [esp + 0x34]
push pe_nt_image_headers32
push ecx
call ebx
mov edx, dword [esi + 0x20]
push 0
push 0x1f4
push 1
push edx
call dword [sym.imp.USER32.dll_SetTimer]
lea eax, [esp + 0x34]
push eax
push 0x408438
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [esp + 0x30], 1
push 0x408670
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and al, 0xfb
push eax
push 0x408670
call ebx
jmp 0x403b05
mov ecx, dword [esi + 0x20]
push 1
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
push 0x9c4f
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov ebx, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea edx, [esp + 0x34]
push edx
mov edx, dword [esp + 0x20]
push eax
push ecx
push edx
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_FormatMessageA]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x403947
push 0
lea eax, [esp + 0x250]
push 0x200
push eax
push 0
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x14]
push 0
lea edx, [esp + 0x250]
push ecx
push edx
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push reloc.USER32.dll_GetDlgCtrlID
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esi + 0x3c0]
push 0
push 0
push 0x188
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
push eax
lea ecx, [esp + 0x140]
push 0x408020
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov ecx, dword [esp + 0x24]
add esp, 0xc
lea edx, [esp + 0x34]
lea eax, [esp + 0x13c]
push edx
mov edx, dword [esp + 0x20]
push eax
push ecx
push edx
call ebx
test eax, eax
jne 0x4039df
push eax
lea eax, [esp + 0x250]
push 0x200
push eax
push 0
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x14]
push 0
lea edx, [esp + 0x250]
push ecx
push edx
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push EnableWindow
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
push 0
lea eax, [esp + 0x140]
push 0x408020
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esp + 0x24]
add esp, 0xc
lea ecx, [esp + 0x34]
lea edx, [esp + 0x13c]
push ecx
mov ecx, dword [esp + 0x20]
push edx
push eax
push ecx
call ebx
test eax, eax
jne 0x403a61
push eax
lea edx, [esp + 0x250]
push 0x200
push edx
push eax
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x250]
push eax
push ecx
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push 0x9c50
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::LoadStringA
lea edx, [esp + 0x10]
lea ecx, [esi + 0x1e0]
push edx
call sub.MFC42.DLL_CWnd::GetWindowTextA
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov eax, dword [ecx - 8]
neg eax
sbb eax, eax
and eax, ecx
lea ecx, [esp + 0x34]
push ecx
push eax
mov eax, dword [esp + 0x24]
push edx
push eax
call ebx
test eax, eax
jne 0x403ae1
push eax
lea ecx, [esp + 0x250]
push 0x200
push ecx
push eax
call ebp
push eax
push 0
push 0x1000
call edi
push 0x9c57
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::LoadStringA
mov edx, dword [esp + 0x14]
push 0
lea eax, [esp + 0x250]
push edx
push eax
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
push 0x408670
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
or al, 4
push eax
push 0x408670
call edi
lea ecx, [esp + 0x34]
push 2
push ecx
call edi
mov edi, dword [sym.imp.SHELL32.dll_SHChangeNotify]
push 0
push 0x408670
push 0x1001
push 0x800
call edi
push 0x4000
lea edx, [esp + 0x454]
push 0x160
push edx
push 0
push 0x408670
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov eax, dword [esp + 0x454]
push 0
push eax
push 0x1003
push 0x8000
call edi
mov ecx, dword [0x408320]
push 0
and ecx, 0xffff
push ecx
push 0x1003
push 0x8000
call edi
push 0
lea ecx, [esi + 0x320]
call sub.MFC42.DLL_CWnd::EnableWindow
lea eax, [esi + 0x3e8]
mov ecx, esi
push eax
call fcn.00404480
mov ecx, esi
call fcn.004042e0
push 0x408328
push 0x408670
mov ecx, esi
call fcn.00403c90
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x403bb9
mov eax, dword [0x40877c]
test eax, eax
je 0x403bb9
mov ecx, esi
call sub.MFC42.DLL_CDialog::OnOK
lea ecx, [esp + 0x14]
mov byte [esp + 0x5b8], 2
call fcn.0040537c
lea ecx, [esp + 0x10]
mov byte [esp + 0x5b8], 1
call fcn.0040537c
lea ecx, [esp + 0x18]
mov byte [esp + 0x5b8], 0
call fcn.0040537c
lea ecx, [esp + 0x1c]
mov dword [esp + 0x5b8], 0xffffffff
call fcn.0040537c
mov ecx, dword [esp + 0x5b0]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x5ac
ret