Function at 0x4152f6
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x490a84
mov eax, dword fs:[0]
push eax
sub esp, 0xd8
mov eax, dword [0x4b9e20]
xor eax, esp
mov dword [esp + 0xd0], eax
push ebx
push esi
push edi
mov eax, dword [0x4b9e20]
xor eax, esp
push eax
lea eax, [esp + 0xe8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x14], ebx
inc esi
mov dword [esp + 0x10], eax
cmp dword [0x4bfb94], ebx
je 0x41536c
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x34], esp
push str.GetDefaultBrowser_in
call fcn.00409f78
mov ecx, 0x4bfcf0
call fcn.004437f6
xor eax, eax
mov dword [esp + 0x30], 7
mov dword [esp + 0x2c], ebx
mov word [esp + 0x1c], ax
mov dword [esp + 0xf0], ebx
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp al, 6
jb 0x415504
push str.Progid
lea ecx, [esp + 0x90]
call fcn.0040a4c4
push str.SoftwareMicrosoftWindowsShellAssociationsUrlAssociationshttpuserchoice
lea ecx, [esp + 0xac]
mov byte [esp + 0xf4], 1
call fcn.0040a4c4
push str.HKEY_CURRENT_USER
lea ecx, [esp + 0x3c]
mov byte [esp + 0xf4], 2
call fcn.0040a4c4
push ebx
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x5c]
push eax
lea edx, [esp + 0xb4]
lea ecx, [esp + 0x44]
mov byte [esp + 0xfc], 3
call fcn.00457360
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xf4], 4
call fcn.0040ba5a
push ebx
push esi
lea ecx, [esp + 0x5c]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0x40]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0xb0]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0x94]
mov byte [esp + 0xf8], bl
call fcn.0040bba0
cmp dword [0x4bfb94], ebx
je 0x41546e
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x34], esp
push str.GetDefaultBrowser_vista
call fcn.00409f78
mov ecx, 0x4bfcf0
call fcn.004437f6
cmp dword [esp + 0x2c], ebx
jbe 0x41550e
lea eax, [esp + 0xa8]
push str.HKEY_CLASSES_ROOT_
push eax
lea edi, [esp + 0x24]
call fcn.0040fb97
lea ecx, [esp + 0x94]
push str._shellopencommand_
push ecx
mov esi, eax
mov byte [esp + 0x100], 5
call fcn.00418f59
add esp, 0x10
mov edx, eax
lea ecx, [esp + 0x54]
mov byte [esp + 0xf0], 6
call fcn.004571c6
push eax
mov ecx, edi
mov byte [esp + 0xf4], 7
call fcn.0040ba5a
push ebx
push 1
lea ecx, [esp + 0x5c]
call fcn.0040bba0
push ebx
push 1
lea ecx, [esp + 0x94]
call fcn.0040bba0
push ebx
push 1
lea ecx, [esp + 0xb0]
mov byte [esp + 0xf8], bl
call fcn.0040bba0
xor esi, esi
inc esi
cmp dword [esp + 0x2c], ebx
ja 0x415615
push 0x49bf38
lea ecx, [esp + 0x3c]
call fcn.0040a4c4
push str.http_shellopencommand_
lea ecx, [esp + 0xac]
mov byte [esp + 0xf4], 8
call fcn.0040a4c4
push str.HKEY_CLASSES_ROOT
lea ecx, [esp + 0x90]
mov byte [esp + 0xf4], 9
call fcn.0040a4c4
push ebx
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x5c]
push eax
lea edx, [esp + 0xb4]
lea ecx, [esp + 0x98]
mov byte [esp + 0xfc], 0xa
call fcn.00457360
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xf4], 0xb
call fcn.0040ba5a
push ebx
push esi
lea ecx, [esp + 0x5c]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0x94]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0xb0]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0x40]
mov byte [esp + 0xf8], bl
call fcn.0040bba0
cmp dword [0x4bfb94], ebx
je 0x415615
lea eax, [esp + 0x54]
push esi
push eax
lea ecx, [esp + 0x24]
call fcn.00456a76
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x110], 0xc
mov dword [esp + 0x34], esp
push eax
push str.GetDefaultBrowser_xp
push ecx
call fcn.0040fae8
add esp, 0xc
mov ecx, 0x4bfcf0
call fcn.004437f6
push ebx
push esi
lea ecx, [esp + 0x5c]
mov byte [esp + 0xf8], bl
call fcn.00401524
push 0x49bf38
lea edi, [esp + 0x20]
call fcn.00410e89
test eax, eax
jne 0x4156eb
mov edi, dword [sym.imp.SHLWAPI.dll_AssocQueryStringW]
lea eax, [esp + 0x18]
push eax
push ebx
push str.Open
mov esi, str.http
push esi
push 2
push ebx
mov dword [esp + 0x30], ebx
call edi
cmp eax, 1
jne 0x4156e2
cmp dword [esp + 0x18], ebx
je 0x4156e2
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
xor ecx, ecx
push 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045c4ea
pop ecx
mov dword [esp + 0x14], eax
cmp eax, ebx
jne 0x415697
mov ecx, dword [esp + 0x10]
push 0x49bf38
call fcn.0040a4c4
push ebx
jmp 0x4159e2
mov ecx, dword [esp + 0x18]
add ecx, ecx
push ecx
push ebx
push eax
call fcn.0046fc60
add esp, 0xc
lea eax, [esp + 0x18]
push eax
push dword [esp + 0x18]
push str.Open
push esi
push 2
push ebx
call edi
test eax, eax
jne 0x4156d8
push dword [esp + 0x14]
call fcn.0046faa4
pop ecx
push eax
push dword [esp + 0x18]
lea ecx, [esp + 0x24]
call fcn.0040cee2
push dword [esp + 0x14]
call fcn.0046e04a
pop ecx
cmp dword [esp + 0x2c], ebx
je 0x415683
xor esi, esi
inc esi
mov edi, 0x49dcd4
push edi
call fcn.0046faa4
pop ecx
push eax
push edi
xor eax, eax
lea ecx, [esp + 0x24]
call fcn.0041835a
cmp eax, ebx
jle 0x41573f
dec eax
push eax
push esi
lea eax, [esp + 0x24]
push eax
lea esi, [esp + 0x60]
call fcn.0040a5d3
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xf4], 0xd
call fcn.0040ba5a
push ebx
push 1
mov ecx, esi
mov byte [esp + 0xf8], bl
call fcn.0040bba0
xor esi, esi
inc esi
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x20]
call fcn.004151bd
pop ecx
mov byte [esp + 0xf0], 0xe
cmp dword [esp + 0x30], 8
mov ecx, dword [esp + 0x1c]
mov edx, ecx
jae 0x415810
lea edx, [esp + 0x1c]
mov eax, edx
cmp dword [esp + 0x30], 8
mov edi, dword [esp + 0x2c]
lea eax, [eax + edi*2]
jae 0x41577f
lea ecx, [esp + 0x1c]
push fcn.00470f23
push edx
push eax
push ecx
lea eax, [esp + 0x24]
push eax
call fcn.00418ff0
add esp, 0x14
mov edi, str.iexplore
push edi
call fcn.0046faa4
pop ecx
push eax
push edi
xor eax, eax
lea ecx, [esp + 0x24]
call fcn.0041835a
cmp eax, ebx
jl 0x415817
xor eax, eax
push 0xffffffffffffffff
mov word [esp + 0x3c], ax
push ebx
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x44]
mov dword [esp + 0x58], 7
mov dword [esp + 0x54], ebx
call fcn.0040baae
lea eax, [esp + 0x38]
push eax
mov byte [esp + 0xf4], 0xf
push 0x49dcf0
push dword [esp + 0x18]
call fcn.0041902c
add esp, 0xc
push ebx
push esi
lea ecx, [esp + 0x40]
call fcn.0040bba0
push ebx
push esi
lea ecx, [esp + 0x78]
call fcn.0040bba0
push ebx
push esi
jmp 0x4159e4
mov eax, ecx
jmp 0x41576d
mov edi, str.firefox
push edi
call fcn.0046faa4
pop ecx
push eax
push edi
xor eax, eax
lea ecx, [esp + 0x24]
call fcn.0041835a
cmp eax, ebx
jl 0x41586f
xor eax, eax
push 0xffffffffffffffff
mov word [esp + 0x3c], ax
push ebx
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x44]
mov dword [esp + 0x58], 7
mov dword [esp + 0x54], ebx
call fcn.0040baae
lea eax, [esp + 0x38]
push eax
mov byte [esp + 0xf4], 0x10
push 0x49dd08
jmp 0x4157e7
mov edi, str.chrome
push edi
call fcn.0046faa4
pop ecx
push eax
push edi
xor eax, eax
lea ecx, [esp + 0x24]
call fcn.0041835a
cmp eax, ebx
jl 0x4158c7
xor eax, eax
push 0xffffffffffffffff
mov word [esp + 0x3c], ax
push ebx
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x44]
mov dword [esp + 0x58], 7
mov dword [esp + 0x54], ebx
call fcn.0040baae
lea eax, [esp + 0x38]
push eax
mov byte [esp + 0xf4], 0x11
push 0x49dd20
jmp 0x4157e7
lea ecx, [esp + 0x1c]
lea edi, [esp + 0xc4]
call fcn.004592ac
mov esi, str..exe
push esi
mov byte [esp + 0xf4], 0x12
call fcn.0046faa4
pop ecx
push eax
push esi
xor eax, eax
mov ecx, edi
call fcn.0041835a
cmp eax, 0xffffffff
je 0x41592e
add eax, 4
push eax
push ebx
mov eax, edi
push eax
lea esi, [esp + 0x60]
call fcn.0040a5d3
push eax
mov ecx, edi
mov byte [esp + 0xf4], 0x13
call fcn.0040ba5a
push ebx
push 1
mov ecx, esi
mov byte [esp + 0xf8], 0x12
call fcn.0040bba0
mov esi, 0x49d680
push esi
call fcn.0046faa4
pop ecx
push esi
mov ebx, eax
lea esi, [esp + 0xc8]
call fcn.0040ce4a
push 0xffffffffffffffff
xor esi, esi
push esi
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0xd0]
call fcn.0040cda7
cmp dword [0x4bfb94], esi
je 0x4159b5
lea eax, [esp + 0x54]
push 1
push eax
lea ecx, [esp + 0x24]
call fcn.00456a76
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x110], 0x14
mov dword [esp + 0x34], esp
push eax
push str.GetDefaultBrowser_out
push ecx
call fcn.0040fae8
add esp, 0xc
mov ecx, 0x4bfcf0
call fcn.004437f6
push esi
push 1
lea ecx, [esp + 0x5c]
mov byte [esp + 0xf8], 0x12
call fcn.00401524
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0xc4]
push eax
call fcn.0040a4f5
push esi
push 1
lea ecx, [esp + 0xcc]
call fcn.0040bba0
push esi
push 1
lea ecx, [esp + 0x78]
call fcn.0040bba0
push esi
push 1
lea ecx, [esp + 0x24]
call fcn.0040bba0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xe8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0046d5b3
mov esp, ebp
pop ebp
ret