Function at 0x401d29
Capabilities:
Check if file exists
Get common file path
Get file attributes
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 2
add esp, 0xfffff004
push eax
dec eax
jne 0x401d32
mov eax, dword [ebp - 4]
add esp, 0xfffffce8
push ebx
push esi
mov ebx, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x402093
xor esi, esi
xor eax, eax
mov dl, byte [ebx]
xor ecx, ecx
mov cl, dl
mov byte [ebp + eax - 0x1010], dl
cmp ecx, 0x3d
jne 0x401d72
lea esi, [ebp - 0x1010]
add esi, eax
xor edx, edx
mov dl, byte [ebp + eax - 0x1010]
cmp edx, 0xd
je 0x401d85
cmp edx, 0xa
jne 0x401d8d
mov byte [ebp + eax - 0x1010], 0
cmp byte [ebp + eax - 0x1010], 0
je 0x401da3
inc ebx
inc eax
cmp eax, 0x1000
jl 0x401d58
jmp 0x401da3
inc ebx
xor eax, eax
mov al, byte [ebx]
cmp eax, 0xd
je 0x401da2
cmp eax, 0xa
je 0x401da2
test esi, esi
je 0x401dc9
mov byte [esi], 0
inc esi
push esi
lea eax, [ebp - 0x2010]
push eax
call fcn.00405b3a
add esp, 8
push 0x40608a
lea edx, [ebp - 0x1010]
push edx
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x401df0
lea ecx, [ebp - 0x2010]
push ecx
call fcn.00401165
pop ecx
jmp 0x402093
push 0x40608f
lea eax, [ebp - 0x1010]
push eax
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x401e19
lea edx, [ebp - 0x2010]
push edx
push dword [ebp + 8]
call sub.USER32.dll_SetWindowTextA
jmp 0x402093
push 0x406095
lea ecx, [ebp - 0x1010]
push ecx
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x401f58
mov byte [ebp - 0x2114], 0
xor eax, eax
mov al, byte [ebp - 0x2010]
cmp eax, 0x2e
jne 0x401e6e
xor edx, edx
mov dl, byte [ebp - 0x200f]
cmp edx, 0x5c
jne 0x401e6e
lea ecx, [ebp - 0x200e]
push ecx
lea eax, [ebp - 0x2114]
push eax
call fcn.00405b3a
add esp, 8
jmp 0x401f42
xor edx, edx
mov dl, byte [ebp - 0x2010]
cmp edx, 0x5c
je 0x401e91
cmp byte [ebp - 0x2010], 0
je 0x401eac
xor ecx, ecx
mov cl, byte [ebp - 0x200f]
cmp ecx, 0x3a
jne 0x401eac
lea eax, [ebp - 0x2010]
push eax
lea edx, [ebp - 0x2114]
push edx
call fcn.00405b3a
add esp, 8
jmp 0x401f42
lea ecx, [ebp - 8]
push ecx
push 1
push 0
push 0x40609a
push 0x80000002
call sub.ADVAPI32.dll_RegOpenKeyExA
test eax, eax
jne 0x401ef4
mov dword [ebp - 0x10], 0x104
lea eax, [ebp - 0x10]
push eax
lea edx, [ebp - 0x2114]
push edx
lea ecx, [ebp - 0xc]
push ecx
push 0
push 0x4060c4
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegQueryValueExA
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegCloseKey
cmp byte [ebp - 0x2114], 0
je 0x401f2c
lea eax, [ebp - 0x2114]
push eax
call fcn.00405ad7
pop ecx
xor edx, edx
mov dl, byte [ebp + eax - 0x2115]
cmp edx, 0x5c
je 0x401f2c
push 0x4060d4
lea ecx, [ebp - 0x2114]
push ecx
call fcn.00405be8
add esp, 8
lea eax, [ebp - 0x2010]
push eax
lea edx, [ebp - 0x2114]
push edx
call fcn.00405be8
add esp, 8
lea ecx, [ebp - 0x2114]
push ecx
push 0x65
push dword [ebp + 8]
call sub.USER32.dll_SetDlgItemTextA
jmp 0x402093
push 0x4060d6
lea eax, [ebp - 0x1010]
push eax
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x401f8a
xor edx, edx
mov dl, byte [ebp - 0x2010]
cmp edx, 0x30
je 0x402093
mov dword [ebp - 4], 1
jmp 0x402093
push 0x4060dd
lea ecx, [ebp - 0x1010]
push ecx
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x401fbf
xor eax, eax
mov al, byte [ebp - 0x2010]
cmp eax, 0x30
je 0x402093
mov dword [0x406744], 1
jmp 0x402093
push 0x4060e7
lea edx, [ebp - 0x1010]
push edx
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x401fed
lea ecx, [ebp - 0x2010]
push ecx
push 0x4070ec
call fcn.00405b3a
add esp, 8
jmp 0x402093
push 0x4060ed
lea eax, [ebp - 0x1010]
push eax
call sub.KERNEL32.dll_lstrcmpiA
test eax, eax
jne 0x402093
lea edx, [ebp - 0x2218]
push edx
push 0x104
call sub.KERNEL32.dll_GetTempPathA
xor esi, esi
push esi
lea eax, [ebp - 0x2218]
push eax
push 0x4060f6
lea edx, [ebp - 0x231c]
push edx
call sub.USER32.dll_wsprintfA
add esp, 0x10
lea ecx, [ebp - 0x231c]
push ecx
call sub.KERNEL32.dll_GetFileAttributesA
cmp eax, 0xffffffff
je 0x402049
inc esi
jmp 0x402019
lea eax, [ebp - 0x231c]
push eax
push 0x65
push dword [ebp + 8]
call sub.USER32.dll_SetDlgItemTextA
cmp byte [ebp - 0x2010], 0
je 0x402085
push 0x24
lea edx, [ebp - 0x2010]
push 0x406102
push edx
push dword [ebp + 8]
call sub.USER32.dll_MessageBoxA
cmp eax, 6
je 0x402085
push 0
call sub.KERNEL32.dll_ExitProcess
mov ecx, 1
mov dword [0x406020], ecx
mov dword [ebp - 4], ecx
cmp byte [ebx], 0
jne 0x401d54
cmp dword [ebp - 4], 0
je 0x4020b3
push 0
push 1
push 0x111
push dword [ebp + 8]
call sub.USER32.dll_SendMessageA
xor eax, eax
mov dword [0x406000], eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret