Function at 0x401bf0
Capabilities:
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20c
mov eax, dword [0x424008]
xor eax, ebp
mov dword [ebp - 4], eax
push 0x104
push 0x42520c
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x42520c
call dword [sym.imp.KERNEL32.dll_lstrlenA]
dec eax
cmp byte [eax + 0x42520c], 0x5c
je 0x401c41
nop dword [eax]
mov byte [eax + 0x42520c], 0
dec eax
cmp byte [eax + 0x42520c], 0x5c
jne 0x401c30
push ebx
mov ebx, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
push 0
push 0x1a
push 0x425414
push 0
mov byte [eax + 0x42520c], 0
call ebx
test eax, eax
jns 0x401c96
push 0
push 0x23
push 0x425414
push 0
call ebx
test eax, eax
jns 0x401c96
push 0x20
push 0x4208b8
push str.AppData
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret
push esi
push edi
mov edi, dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
push 0x425548
push 2
push dword [0x425184]
call edi
push 0x104
push 0x425750
push 3
push dword [0x425184]
call edi
push 0x104
push 0x425958
push 4
push dword [0x425184]
call edi
push 0x104
push 0x42564c
push 5
push dword [0x425184]
call edi
push 0x104
push 0x425a5c
push 6
push dword [0x425184]
call edi
push 0x104
push 0x425b60
push 7
push dword [0x425184]
call edi
push 0x104
push 0x425c64
push 1
push dword [0x425184]
call edi
push 0x104
lea eax, [ebp - 0x108]
push eax
push 8
push dword [0x425184]
call edi
xor esi, esi
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x2c
push ecx
push esi
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
cdq
add esp, 0x10
mov dword [esi*8 + 0x425528], eax
mov dword [esi*8 + 0x42552c], edx
inc esi
cmp esi, 4
jl 0x401d42
push 0x421ca0
push str.Kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x401dd5
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
test eax, eax
je 0x401dd5
cmp dword [ebp - 0x20c], 0
je 0x401dd5
push 0
push 0x2a
push 0x42668c
push 0
call ebx
test eax, eax
jns 0x401dfa
push 0
push 0x26
push 0x42668c
push 0
call ebx
test eax, eax
jns 0x401dfa
push 0x104
push 0
push 0x42668c
call fcn.0040bcd0
add esp, 0xc
push 0
push 5
lea eax, [ebp - 0x108]
push eax
push 0
call ebx
test eax, eax
js 0x401e5c
cmp byte [0x425958], 0
lea eax, [ebp - 0x108]
push 0x42564c
je 0x401e41
push 0x425958
push 0x425548
push eax
push str._s_s_s_s_save
push 0x426790
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x18
jmp 0x401e70
push 0x425548
push eax
push str._s_s_s_save
push 0x426790
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
jmp 0x401e70
push 0x104
push 0
push 0x426790
call fcn.0040bcd0
add esp, 0xc
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x42668c
call ebx
inc eax
push eax
push 0x42668c
push 0x425854
call fcn.0040cbb0
add esp, 0xc
push 0x426790
call ebx
inc eax
push eax
push 0x426790
push 0x426588
call fcn.0040cbb0
add esp, 0xc
push 0x104
push 0x425d68
push 0x10
push dword [0x425184]
call edi
push 0x104
push 0x425e6c
push 0x11
push dword [0x425184]
call edi
push 0x104
push 0x425f70
push 0x12
push dword [0x425184]
call edi
push 0x104
push 0x426074
push 0x13
push dword [0x425184]
call edi
push 0x104
push 0x426178
push 0x14
push dword [0x425184]
call edi
push 0x104
push 0x42627c
push 0x15
push dword [0x425184]
call edi
push 0x104
push 0x426380
push 0x16
push dword [0x425184]
call edi
push 0x104
push 0x426484
push 0x17
push dword [0x425184]
call edi
push 0x104
lea eax, [ebp - 0x108]
push eax
push 9
push dword [0x425184]
call edi
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 0
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x42518c], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 1
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x425190], eax
lea eax, [ebp - 0x108]
push 0x104
push eax
push 0xa
push dword [0x425184]
call edi
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 0
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x425194], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 1
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x425198], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 2
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x42519c], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 3
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
mov ecx, dword [0x42519c]
mov edx, eax
mov dword [0x4251a0], edx
mov eax, 0x66666667
imul edx
add esp, 0x10
mov dword [0x4251a4], ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
push 0x104
mov dword [0x4251a8], eax
lea eax, [ebp - 0x108]
push eax
push 0xb
push dword [0x425184]
call edi
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 0
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251ac], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 1
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251b0], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 2
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251b4], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 3
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
mov ecx, dword [0x4251b4]
mov edx, eax
mov dword [0x4251b8], edx
mov eax, 0x55555556
imul edx
add esp, 0x10
mov dword [0x4251ec], ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
push 0x104
mov dword [0x4251f0], eax
lea eax, [ebp - 0x108]
push eax
push 0xc
push dword [0x425184]
call edi
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 0
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251bc], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 1
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251c0], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 2
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251c4], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 3
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
mov ecx, dword [0x4251c4]
mov edx, eax
mov dword [0x4251c8], edx
mov eax, 0x55555556
imul edx
add esp, 0x10
mov dword [0x4251f4], ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
push 0x104
mov dword [0x4251f8], eax
lea eax, [ebp - 0x108]
push eax
push 0xd
push dword [0x425184]
call edi
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 0
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251cc], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 1
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251d0], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 2
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251d4], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 3
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
mov ecx, dword [0x4251d4]
mov edx, eax
mov dword [0x4251d8], edx
mov eax, 0x55555556
imul edx
add esp, 0x10
mov dword [0x4251fc], ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
push 0x104
mov dword [0x425200], eax
lea eax, [ebp - 0x108]
push eax
push 0x18
push dword [0x425184]
call edi
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 0
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251dc], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 1
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251e0], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 2
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea eax, [ebp - 0x208]
push eax
call fcn.0040d681
add esp, 0x10
mov dword [0x4251e4], eax
lea eax, [ebp - 0x108]
push eax
call ebx
push 0x2c
push ecx
push 3
lea edx, [ebp - 0x108]
lea ecx, [ebp - 0x208]
call fcn.0040a8d0
lea ecx, [ebp - 0x208]
push ecx
call fcn.0040d681
mov ecx, dword [0x4251e4]
mov edx, eax
mov eax, 0x55555556
mov dword [0x4251e8], edx
imul edx
add esp, 0x10
mov dword [0x425204], ecx
mov ecx, dword [ebp - 4]
mov eax, edx
shr eax, 0x1f
xor ecx, ebp
add eax, edx
pop edi
pop esi
mov dword [0x425208], eax
mov eax, 1
pop ebx
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret