Function at 0x4122f6
Capabilities:
Check os version
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a0
push ebx
push esi
push edi
mov esi, 0x200
lea eax, [ebp - 0x28c]
push esi
xor ebx, ebx
push ebx
push eax
call fcn.0049a3b0
add esp, 0xc
mov dword [ebp - 0xc], esi
cmp dword [0x505118], ebx
jne 0x412677
mov edi, dword [ebp + 8]
cmp word [edi], bx
je 0x412677
push edi
push 0x4cd524
lea eax, [ebp - 0x28c]
push 0x100
push eax
call fcn.0040adba
push 0x110
lea eax, [ebp - 0x39c]
push ebx
push eax
call fcn.0049a3b0
add esp, 0x1c
lea eax, [ebp - 0x3a0]
mov esi, 0x114
mov dword [ebp - 0x3a0], esi
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x41238e
push esi
lea eax, [ebp - 0x3a0]
push ebx
push eax
call fcn.0049a3b0
add esp, 0xc
call fcn.0047aed9
test eax, eax
je 0x4124cb
lea eax, [ebp - 8]
mov dword [ebp - 8], ebx
push eax
push str._n_vSN
push 3
push ebx
push 0x4d8060
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x412673
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x412673
lea edx, [ebp - 4]
mov dword [ebp - 4], ebx
mov eax, dword [ecx]
xor esi, esi
push edx
inc esi
lea edx, [ebp - 0x28c]
push esi
push ebx
push edx
push ecx
call dword [eax + 0xc]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
push edi
call fcn.00490bf8
pop ecx
test eax, eax
je 0x412402
push dword [ebp - 4]
push str.Winamp.PlayList
jmp 0x412492
push 0x4ccb5c
push edi
call fcn.0049e71a
pop ecx
pop ecx
test eax, eax
je 0x4124a0
push 0x4ccb64
push edi
call fcn.0049e71a
pop ecx
pop ecx
test eax, eax
je 0x4124a0
push 0x4cd54c
push edi
call fcn.0049e71a
pop ecx
pop ecx
test eax, eax
je 0x4124a0
push 0x4ccb6c
push edi
call fcn.0049e71a
pop ecx
pop ecx
test eax, eax
jne 0x412454
push dword [ebp - 4]
push str.Winamp.LangZip
jmp 0x412492
push 0x80
lea eax, [ebp - 0x8c]
push ebx
push eax
call fcn.0049a3b0
lea eax, [ebp - 0x28c]
push eax
push str.Winamp.File
push str._s_hs
lea eax, [ebp - 0x8c]
push 0x40
push eax
call fcn.0040adba
add esp, 0x20
lea eax, [ebp - 0x8c]
push dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x4124b3
mov ebx, esi
jmp 0x4124b3
push dword [ebp - 4]
push str.Winamp.SkinZip
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
cmove ebx, esi
cmp dword [ebp - 4], 0
je 0x412673
push dword [ebp - 4]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x412673
cmp dword [ebp - 0x39c], 6
jb 0x412550
lea eax, [ebp - 4]
mov dword [ebp - 4], ebx
push eax
push str._n_vSN
push 3
push ebx
push 0x4d8060
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x412673
cmp dword [ebp - 4], ebx
je 0x412673
push ebx
push 0x4d758c
mov dword [ebp - 8], ebx
call fcn.00405018
pop ecx
pop ecx
lea edx, [ebp - 8]
mov esi, eax
mov eax, dword [ebp - 4]
push edx
push esi
push 1
mov ecx, dword [eax]
lea edx, [ebp - 0x28c]
push ebx
push edx
push eax
call dword [ecx + 0x10]
push esi
mov edi, eax
call fcn.004a1b5f
pop ecx
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
test edi, edi
js 0x412673
xor ebx, ebx
cmp dword [ebp - 8], ebx
setne bl
jmp 0x412673
lea eax, [ebp - 8]
mov dword [ebp - 8], ebx
push eax
lea eax, [ebp - 0x28c]
push eax
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
jne 0x412677
lea eax, [ebp - 0xc]
mov dword [ebp - 4], ebx
push eax
lea eax, [ebp - 0x28c]
push eax
lea eax, [ebp - 4]
push eax
push ebx
push ebx
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x41266a
xor esi, esi
inc esi
cmp dword [ebp - 4], esi
jne 0x41266a
push 0xb
lea eax, [ebp - 0x28c]
push str.Winamp.File
push eax
call fcn.0049e664
add esp, 0xc
test eax, eax
je 0x412668
push 4
mov ecx, str.Winamp.PlayList
lea eax, [ebp - 0x28c]
pop edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4125f2
test dx, dx
je 0x4125ee
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4125f2
add eax, edi
add ecx, edi
test dx, dx
jne 0x4125ce
mov eax, ebx
jmp 0x4125f6
sbb eax, eax
or eax, esi
test eax, eax
je 0x412668
mov ecx, str.Winamp.SkinZip
lea eax, [ebp - 0x28c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x412629
test dx, dx
je 0x412625
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x412629
add eax, edi
add ecx, edi
test dx, dx
jne 0x412605
mov eax, ebx
jmp 0x41262d
sbb eax, eax
or eax, esi
test eax, eax
je 0x412668
mov ecx, str.Winamp.LangZip
lea eax, [ebp - 0x28c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x412660
test dx, dx
je 0x41265c
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x412660
add eax, edi
add ecx, edi
test dx, dx
jne 0x41263c
mov eax, ebx
jmp 0x412664
sbb eax, eax
or eax, esi
test eax, eax
jne 0x41266a
mov ebx, esi
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
jmp 0x412679
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret