Function at 0x415986
Capabilities:
Check if file exists
Get file attributes
Get file version info
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x340
mov eax, dword [0x433024]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [ebp - 0x32c]
push eax
xor esi, esi
mov ebx, 0x20019
push ebx
push esi
push str.http_shell
push SysReAllocString
mov dword [ebp - 0x328], 1
mov dword [ebp - 0x32c], esi
mov dword [ebp - 0x330], esi
call edi
test eax, eax
jne 0x415c43
push 0xc6
lea eax, [ebp - 0xca]
push esi
push eax
mov dword [ebp - 0x334], 1
mov word [ebp - 0xcc], si
call sub.MSVCR80.dll_memset
add esp, 0xc
lea eax, [ebp - 0x338]
push eax
lea eax, [ebp - 0xcc]
push eax
lea eax, [ebp - 0x334]
push eax
push esi
push esi
push dword [ebp - 0x32c]
mov dword [ebp - 0x338], 0xc8
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
cmp word [ebp - 0xcc], si
mov word [ebp - 6], si
jne 0x415a67
mov word [ebp - 0xcc], 0x6f
mov word [ebp - 0xca], 0x70
mov word [ebp - 0xc8], 0x65
mov word [ebp - 0xc6], 0x6e
mov word [ebp - 0xc4], si
push 0x64
mov ecx, str.Command
lea eax, [ebp - 0xcc]
call fcn.004150a6
pop ecx
lea eax, [ebp - 0x330]
push eax
push ebx
push esi
lea eax, [ebp - 0xcc]
push eax
push dword [ebp - 0x32c]
call edi
push dword [ebp - 0x32c]
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call edi
push 0x256
lea eax, [ebp - 0x322]
push esi
push eax
mov word [ebp - 0x324], si
call sub.MSVCR80.dll_memset
add esp, 0xc
cmp dword [ebp - 0x330], esi
je 0x415b03
lea eax, [ebp - 0x338]
push eax
lea eax, [ebp - 0x324]
push eax
lea eax, [ebp - 0x334]
push eax
push esi
push esi
push dword [ebp - 0x330]
mov dword [ebp - 0x338], 0x258
mov dword [ebp - 0x334], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x330]
call edi
xor edx, edx
cmp word [ebp - 0x324], 0x22
sete dl
mov eax, edx
cmp edx, esi
movzx ecx, word [ebp + eax*2 - 0x324]
je 0x415b24
cmp cx, 0x22
jmp 0x415b2e
cmp cx, 0x20
je 0x415b38
cmp cx, 9
je 0x415b38
cmp cx, si
je 0x415b38
inc eax
jmp 0x415b12
sub eax, edx
add eax, eax
mov edi, eax
lea eax, [ebp + edx*2 - 0x324]
push edi
push eax
lea eax, [ebp - 0x324]
push eax
call dword [sym.imp.MSVCR80.dll_memmove]
add esp, 0xc
lea eax, [ebp - 0x324]
push eax
mov word [ebp + edi - 0x324], si
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x415b77
mov dword [ebp - 0x328], esi
mov edi, dword [sym.imp.MSVCR80.dll_wcslen]
lea eax, [ebp - 0x324]
push eax
call edi
cmp eax, 0xc
pop ecx
jb 0x415c43
lea eax, [ebp - 0x324]
push str.iexplore.exe
push eax
call edi
pop ecx
lea eax, [ebp + eax*2 - 0x33c]
push eax
call dword [sym.imp.MSVCR80.dll__wcsicmp]
test eax, eax
pop ecx
pop ecx
jne 0x415c43
push esi
lea eax, [ebp - 0x324]
push eax
mov dword [ebp - 0x328], 3
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov edi, eax
cmp edi, esi
je 0x415c43
push edi
call fcn.0041ebf4
pop ecx
mov ebx, eax
push ebx
push edi
push esi
lea eax, [ebp - 0x324]
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x415c38
lea eax, [ebp - 0x340]
push eax
lea eax, [ebp - 0x33c]
push eax
push 0x428334
push ebx
mov dword [ebp - 0x33c], esi
mov dword [ebp - 0x340], esi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x415c38
mov eax, dword [ebp - 0x33c]
mov eax, dword [eax + 8]
and eax, 0xffff0000
cmp eax, 0x60000
ja 0x415c38
mov dword [ebp - 0x328], 2
cmp ebx, esi
je 0x415c43
push ebx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
pop ecx
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x328]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041ec06
leave
ret