Function at 0x474a40
Capabilities:
Check os version
Create directory
Create process on windows
Get common file path
Get session user name
Persist via app paths registry key
Persist via default file association registry key
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a079b
mov eax, dword fs:[0]
push eax
mov eax, 0x165c
call fcn.0048c0e0
mov eax, dword [0x4c4330]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x1634], esi
add esi, 0xc
lea eax, [ebp - 0x163c]
push esi
push eax
mov ebx, str.StormPlayer.exe
mov dword [ebp - 0x164c], esi
call fcn.0045bec0
lea ecx, [ebp - 0x1660]
push esi
push ecx
mov ebx, 0x4abd80
mov dword [ebp - 4], 0
call fcn.0045bec0
lea edx, [ebp - 0x1650]
push esi
push edx
mov ebx, str.uninst.exe
mov byte [ebp - 4], 1
call fcn.0045bec0
mov byte [ebp - 4], 2
mov eax, dword [esi]
push 0x5c
push eax
call fcn.00487b83
add esp, 0x20
test eax, eax
jne 0x474ade
or eax, 0xffffffff
jmp 0x474ae2
sub eax, dword [esi]
sar eax, 1
lea ecx, [ebp - 0x1648]
mov edx, esi
call fcn.0045c980
push 1
push 0
lea eax, [ebp - 0x218]
push eax
push 0
mov byte [ebp - 4], 3
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea ecx, [ebp - 0x1644]
push ecx
mov ecx, 0x4ae174
call fcn.0045a880
lea edx, [ebp - 0x1664]
push edx
mov ecx, 0x4ae188
mov byte [ebp - 4], 4
call fcn.0045a880
lea eax, [ebp - 0x165c]
push eax
mov ecx, 0x4ae19c
mov byte [ebp - 4], 5
call fcn.0045a880
push 0
mov byte [ebp - 4], 6
call dword [sym.imp.ole32.dll_CoInitialize]
mov ecx, dword [ebp - 0x1648]
mov edi, dword [ebp - 0x163c]
push 0
push ecx
mov ecx, dword [ebp - 0x1644]
lea edx, [ebp - 0x218]
push edx
xor edx, edx
mov ebx, 0x4ae1b4
call fcn.0047a920
test eax, eax
jne 0x474b97
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x1630]
mov dword [ebp - 0x1630], 0x1389
call fcn.00479ea0
mov eax, dword [ebp - 0x1634]
cmp dword [eax + 0x60], 0
je 0x474c70
lea ecx, [ebp - 0x1630]
push esi
push ecx
mov ebx, 0x4abda4
call fcn.0045bec0
add esp, 8
lea edx, [ebp - 0x1640]
push edx
mov ecx, 0x4ae1c0
mov byte [ebp - 4], 7
call fcn.0045a880
mov byte [ebp - 4], 8
mov esi, dword [ebp - 0x1648]
mov ecx, dword [ebp - 0x1640]
mov edi, dword [ebp - 0x1630]
push 0
push esi
lea eax, [ebp - 0x218]
push eax
mov edx, str._DESKTOP
mov ebx, 0x4ae1e8
call fcn.0047a920
test eax, eax
jne 0x474c22
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x138a
call fcn.00479ea0
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x1640]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x474c48
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x1630]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x474c76
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x474c76
mov esi, dword [ebp - 0x1648]
push 0x104
lea ecx, [ebp - 0x218]
push 0
push ecx
call fcn.00488d60
add esp, 0xc
push 1
push 0x1a
lea edx, [ebp - 0x218]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x474cce
lea edi, [ebp - 0x218]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x474cb0
mov ecx, 0x15
mov esi, 0x4afe20
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x1648]
mov ecx, dword [ebp - 0x1644]
mov edi, dword [ebp - 0x163c]
push 0
push esi
lea eax, [ebp - 0x218]
push eax
xor edx, edx
mov ebx, 0x4ae1b4
call fcn.0047a920
test eax, eax
jne 0x474d12
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x138b
call fcn.00479ea0
push 0x104
lea ecx, [ebp - 0x218]
push 0
push ecx
call fcn.00488d60
add esp, 0xc
push 1
push 0x17
lea edx, [ebp - 0x218]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0x1638]
push eax
lea ecx, [ebp - 0x218]
call fcn.0045a880
lea ecx, [ebp - 0x1638]
push ecx
lea edx, [ebp - 0x1630]
push edx
mov ebx, 0x4a9c38
mov byte [ebp - 4], 9
call fcn.0045bec0
push eax
lea eax, [ebp - 0x162c]
push eax
mov ebx, 0x4ae1b4
mov byte [ebp - 4], 0xa
call fcn.0045bec0
add esp, 0x10
lea edi, [ebp - 0x1638]
mov byte [ebp - 4], 0xb
call fcn.0045bfa0
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x162c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x474db7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x1630]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x474ddd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x1638]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov eax, dword [ebp - 0x1638]
test eax, eax
je 0x474e19
mov ecx, dword [ebp - 0x1644]
mov edi, dword [ebp - 0x163c]
push str.Baofeng.StormPlayer.WIN7APPID
push esi
push eax
xor edx, edx
mov ebx, 0x4ae1b4
call fcn.0047a920
test eax, eax
jne 0x474e37
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x138c
call fcn.00479ea0
mov eax, dword [ebp - 0x1638]
test eax, eax
je 0x474e61
mov ecx, dword [ebp - 0x1664]
mov edi, dword [ebp - 0x1660]
push 0
push esi
push eax
xor edx, edx
mov ebx, 0x4ae230
call fcn.0047a920
test eax, eax
jne 0x474e7f
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x138d
call fcn.00479ea0
mov eax, dword [ebp - 0x1638]
test eax, eax
je 0x474ea9
mov ecx, dword [ebp - 0x165c]
mov edi, dword [ebp - 0x1650]
push 0
push esi
push eax
xor edx, edx
mov ebx, 0x4ae244
call fcn.0047a920
test eax, eax
jne 0x474ec7
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x138e
call fcn.00479ea0
call dword [sym.imp.ole32.dll_CoUninitialize]
lea edx, [ebp - 0x338]
push edx
mov dword [ebp - 0x338], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x334], 6
jne 0x474f94
cmp dword [ebp - 0x330], 1
jne 0x474f94
lea eax, [ebp - 0x1638]
push eax
lea ecx, [ebp - 0x162c]
push ecx
mov ebx, 0x4a9c38
call fcn.0045bec0
lea edx, [ebp - 0x1644]
push edx
lea ecx, [ebp - 0x1630]
push ecx
mov ebx, eax
mov byte [ebp - 4], 0xc
call fcn.0045be10
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x162c]
add eax, 0xfffffff0
add esp, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x474f58
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x1630]
push 0
push 0
push 0
push ecx
push str.taskbarpin
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov eax, dword [ebp - 0x1630]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x474f94
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x163c]
push ecx
push 0x4a691c
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionApp_PathsStormPlayer.exe
mov ebx, reloc.OLEAUT32.dll_SysReAllocString
call fcn.0045c190
mov esi, dword [ebp - 0x1634]
add esp, 8
test al, al
jne 0x474fd4
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x138f
call fcn.00479ea0
push 0x4ae1b4
push str.DisplayName
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionUninstallStormPlayer
call fcn.0045c190
add esp, 8
test al, al
jne 0x475007
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1390
call fcn.00479ea0
mov edx, dword [ebp - 0x1650]
push edx
push str.UninstallString
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionUninstallStormPlayer
call fcn.0045c190
add esp, 8
test al, al
jne 0x47503c
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1391
call fcn.00479ea0
mov eax, dword [ebp - 0x163c]
push eax
push str.DisplayIcon
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionUninstallStormPlayer
call fcn.0045c190
add esp, 8
test al, al
jne 0x475071
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1392
call fcn.00479ea0
push str.5.12.0523.1111
push str.DisplayVersion
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionUninstallStormPlayer
call fcn.0045c190
add esp, 8
test al, al
jne 0x4750a4
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1393
call fcn.00479ea0
push str.http:__www.Baofeng.com
push str.URLInfoAbout
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionUninstallStormPlayer
call fcn.0045c190
add esp, 8
test al, al
jne 0x4750d7
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1394
call fcn.00479ea0
push 0x4ae354
push str.Publisher
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionUninstallStormPlayer
call fcn.0045c190
add esp, 8
test al, al
jne 0x47510a
lea edi, [esi + 0x6c]
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1395
call fcn.00479ea0
push 4
lea ecx, [ebp - 0x1630]
push ecx
push 4
push str.InstallActiveFlag
push str.SoftwareBaofengStormPlayerUserConfig
push SysReAllocString
mov dword [ebp - 0x1630], 1
call dword [sym.imp.SHLWAPI.dll_SHSetValueW]
mov esi, dword [sym.imp.ADVAPI32.dll_GetUserNameW]
mov ebx, eax
cmp ebx, 5
jne 0x475214
lea edx, [ebp - 0x162c]
push edx
lea eax, [ebp - 0x420]
push eax
mov dword [ebp - 0x162c], 0x202
call esi
push str.SoftwareBaofengStormPlayerUserConfig
push str.CURRENT_USER
push str._s_s
lea ecx, [ebp - 0xe28]
push 0x800
push ecx
call fcn.00487bb1
add esp, 0x14
push 0xf003f
lea edx, [ebp - 0x420]
push edx
push 2
lea edi, [ebp - 0xe28]
call fcn.0045c3f0
test eax, eax
je 0x475218
push 4
lea eax, [ebp - 0x1630]
push eax
push 4
push str.InstallActiveFlag
push str.SoftwareBaofengStormPlayerUserConfig
push SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHSetValueW]
lea ecx, [ebp - 0x1640]
push ecx
lea edx, [ebp - 0x628]
push edx
mov ebx, eax
mov dword [ebp - 0x1640], 0x202
call esi
push str.SoftwareBaofengStormPlayerUserConfig
push str.CURRENT_USER
push str._s_s
lea eax, [ebp - 0x1628]
push 0x800
push eax
call fcn.00487bb1
add esp, 0x14
push 2
lea ecx, [ebp - 0x628]
push ecx
push 3
lea edi, [ebp - 0x1628]
call fcn.0045c3f0
test ebx, ebx
je 0x475236
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1396
call fcn.00479ea0
push 4
lea edx, [ebp - 0x1630]
push edx
push 4
push str.FirstHideBox
push str.SoftwareBaofengStormPlayerUserConfig
push SysReAllocString
mov dword [ebp - 0x1630], 1
call dword [sym.imp.SHLWAPI.dll_SHSetValueW]
mov ebx, eax
cmp ebx, 5
jne 0x47533a
lea eax, [ebp - 0x162c]
push eax
lea ecx, [ebp - 0x628]
push ecx
mov dword [ebp - 0x162c], 0x202
call esi
push str.SoftwareBaofengStormPlayerUserConfig
push str.CURRENT_USER
push str._s_s
lea edx, [ebp - 0x1628]
push 0x800
push edx
call fcn.00487bb1
add esp, 0x14
push 0xf003f
lea eax, [ebp - 0x628]
push eax
push 2
lea edi, [ebp - 0x1628]
call fcn.0045c3f0
test eax, eax
je 0x47533a
push 4
lea ecx, [ebp - 0x1630]
push ecx
push 4
push str.FirstHideBox
push str.SoftwareBaofengStormPlayerUserConfig
push SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHSetValueW]
lea edx, [ebp - 0x1640]
mov ebx, eax
push edx
lea eax, [ebp - 0x420]
push eax
mov dword [ebp - 0x1640], 0x202
call esi
push str.SoftwareBaofengStormPlayerUserConfig
push str.CURRENT_USER
push str._s_s
lea ecx, [ebp - 0xe28]
push 0x800
push ecx
call fcn.00487bb1
add esp, 0x14
push 2
lea edx, [ebp - 0x420]
push edx
push 3
lea edi, [ebp - 0xe28]
call fcn.0045c3f0
test ebx, ebx
sete al
test al, al
jne 0x475361
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1397
call fcn.00479ea0
mov eax, dword [ebp - 0x1634]
cmp dword [eax + 4], 0
je 0x4753a3
push 1
mov ebx, str.InstallType
mov esi, str.SoftwareBaofengStormPlayerUserConfig
call fcn.0045c120
add esp, 4
test al, al
jne 0x4753a3
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x162c]
mov dword [ebp - 0x162c], 0x1398
call fcn.00479ea0
push str.URL:_Storm_Download_Protocol
push 0x4a691c
mov edi, str.StormDL
mov ebx, SysReAllocString
call fcn.0045c190
push 0x4a691c
push str.URL_Protocol
call fcn.0045c190
mov ecx, dword [ebp - 0x164c]
push ecx
lea edx, [ebp - 0x1654]
push edx
mov ebx, 0x4abe28
call fcn.0045bec0
lea eax, [ebp - 0x162c]
push 0x4a9c60
push eax
lea ecx, [ebp - 0x1654]
mov byte [ebp - 4], 0xd
call fcn.00479db0
push eax
lea ecx, [ebp - 0x164c]
push ecx
mov ebx, 0x4a9c60
mov byte [ebp - 4], 0xe
call fcn.0045bec0
push eax
lea edx, [ebp - 0x1658]
push edx
mov ebx, str.__TypeDZone__DZUrl__1___FromWeb
mov byte [ebp - 4], 0xf
call fcn.0045bec0
add esp, 0x30
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x164c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475453
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0x12
mov eax, dword [ebp - 0x162c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475479
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x1658]
push ecx
push 0x4a691c
mov edi, str.StormDL_shellopencommand
mov ebx, SysReAllocString
call fcn.0045c190
push 1
mov ebx, str.AutoRun
mov esi, str.SoftwareBaofengStormPlayerConfigRepairAutoRun
call fcn.0045c120
add esp, 0xc
test al, al
jne 0x4754ca
mov edi, dword [ebp - 0x1634]
add edi, 0x6c
lea eax, [ebp - 0x1630]
mov dword [ebp - 0x1630], 0x1399
call fcn.00479ea0
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x1658]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4754f0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x1654]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475516
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x1638]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47553c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x165c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475562
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x1664]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475588
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x1644]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4755ae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x1648]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4755d4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x1650]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4755fa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x1660]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475620
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x163c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x475649
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00485631
mov esp, ebp
pop ebp
ret