Function at 0x402c80
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x810
mov eax, dword [0x423004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
xor ebx, ebx
mov dword [ebp - 0x80c], ebx
cmp dword [0x42644c], ebx
jne 0x403026
push esi
push edi
push str.SHELL32.DLL
mov dword [0x42644c], 1
mov byte [0x424af0], bl
mov byte [0x4248f0], bl
mov byte [0x426650], bl
mov byte [0x424cf0], bl
mov dword [ebp - 0x808], ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x402ede
push str.SHGetSpecialFolderPathA
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x402dc9
push ebx
push 0x26
push 0x424cf0
push ebx
mov dword [ebp - 0x80c], 1
call esi
cmp eax, 1
je 0x402d27
mov byte [0x424cf0], bl
mov dword [ebp - 0x808], 1
push 1
push 5
push 0x424af0
push ebx
call esi
cmp eax, 1
je 0x402d48
mov byte [0x424af0], bl
mov dword [ebp - 0x808], 1
push 1
push 0x1a
push 0x4248f0
push ebx
call esi
cmp eax, 1
je 0x402d69
mov byte [0x4248f0], bl
mov dword [ebp - 0x808], 1
push 1
push 0x23
push 0x426650
push ebx
call esi
cmp eax, 1
je 0x402d8a
mov byte [0x426650], bl
mov dword [ebp - 0x808], 1
push 1
push 0x17
push 0x426450
push ebx
call esi
cmp eax, 1
je 0x402dab
mov byte [0x426450], bl
mov dword [ebp - 0x808], 1
push 1
push 7
push str.Startup
push ebx
call esi
cmp eax, 1
je 0x402dd2
mov byte [str.Startup], bl
mov esi, 1
jmp 0x402dd8
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x402de8
mov esi, dword [ebp - 0x808]
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp esi, 1
jne 0x402ede
push str.SHFOLDER.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x402e14
push str.SHGetFolderPathA
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
jne 0x402e23
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x402e16
mov esi, ebx
cmp dword [ebp - 0x80c], 1
jne 0x402ede
cmp byte [0x424cf0], bl
jne 0x402e41
push 0x424cf0
push ebx
push ebx
push 0x26
push ebx
call esi
test eax, eax
je 0x402e41
mov byte [0x424cf0], bl
cmp byte [0x424af0], bl
jne 0x402e5f
push 0x424af0
push ebx
push ebx
push 5
push ebx
call esi
test eax, eax
je 0x402e5f
mov byte [0x424af0], bl
cmp byte [0x4248f0], bl
jne 0x402e7d
push 0x4248f0
push ebx
push ebx
push 0x1a
push ebx
call esi
test eax, eax
je 0x402e7d
mov byte [0x4248f0], bl
cmp byte [0x426650], bl
jne 0x402e9b
push 0x426650
push ebx
push ebx
push 0x23
push ebx
call esi
test eax, eax
je 0x402e9b
mov byte [0x426650], bl
cmp byte [0x426450], bl
jne 0x402eb9
push 0x426450
push ebx
push ebx
push 0x17
push ebx
call esi
test eax, eax
je 0x402eb9
mov byte [0x426450], bl
cmp byte [str.Startup], bl
jne 0x402ed7
push str.Startup
push ebx
push ebx
push 7
push ebx
call esi
test eax, eax
je 0x402ed7
mov byte [str.Startup], bl
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp byte [0x424cf0], bl
jne 0x402f82
push 0x7d0
lea eax, [ebp - 0x804]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea ecx, [ebp - 0x804]
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
cmp dl, bl
jne 0x402f05
sub ecx, esi
cmp eax, ecx
je 0x402f2e
mov cx, word [0x41ac28]
mov dl, byte [0x41ac2a]
mov word [ebp - 0x804], cx
mov byte [ebp - 0x802], dl
jmp 0x402f39
lea edi, [ebp - 0x804]
call fcn.00402220
lea eax, [ebp - 0x804]
dec eax
mov cl, byte [eax + 1]
inc eax
cmp cl, bl
jne 0x402f40
mov ecx, dword [str.Program_Files_]
mov edx, dword [0x41ac30]
mov dword [eax], ecx
mov ecx, dword [0x41ac34]
mov dword [eax + 4], edx
mov edx, dword [0x41ac38]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
xor eax, eax
lea ecx, [ecx]
mov cl, byte [ebp + eax - 0x804]
mov byte [eax + 0x424cf0], cl
inc eax
cmp cl, bl
jne 0x402f70
cmp byte [0x424af0], bl
jne 0x402f9a
push 0x424af0
push 0x7ff
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
cmp byte [0x4248f0], bl
jne 0x402fc1
xor eax, eax
jmp 0x402fb0
mov cl, byte [eax + 0x424af0]
mov byte [eax + 0x4248f0], cl
inc eax
cmp cl, bl
jne 0x402fb0
cmp byte [0x426650], bl
jne 0x403024
xor eax, eax
jmp 0x402fd0
mov cl, byte [eax + 0x424cf0]
mov byte [eax + 0x426650], cl
inc eax
cmp cl, bl
jne 0x402fd0
mov edi, 0x426650
call fcn.00402220
mov eax, edi
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
cmp cl, bl
jne 0x402ff0
mov ecx, dword [str.VB_AudioCommonAPP]
mov edx, dword [0x41ac40]
mov dword [eax], ecx
mov ecx, dword [0x41ac44]
mov dword [eax + 4], edx
mov edx, dword [0x41ac48]
mov dword [eax + 8], ecx
mov ecx, dword [0x41ac4c]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop ebx
call fcn.0040a567
mov esp, ebp
pop ebp
ret