Function at 0x472350
Capabilities:
Get common file path
Link many functions at runtime
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a083e
mov eax, dword fs:[0]
push eax
sub esp, 0x430
mov eax, dword [0x4c4330]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x430], eax
add eax, 0xc
push eax
mov dword [ebp - 0x434], eax
lea eax, [ebp - 0x42c]
push eax
mov ebx, str.extfa.dll
call fcn.0045bec0
add esp, 8
mov dword [ebp - 4], 0
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
mov esi, dword [sym.imp.ole32.dll_OleUninitialize]
test eax, eax
js 0x4723fb
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x4723f9
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472af8
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa1
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.box.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 1
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x472469
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x4724b2
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x4724b0
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472b16
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa2
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.StormWeb.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 2
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x472520
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x472569
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x472567
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472b2e
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa3
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.webplayerPlayerShell.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 3
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4725d7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x472620
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x47261e
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472b46
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa4
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.ShellDrag.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 4
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47268e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x4726d7
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x4726d5
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472b5e
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa5
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.ShellMenu.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 5
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x472745
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x47278e
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x47278c
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472b76
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa6
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.InstallStormPlayer.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 6
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4727fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x472845
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x472843
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472b8e
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa7
call fcn.00479ea0
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x428]
push edx
mov ebx, str.stormpop.exe
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 7
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4728b3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x42c]
push str._InstallReg
push ecx
call fcn.00458700
add esp, 8
test al, al
jne 0x4728e9
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0xfa8
call fcn.00479ea0
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x21a]
push eax
mov word [ebp - 0x21c], dx
call fcn.00488d60
add esp, 0xc
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x21c]
push edx
lea eax, [ebp - 0x438]
push eax
push str.ThreadingModel
push str.CLSIDF6D90F11_9C73_11D3_B32E_00C04F990BB4InProcServer32
push SysReAllocString
mov dword [ebp - 0x428], 0x102
mov dword [ebp - 0x438], 1
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
je 0x472a15
push 1
push 0x25
lea ecx, [ebp - 0x424]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea edx, [ebp - 0x428]
push edx
lea ecx, [ebp - 0x424]
call fcn.0045a880
push 0xb
push str.msxml3.dll
lea ebx, [ebp - 0x428]
mov byte [ebp - 4], 8
call fcn.0045a3e0
mov edi, dword [ebp - 0x428]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x4729d1
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x4729cf
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x472ba6
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov edi, dword [ebp - 0x430]
add edi, 0x6c
lea eax, [ebp - 0x438]
mov dword [ebp - 0x438], 0xfa9
call fcn.00479ea0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x472a15
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x434]
push ecx
lea edx, [ebp - 0x438]
push edx
mov ebx, str.FileTips.dll
call fcn.0045bec0
add esp, 8
lea edi, [ebp - 0x42c]
mov byte [ebp - 4], 9
call fcn.0045bfa0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x438]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x472a65
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x42c]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
js 0x472aac
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 8
push 0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
cmp edi, 0x20
jb 0x472aaa
push str.DllRegisterServer
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x472aa3
call eax
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x42c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x472ad5
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 - 0x14]
xor ecx, ebp
call fcn.00485631
mov esp, ebp
pop ebp
ret 4
call eax
push edi
test eax, eax
js 0x4723f3
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, dword [sym.imp.ole32.dll_OleUninitialize]
call esi
jmp 0x472419
call eax
push edi
test eax, eax
js 0x4724aa
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x4724d0
call eax
push edi
test eax, eax
js 0x472561
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x472587
call eax
push edi
test eax, eax
js 0x472618
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x47263e
call eax
push edi
test eax, eax
js 0x4726cf
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x4726f5
call eax
push edi
test eax, eax
js 0x472786
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x4727ac
call eax
push edi
test eax, eax
js 0x47283d
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x472863
call eax
push edi
test eax, eax
js 0x4729c9
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call esi
jmp 0x4729ef