Function at 0x4ad1d0
Capabilities:
Check os version
Create process on windows
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push 0xffffffffffffffff
push 0x5125d8
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push esi
push edi
mov eax, dword [0x572bb0]
xor eax, esp
push eax
lea eax, [esp + 0x48]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x14], edi
call fcn.00460220
xor edx, edx
mov ecx, eax
test ecx, ecx
setne dl
test edx, edx
jne 0x4ad21d
push 0x80004005
call fcn.004712d0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov esi, dword [ebp + 8]
mov ecx, esi
push str.browser
mov dword [esp + 0x54], 0
call fcn.0048ad90
cmp eax, 0x57a1b0
je 0x4ae0dd
push str.browser
mov ecx, esi
call fcn.0048ad90
cmp byte [eax + 8], 4
jne 0x4ae0dd
push str.browser
mov ecx, esi
call fcn.0048ad90
mov esi, eax
cmp byte [esi + 8], 4
je 0x4ad28e
push 0x2a9
push str...WebInstallerUtilsjson_value.cpp
push str.type___stringValue
call fcn.004edc00
add esp, 0xc
mov esi, dword [esi]
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad2ac
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x10], edi
mov byte [esp + 0x50], 5
test esi, esi
je 0x4ad2e8
test esi, 0xffff0000
jne 0x4ad2e8
movzx esi, si
mov ecx, esi
call fcn.00471400
test eax, eax
je 0x4ad2f6
push esi
push eax
lea ecx, [esp + 0x18]
call fcn.004724d0
jmp 0x4ad2f2
push esi
lea ecx, [esp + 0x14]
call fcn.00471eb0
mov edi, dword [esp + 0x10]
mov byte [esp + 0x50], 6
mov esi, dword [edi - 0xc]
test esi, esi
jns 0x4ad30c
push 0x80070057
call fcn.004712d0
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, esi
or eax, ecx
jge 0x4ad32b
push esi
lea ecx, [esp + 0x14]
call fcn.00471f40
mov edi, dword [esp + 0x10]
lea eax, [esi + 1]
push eax
push edi
call fcn.004ed77e
add esp, 8
cmp esi, dword [edi - 8]
jg 0x4ad302
mov dword [edi - 0xc], esi
xor eax, eax
mov word [edi + esi*2], ax
mov esi, dword [ebp + 8]
mov ecx, esi
push 0x54d294
call fcn.0048ad90
cmp eax, 0x57a1b0
je 0x4adfd8
push 0x54d294
mov ecx, esi
call fcn.0048ad90
cmp byte [eax + 8], 4
jne 0x4adfd8
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad392
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
push 0x54d294
mov ecx, esi
mov byte [esp + 0x54], 0xb
call fcn.0048ad90
mov esi, eax
cmp byte [esi + 8], 4
je 0x4ad3d2
push 0x2a9
push str...WebInstallerUtilsjson_value.cpp
push str.type___stringValue
call fcn.004edc00
add esp, 0xc
mov edx, dword [esi]
test edx, edx
jne 0x4ad3dc
xor ecx, ecx
jmp 0x4ad3ea
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4ad3e1
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x24]
call fcn.0047e3b0
lea edx, [esp + 0x24]
lea ecx, [esp + 0x1c]
call fcn.0047da90
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp al, 5
jbe 0x4ad619
lea ecx, [esp + 0x18]
call fcn.004a6120
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4ad619
push str.OpenUrlGetDisp
lea ecx, [esp + 0x24]
call fcn.00471bb0
mov byte [esp + 0x50], 0xc
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad464
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x28], esi
mov byte [esp + 0x50], 0xd
lea edx, [esp + 0x28]
push dword [esp + 0x18]
lea ecx, [esp + 0x30]
call fcn.00472f20
add esp, 4
mov edx, eax
mov byte [esp + 0x50], 0xe
lea ecx, [esp + 0x20]
call fcn.00473f80
mov byte [esp + 0x50], 0xd
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad4c0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [esp + 0x50], 0xc
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad4e1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
mov ecx, esi
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad503
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.Failed_to_get_IShellDispatch2
lea ecx, [esp + 0x1c]
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 0xf
call fcn.00471bb0
mov byte [esp + 0x50], 0x10
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad545
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x2c], esi
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 0x11
push eax
lea edx, [esp + 0x30]
lea ecx, [esp + 0x2c]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0x12
cmp dword [eax + 0xc], 0
je 0x4ad591
push 2
push ecx
lea ecx, [esp + 0x28]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 0x11
or ecx, 0xffffffff
mov edx, dword [esp + 0x28]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad5b4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [esp + 0x50], 0x10
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad5d5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xf
mov ecx, esi
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad5f7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
mov ecx, esi
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad619
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, 0x54c444
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4ad646
test dx, dx
je 0x4ad642
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4ad646
add eax, 4
add ecx, 4
test dx, dx
jne 0x4ad620
xor eax, eax
jmp 0x4ad64b
sbb eax, eax
or eax, 1
mov esi, dword [esp + 0x24]
test eax, eax
sete al
test al, al
je 0x4ad844
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad678
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov eax, str.default_browser
mov byte [esp + 0x50], 0x13
test eax, 0xffff0000
jne 0x4ad6ba
movzx ecx, ax
call fcn.00471400
test eax, eax
je 0x4ad6c8
mov edx, str.default_browser
movzx ecx, dx
push ecx
push eax
lea ecx, [esp + 0x20]
call fcn.004724d0
jmp 0x4ad6c8
push str.default_browser
lea ecx, [esp + 0x1c]
call fcn.00471eb0
push str.openUrl
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 0x14
call fcn.00471bb0
mov byte [esp + 0x50], 0x15
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad6fc
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
mov dword [esp + 0x30], eax
add eax, 0x10
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 0x16
push eax
lea edx, [esp + 0x30]
lea ecx, [esp + 0x2c]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0x17
cmp dword [eax + 0xc], 0
je 0x4ad74c
push 0
push ecx
lea ecx, [esp + 0x28]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 0x16
or ecx, 0xffffffff
mov edx, dword [esp + 0x28]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad76f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x15
or ecx, 0xffffffff
mov edx, dword [esp + 0x30]
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad78f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x14
or ecx, 0xffffffff
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad7b2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
or ecx, 0xffffffff
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad7d5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esp + 0xc], 0
jne 0x4ad7f5
push 1
push 0
push 0
push esi
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x4adf95
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov edx, eax
test edx, edx
jne 0x4ad80a
call fcn.004722b0
mov eax, dword [esp + 0xc]
sub esp, 0x10
xorps xmm0, xmm0
mov ecx, dword [eax]
mov eax, esp
sub esp, 0x10
movdqu xmmword [eax], xmm0
mov eax, esp
sub esp, 0x10
movdqu xmmword [eax], xmm0
mov eax, esp
sub esp, 0x10
movdqu xmmword [eax], xmm0
mov eax, esp
push edx
push dword [esp + 0x50]
movdqu xmmword [eax], xmm0
call dword [ecx + 0x7c]
jmp 0x4adf95
mov ecx, 0x551138
mov eax, edi
jmp 0x4ad850
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4ad876
test dx, dx
je 0x4ad872
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4ad876
add eax, 4
add ecx, 4
test dx, dx
jne 0x4ad850
xor eax, eax
jmp 0x4ad87b
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
je 0x4ada43
push 0x551140
lea ecx, [esp + 0x1c]
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 0x18
call fcn.00471bb0
mov byte [esp + 0x50], 0x19
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ad8ca
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
mov dword [esp + 0x28], eax
add eax, 0x10
mov dword [esp + 0x30], eax
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 0x1a
push eax
lea edx, [esp + 0x34]
lea ecx, [esp + 0x30]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0x1b
cmp dword [eax + 0xc], 0
je 0x4ad91a
push 0
push ecx
lea ecx, [esp + 0x28]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 0x1a
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad93d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x19
or ecx, 0xffffffff
mov edx, dword [esp + 0x28]
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad95d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x18
or ecx, 0xffffffff
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad980
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
or ecx, 0xffffffff
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ad9a3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esp + 0xc], 0
jne 0x4ad9c6
push 1
push 0
push esi
push str.iexplore.exe
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x4adf95
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x4ad9d9
call fcn.004722b0
push ecx
mov dword [esp + 0x40], eax
mov ecx, esp
mov eax, 8
push str.iexplore.exe
mov word [esp + 0x3c], ax
call fcn.00471bb0
call fcn.00472a40
sub esp, 0xc
mov edx, eax
mov eax, dword [esp + 0x1c]
mov ecx, esp
xorps xmm0, xmm0
sub esp, 0x10
mov eax, dword [eax]
movdqu xmmword [ecx], xmm0
mov ecx, esp
mov dword [esp + 0x50], eax
sub esp, 0x10
mov eax, esp
sub esp, 0x10
movdqu xmmword [ecx], xmm0
movdqu xmmword [eax], xmm0
mov eax, esp
movdqu xmm0, xmmword [esp + 0x74]
push edx
push dword [esp + 0x50]
movdqu xmmword [eax], xmm0
mov eax, dword [esp + 0x78]
call dword [eax + 0x7c]
jmp 0x4adf95
mov ecx, 0x551180
mov eax, edi
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4ada76
test dx, dx
je 0x4ada72
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4ada76
add eax, 4
add ecx, 4
test dx, dx
jne 0x4ada50
xor eax, eax
jmp 0x4ada7b
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
je 0x4adc43
push 0x551188
lea ecx, [esp + 0x1c]
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 0x1c
call fcn.00471bb0
mov byte [esp + 0x50], 0x1d
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4adaca
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
mov dword [esp + 0x28], eax
add eax, 0x10
mov dword [esp + 0x30], eax
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 0x1e
push eax
lea edx, [esp + 0x34]
lea ecx, [esp + 0x30]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0x1f
cmp dword [eax + 0xc], 0
je 0x4adb1a
push 0
push ecx
lea ecx, [esp + 0x28]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 0x1e
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adb3d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x1d
or ecx, 0xffffffff
mov edx, dword [esp + 0x28]
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adb5d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x1c
or ecx, 0xffffffff
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adb80
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
or ecx, 0xffffffff
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adba3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esp + 0xc], 0
jne 0x4adbc6
push 1
push 0
push esi
push str.chrome.exe
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x4adf95
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x4adbd9
call fcn.004722b0
push ecx
mov dword [esp + 0x40], eax
mov ecx, esp
mov eax, 8
push str.chrome.exe
mov word [esp + 0x3c], ax
call fcn.00471bb0
call fcn.00472a40
sub esp, 0xc
mov edx, eax
mov eax, dword [esp + 0x1c]
mov ecx, esp
xorps xmm0, xmm0
sub esp, 0x10
mov eax, dword [eax]
movdqu xmmword [ecx], xmm0
mov ecx, esp
mov dword [esp + 0x50], eax
sub esp, 0x10
mov eax, esp
sub esp, 0x10
movdqu xmmword [ecx], xmm0
movdqu xmmword [eax], xmm0
mov eax, esp
movdqu xmm0, xmmword [esp + 0x74]
push edx
push dword [esp + 0x50]
movdqu xmmword [eax], xmm0
mov eax, dword [esp + 0x78]
call dword [eax + 0x7c]
jmp 0x4adf95
mov ecx, 0x551174
mov eax, edi
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4adc76
test dx, dx
je 0x4adc72
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4adc76
add eax, 4
add ecx, 4
test dx, dx
jne 0x4adc50
xor eax, eax
jmp 0x4adc7b
sbb eax, eax
or eax, 1
test eax, eax
lea ecx, [esp + 0x18]
sete al
test al, al
je 0x4ade43
push 0x55117c
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 0x20
call fcn.00471bb0
mov byte [esp + 0x50], 0x21
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4adcca
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
mov dword [esp + 0x28], eax
add eax, 0x10
mov dword [esp + 0x30], eax
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 0x22
push eax
lea edx, [esp + 0x34]
lea ecx, [esp + 0x30]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0x23
cmp dword [eax + 0xc], 0
je 0x4add1a
push 0
push ecx
lea ecx, [esp + 0x28]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 0x22
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4add3d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x21
or ecx, 0xffffffff
mov edx, dword [esp + 0x28]
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4add5d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x20
or ecx, 0xffffffff
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4add80
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
or ecx, 0xffffffff
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adda3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esp + 0xc], 0
jne 0x4addc6
push 1
push 0
push esi
push str.firefox.exe
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x4adf95
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x4addd9
call fcn.004722b0
push ecx
mov dword [esp + 0x40], eax
mov ecx, esp
mov eax, 8
push str.firefox.exe
mov word [esp + 0x3c], ax
call fcn.00471bb0
call fcn.00472a40
sub esp, 0xc
mov edx, eax
mov eax, dword [esp + 0x1c]
mov ecx, esp
xorps xmm0, xmm0
sub esp, 0x10
mov eax, dword [eax]
movdqu xmmword [ecx], xmm0
mov ecx, esp
mov dword [esp + 0x50], eax
sub esp, 0x10
mov eax, esp
sub esp, 0x10
movdqu xmmword [ecx], xmm0
movdqu xmmword [eax], xmm0
mov eax, esp
movdqu xmm0, xmmword [esp + 0x74]
push edx
push dword [esp + 0x50]
movdqu xmmword [eax], xmm0
mov eax, dword [esp + 0x78]
call dword [eax + 0x7c]
jmp 0x4adf95
push str.unknown_browser
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 0x24
call fcn.00471bb0
mov byte [esp + 0x50], 0x25
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ade81
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
mov dword [esp + 0xc], eax
add eax, 0x10
mov dword [esp + 0x30], eax
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 0x26
push eax
lea edx, [esp + 0x34]
lea ecx, [esp + 0x2c]
call fcn.00472fc0
add esp, 4
lea ecx, [esp + 0x10]
mov byte [esp + 0x50], 0x27
push ecx
mov edx, eax
lea ecx, [esp + 0x30]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0x28
cmp dword [eax + 0xc], 0
je 0x4adee9
push 2
push ecx
lea ecx, [esp + 0x28]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 0x27
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adf0c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x26
or ecx, 0xffffffff
mov edx, dword [esp + 0x28]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adf2f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0xc]
or ecx, 0xffffffff
mov byte [esp + 0x50], 0x25
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adf4f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0x24
or ecx, 0xffffffff
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adf72
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0xb
or ecx, 0xffffffff
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adf95
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [esp + 0x50], 6
or esi, 0xffffffff
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4adfb6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [esp + 0x50], 0
mov ecx, esi
lea eax, [edi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ae1ed
mov ecx, dword [edi]
push edi
jmp 0x4ae1e8
push str.url_error
lea ecx, [esp + 0x24]
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x28]
mov byte [esp + 0x54], 7
call fcn.00471bb0
mov byte [esp + 0x50], 8
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ae01a
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x30], esi
lea eax, [esp + 0x20]
mov byte [esp + 0x50], 9
push eax
lea edx, [esp + 0x34]
lea ecx, [esp + 0x30]
call fcn.00472fc0
add esp, 4
mov ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x50], 0xa
cmp dword [eax + 0xc], 0
je 0x4ae066
push 2
push ecx
lea ecx, [esp + 0x2c]
add eax, 8
push ecx
push eax
call fcn.00473100
mov byte [esp + 0x50], 9
or eax, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4ae089
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [esp + 0x50], 8
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ae0aa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 7
mov ecx, esi
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ae0cc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 6
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
jmp 0x4adfa0
push str.browser_error
lea ecx, [esp + 0x24]
call fcn.00471c70
push str.openUrl
lea ecx, [esp + 0x28]
mov byte [esp + 0x54], 1
call fcn.00471bb0
mov byte [esp + 0x50], 2
call fcn.00460220
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4ae11f
push 0x80004005
call fcn.004712d0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x30], esi
lea eax, [esp + 0x20]
mov byte [esp + 0x50], 3
push eax
lea edx, [esp + 0x34]
lea ecx, [esp + 0x30]
call fcn.00472fc0
add esp, 4
mov byte [esp + 0x50], 4
cmp dword [edi + 0xc], 0
je 0x4ae165
push 2
push eax
lea eax, [esp + 0x2c]
push eax
lea eax, [edi + 8]
push eax
call fcn.00473100
mov byte [esp + 0x50], 3
or eax, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4ae188
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [esp + 0x50], 2
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ae1a9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 1
mov ecx, esi
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ae1cb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x50], 0
mov ecx, esi
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4ae1ed
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x50], 0xffffffff
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x4ae210
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4