Function at 0x405992
Capabilities:
Create directory
Get common file path
Read .ini file

Disassembly:
sub esp, 0x208
cmp byte [0x47b050], 0
push ebx
push ebp
push esi
push edi
mov edi, 0x104
mov ebp, 0x47b050
jne 0x4059bb
push 0x475108
push edi
push ebp
call fcn.004025ff
xor esi, esi
cmp word [0x47ac40], si
mov ebx, 0x47ac40
jne 0x4059d8
push edi
push ebx
push 0xffffffffffffffff
push ebp
push esi
push esi
call dword [0x473f1c]
cmp word [0x47ae48], si
jne 0x4059ee
push edi
mov eax, ebx
mov edx, 0x47ae48
call fcn.00403759
push esi
push ebx
call dword [0x473ed4]
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov esi, dword [sym.imp.SHLWAPI.dll_PathCombineW]
push str.Winamp.m3u
push ebx
push 0x475210
call esi
push str.Winamp.m3u8
push ebx
push 0x4764b0
call esi
mov esi, dword [sym.imp.SHLWAPI.dll_PathCombineA]
push str.Winamp.pic
push ebp
push 0x4769c8
call esi
push str.Winamp.lks
push ebp
push 0x476198
call esi
push str.Winamp.bm
push ebp
push 0x475628
call esi
push str.Winampmb.htm
push ebp
push 0x475730
call esi
push str.Winamp.q1
push ebp
push 0x475e70
call esi
push str.Winamp.q2
push ebp
push 0x475d60
call esi
lea eax, [esp + 0x114]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push str.Winamp.tmp
lea eax, [esp + 0x118]
push eax
push 0x4763a8
call esi
push str.demo.mp3
push ebx
push 0x4766b8
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
cmp byte [0x47b158], 0
je 0x405ad7
mov ebx, 0x47b158
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsFileSpecA]
test eax, eax
je 0x405ae4
push ebx
push ebp
lea eax, [esp + 0x18]
push eax
call esi
push edi
lea eax, [esp + 0x14]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x405ae4
push str.Winamp.ini
push ebp
push 0x47b158
call esi
push 0x468104
mov ebp, 0x475108
push ebp
push 0x475a50
call esi
push str.Plugins
push ebp
mov ebx, 0x475f80
push ebx
call esi
push str.System
push ebp
push 0x475520
call esi
push ebx
push edi
push 0x475418
call fcn.004025ff
push ebx
push edi
push 0x476090
call fcn.004025ff
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov esi, 0x47b158
push esi
push edi
lea eax, [esp + 0x18]
push eax
push 0x468a9b
push str.PluginDir
push dword [0x480960]
call ebp
lea eax, [esp + 0x10]
mov cl, byte [eax]
cmp cl, 0x20
je 0x405b5d
cmp cl, 9
jne 0x405b60
inc eax
jmp 0x405b51
cmp byte [eax], 0
je 0x405b71
lea eax, [esp + 0x10]
push eax
push edi
push ebx
call fcn.004025ff
push esi
push edi
lea eax, [esp + 0x18]
push eax
mov ebx, 0x468a9b
push ebx
push str.DSPDir
push dword [0x480960]
call ebp
lea eax, [esp + 0x10]
mov cl, byte [eax]
cmp cl, 0x20
je 0x405b9b
cmp cl, 9
jne 0x405b9e
inc eax
jmp 0x405b8f
cmp byte [eax], 0
je 0x405bb3
lea eax, [esp + 0x10]
push eax
push edi
push 0x476090
call fcn.004025ff
push esi
push edi
lea eax, [esp + 0x18]
push eax
push ebx
push str.VISDir
push dword [0x480960]
call ebp
lea eax, [esp + 0x10]
mov cl, byte [eax]
cmp cl, 0x20
je 0x405bd8
cmp cl, 9
jne 0x405bdb
inc eax
jmp 0x405bcc
cmp byte [eax], 0
je 0x405bf0
lea eax, [esp + 0x10]
push eax
push edi
push 0x475418
call fcn.004025ff
push esi
push edi
lea eax, [esp + 0x18]
push eax
push ebx
push str.SkinDir
push dword [0x480960]
call ebp
lea eax, [esp + 0x10]
mov cl, byte [eax]
cmp cl, 0x20
je 0x405c15
cmp cl, 9
jne 0x405c18
inc eax
jmp 0x405c09
cmp byte [eax], 0
je 0x405c2d
lea eax, [esp + 0x10]
push eax
push edi
push 0x475a50
call fcn.004025ff
lea eax, [esp + 0x10]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push 0x4768c0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push 0x4680cc
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
movzx eax, byte [0x4769c5]
push eax
push str.minst
call fcn.00403870
pop ecx
pop ecx
pop edi
pop esi
pop ebp
mov byte [0x4769c5], al
pop ebx
add esp, 0x208
ret