Function at 0x450b70
Capabilities:
Check if file exists
Create directory
Print debug messages
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d62da
mov eax, dword fs:[0]
push eax
sub esp, 0x300
mov eax, dword [0x5060c0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x2f0], esi
mov dword [ebp - 4], 0
call fcn.004050c0
mov ecx, eax
test ecx, ecx
je 0x451cca
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x294], edi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x240]
mov dword [ebp - 0x240], 0
call fcn.00475050
push 0
push 0xa
mov ecx, esi
call fcn.004536b0
mov eax, dword [ebp + 0x14]
xorps xmm0, xmm0
mov dword [esi + 0x17c], eax
xor eax, eax
movups xmmword [ebp - 0x278], xmm0
mov dword [ebp - 0x230], 0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 7
mov word [ebp - 0x278], ax
movups xmmword [ebp - 0x260], xmm0
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x24c], 7
mov word [ebp - 0x260], ax
push ecx
lea ecx, [esi + 4]
mov byte [ebp - 4], 4
call fcn.00454ff0
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0x228], 1
je 0x450c8c
mov ecx, esi
call fcn.004544c0
xor ecx, ecx
test eax, eax
sete cl
mov dword [ebp - 0x228], ecx
test eax, eax
je 0x450c8c
push str._update__shell_is_install_
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x450e0a
lea eax, [esi + 0x124]
mov ecx, eax
mov dword [ebp - 0x220], eax
call fcn.0045aa40
xorps xmm0, xmm0
mov dword [ebp - 0x280], 0
xor eax, eax
mov dword [ebp - 0x27c], 7
movups xmmword [ebp - 0x290], xmm0
mov word [ebp - 0x290], ax
mov byte [ebp - 4], 5
call fcn.00480d70
mov eax, dword [0x51b6cc]
push 0x208
mov dword [ebp - 0x21c], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004a4300
add esp, 0xc
lea ecx, [esi + 0x124]
cmp dword [esi + 0x138], 7
jbe 0x450d05
mov ecx, dword [esi + 0x124]
push ecx
lea eax, [ebp - 0x218]
push 0x4ed148
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov ecx, str.ISShellPicExts32.dll
cmp dword [ebp - 0x21c], 0
mov eax, str.ISShellPicExts64.dll
cmove eax, ecx
push eax
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x30c]
call fcn.00425cf0
mov ecx, dword [ebp - 0x27c]
cmp ecx, 7
jbe 0x450d8f
mov edx, dword [ebp - 0x290]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x450d85
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cd4
push ecx
push edx
call fcn.004a23b3
add esp, 8
movups xmm1, xmmword [ebp - 0x30c]
lea ecx, [ebp - 0x290]
movq xmm0, qword [ebp - 0x2fc]
movq qword [ebp - 0x280], xmm0
cmp dword [ebp - 0x27c], 7
movd eax, xmm1
movups xmmword [ebp - 0x290], xmm1
cmova ecx, eax
call fcn.00481380
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x27c]
cmp ecx, 7
jbe 0x450e16
mov edx, dword [ebp - 0x290]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x450e00
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cd4
push ecx
push edx
call fcn.004a23b3
add esp, 8
lea eax, [esi + 0x124]
mov dword [ebp - 0x220], eax
push 0x12c
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x220]
cmp dword [eax + 0x14], 7
jbe 0x450e2f
mov eax, dword [eax]
push ecx
push 1
push eax
call fcn.004552e0
lea eax, [ebp - 0x230]
mov ecx, esi
push eax
call fcn.004541e0
mov dword [ebp - 0x2f4], eax
test eax, eax
js 0x451b58
cmp dword [ebp + 0x28], 0
je 0x450e5f
call fcn.00453720
push 1
push 0x1e
mov ecx, esi
call fcn.004536b0
mov eax, dword [esi + 0xb0]
mov ecx, dword [esi + 0xac]
sub eax, ecx
sar eax, 6
mov dword [ebp - 0x224], 0
test eax, eax
je 0x450f90
xor eax, eax
mov dword [ebp - 0x220], eax
add eax, ecx
mov dword [ebp - 0x244], eax
add eax, 4
mov dword [ebp - 0x21c], eax
mov ecx, eax
cmp dword [eax + 0x14], 7
jbe 0x450eb0
mov ecx, dword [eax]
lea eax, [esi + 0x10c]
push 0x4ee04c
push ecx
mov dword [ebp - 0x238], eax
call fcn.004b8983
add esp, 8
test eax, eax
jne 0x450ede
mov eax, dword [ebp - 0x238]
cmp dword [eax + 0x14], 7
jbe 0x450f3a
mov eax, dword [eax]
jmp 0x450f3a
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004a4300
mov eax, dword [ebp - 0x238]
add esp, 0xc
cmp dword [eax + 0x14], 7
jbe 0x450f02
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.004b8ee5
mov eax, dword [ebp - 0x21c]
add esp, 0xc
cmp dword [eax + 0x14], 7
jbe 0x450f25
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x218]
push eax
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x218]
push dword [esi + 0x17c]
push eax
mov eax, dword [ebp - 0x244]
push dword [eax]
call fcn.00462d90
mov dword [ebp - 0x2f4], eax
test eax, eax
js 0x451b58
mov eax, dword [esi + 0xb0]
mov edx, dword [ebp - 0x224]
mov ecx, dword [esi + 0xac]
inc edx
add dword [ebp - 0x220], 0x40
sub eax, ecx
sar eax, 6
mov dword [ebp - 0x224], edx
cmp edx, eax
jae 0x450f90
mov eax, dword [ebp - 0x220]
jmp 0x450e95
push 3
push 0x32
mov ecx, esi
mov dword [ebp - 0x2f4], 0
call fcn.004536b0
cmp dword [esi + 0x138], 7
lea eax, [esi + 0x124]
jbe 0x450fb6
mov eax, dword [eax]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
push str.Install_x64
lea edx, [esi + 0x10c]
lea ecx, [ebp - 0x30c]
call fcn.00454ac0
lea ecx, [ebp - 0x278]
mov dword [ebp - 0x21c], eax
add esp, 4
cmp ecx, eax
je 0x451075
mov ecx, dword [ebp - 0x264]
cmp ecx, 7
jbe 0x451034
mov edx, dword [ebp - 0x278]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451024
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cd9
push ecx
push edx
call fcn.004a23b3
mov eax, dword [ebp - 0x21c]
add esp, 8
mov dword [ebp - 0x268], 0
xor ecx, ecx
mov dword [ebp - 0x264], 7
mov word [ebp - 0x278], cx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x278], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x268], xmm0
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x2f8]
cmp ecx, 7
jbe 0x4510b5
mov edx, dword [ebp - 0x30c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4510ab
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cd9
push ecx
push edx
call fcn.004a23b3
add esp, 8
push str.Install_x86
lea edx, [esi + 0x10c]
lea ecx, [ebp - 0x30c]
call fcn.00454ac0
lea ecx, [ebp - 0x260]
mov dword [ebp - 0x21c], eax
add esp, 4
cmp ecx, eax
je 0x451169
mov ecx, dword [ebp - 0x24c]
cmp ecx, 7
jbe 0x451128
mov edx, dword [ebp - 0x260]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451118
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cde
push ecx
push edx
call fcn.004a23b3
mov eax, dword [ebp - 0x21c]
add esp, 8
mov dword [ebp - 0x250], 0
xor ecx, ecx
mov dword [ebp - 0x24c], 7
mov word [ebp - 0x260], cx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x260], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x250], xmm0
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x2f8]
cmp ecx, 7
jbe 0x4511a9
mov edx, dword [ebp - 0x30c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x45119f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cde
push ecx
push edx
call fcn.004a23b3
add esp, 8
call fcn.00480d70
cmp dword [0x51b6cc], 0
lea eax, [esi + 0x124]
je 0x4511d3
cmp dword [ebp - 0x264], 7
lea ecx, [ebp - 0x278]
cmova ecx, dword [ebp - 0x278]
jmp 0x4511e7
cmp dword [ebp - 0x24c], 7
lea ecx, [ebp - 0x260]
cmova ecx, dword [ebp - 0x260]
cmp dword [eax + 0x14], 7
jbe 0x4511ef
mov eax, dword [eax]
push eax
push ecx
call fcn.00455de0
cmp dword [ebp - 0x264], 7
lea eax, [ebp - 0x278]
push ecx
cmova eax, dword [ebp - 0x278]
push 0
push eax
call fcn.004552e0
cmp dword [ebp - 0x24c], 7
lea eax, [ebp - 0x260]
push ecx
cmova eax, dword [ebp - 0x260]
push 0
push eax
call fcn.004552e0
cmp dword [esi + 0x138], 7
lea ecx, [esi + 0x124]
jbe 0x451241
mov ecx, dword [ecx]
lea eax, [esi + 0x10c]
cmp dword [eax + 0x14], 7
lea edx, [eax + 0x14]
mov dword [ebp - 0x21c], edx
jbe 0x451258
mov eax, dword [eax]
push ecx
push eax
call fcn.00455de0
mov ecx, dword [ebp - 0x21c]
lea eax, [esi + 0x10c]
cmp dword [ecx], 7
jbe 0x451272
mov eax, dword [eax]
push ecx
push 0
push eax
call fcn.004552e0
push 2
push 0x3c
mov ecx, esi
call fcn.004536b0
cmp dword [ebp + 0x18], 0
je 0x4512d1
cmp dword [ebp + 0xc], 0
jne 0x4512d1
push ecx
mov esi, esp
mov dword [ebp - 0x21c], esi
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
push eax
call fcn.004047a0
add esp, 4
add eax, 0x10
mov dword [esi], eax
mov esi, dword [ebp - 0x2f0]
mov ecx, esi
push 0
call fcn.00452cc0
mov dword [ebp - 0x2f4], eax
test eax, eax
js 0x451b58
jmp 0x451435
call fcn.0045be20
cmp dword [ebp + 0x3c], 0
jne 0x4512e6
cmp dword [ebp + 0xc], 0
je 0x451435
lea eax, [ebp - 0x118]
push eax
lea ecx, [esi + 4]
call fcn.00456910
cmp dword [ebp - 0x8c], 7
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x224], 0
cmova eax, dword [ebp - 0xa0]
mov dword [ebp - 0x22c], eax
mov eax, dword [0x51b69c]
mov dword [ebp - 0x220], eax
test eax, eax
je 0x451337
lock inc dword [eax + 4]
mov eax, dword [0x51b69c]
mov dword [ebp - 0x220], eax
mov ecx, dword [0x51b698]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], eax
mov byte [ebp - 4], 7
lea edx, [ebp - 0x21c]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x30]
call eax
lea ecx, [ebp - 0x224]
push ecx
push 0xf003f
push 0
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov edx, dword [ebp - 0x21c]
or ecx, 0xffffffff
mov dword [ebp - 0x230], eax
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x45139a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x220]
test ecx, ecx
je 0x4513c7
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
jne 0x4513c7
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x220]
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x4513c7
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x230], 0
jne 0x45140e
mov edx, dword [ebp - 0x22c]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x21c], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4513e1
sub ecx, dword [ebp - 0x21c]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayVersion
push dword [ebp - 0x224]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x224]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x118]
mov byte [ebp - 4], 4
call fcn.00451d00
mov eax, dword [ebp - 0x2f4]
mov dword [ebp - 0x2f4], eax
cmp dword [ebp + 0x38], 0
je 0x451440
call fcn.0045c060
push 4
push 0x41
mov ecx, esi
call fcn.004536b0
cmp dword [ebp + 0x1c], 0
je 0x451461
cmp dword [ebp - 0x228], 0
je 0x451461
mov ecx, esi
call fcn.00451fd0
push 5
push 0x46
mov ecx, esi
call fcn.004536b0
cmp dword [ebp + 0x20], 0
je 0x45147c
cmp dword [ebp + 0xc], 0
je 0x4515d1
mov eax, dword [ebp - 0x240]
cmp dword [eax - 4], 1
jle 0x451496
push dword [eax - 0xc]
lea ecx, [ebp - 0x240]
call fcn.00404b40
mov esi, dword [ebp - 0x240]
test esi, esi
je 0x4515da
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x238], 0
push eax
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x224], 0
push eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x22c], 0
push eax
lea eax, [ebp - 0x238]
mov dword [ebp - 0x21c], 0
push eax
push str._d._d._d._d
push str.1.2.3.0
mov dword [ebp - 0x244], 0
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x230], 0
mov dword [ebp - 0x220], 0
call fcn.0040af00
lea eax, [ebp - 0x220]
push eax
lea eax, [ebp - 0x230]
push eax
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x244]
push eax
push str._d._d._d._d
push esi
call fcn.0040af00
mov eax, dword [ebp - 0x238]
add esp, 0x30
mov ecx, dword [ebp - 0x244]
cmp ecx, eax
jne 0x45155d
xor eax, eax
jmp 0x451563
sbb eax, eax
and eax, 2
dec eax
mov ecx, dword [ebp - 0x224]
mov edx, dword [ebp - 0x228]
cmp edx, ecx
jne 0x451577
xor ecx, ecx
jmp 0x45157d
sbb ecx, ecx
and ecx, 2
dec ecx
mov edx, dword [ebp - 0x22c]
mov esi, dword [ebp - 0x230]
cmp esi, edx
jne 0x451591
xor edx, edx
jmp 0x451597
sbb edx, edx
and edx, 2
dec edx
mov esi, dword [ebp - 0x21c]
cmp dword [ebp - 0x220], esi
jne 0x4515a9
xor esi, esi
jmp 0x4515af
sbb esi, esi
and esi, 2
dec esi
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
lea eax, [eax + eax*4]
lea eax, [edx + eax*2]
lea eax, [eax + eax*4]
lea eax, [esi + eax*2]
mov esi, dword [ebp - 0x2f0]
test eax, eax
jle 0x4515e0
cmp dword [ebp + 0xc], 0
je 0x4515e0
mov ecx, esi
call fcn.004534f0
jmp 0x4515e0
mov esi, dword [ebp - 0x2f0]
push 8
push 0x46
mov ecx, esi
call fcn.004536b0
cmp dword [ebp + 0x34], 0
je 0x4517f2
cmp dword [ebp + 0xc], 0
jne 0x4517f2
lea ecx, [ebp - 0x2ec]
call fcn.004506e0
mov eax, ecx
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x21c], 0
push eax
mov ecx, esi
call fcn.00452230
lea ecx, [ebp - 0x220]
mov dword [ebp - 0x220], 0
call fcn.004051b0
lea ecx, [ebp - 0x224]
mov dword [ebp - 0x224], 0
call fcn.004051b0
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0x224]
mov esi, dword [ebp - 0x21c]
lea edx, [ebp - 0x220]
push eax
mov ecx, esi
call fcn.00461090
add esp, 4
lea eax, [ebp - 0x224]
push eax
lea eax, [ebp - 0x220]
push eax
call fcn.00453c20
lea eax, [ebp - 0x228]
mov dword [ebp - 0x228], 0
push eax
call fcn.00454040
mov eax, dword [ebp - 0x228]
cmp dword [eax - 0xc], 0
je 0x45174b
lea eax, [ebp - 0x234]
mov dword [ebp - 0x238], 0
push eax
call fcn.00474520
add esp, 4
mov byte [ebp - 4], 0xd
lea edx, [ebp - 0x238]
mov ecx, dword [eax]
push edx
mov eax, dword [ecx]
call dword [eax + 0x58]
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 0xf
call fcn.0040fb60
mov edx, dword [ebp - 0x238]
push ecx
lea ecx, [ebp - 0x244]
mov dword [ebp - 0x244], 0
call fcn.0047a000
mov byte [ebp - 4], 0x10
mov ecx, esp
mov eax, dword [ebp - 0x244]
mov dword [ebp - 0x230], eax
lea eax, [ebp - 0x228]
push eax
call fcn.00404870
mov ecx, dword [ebp - 0x230]
call fcn.00461e30
add esp, 4
lea ecx, [ebp - 0x244]
call fcn.004034e0
lea ecx, [ebp - 0x238]
call fcn.004034e0
mov eax, dword [ebp - 0x228]
lea edx, [eax - 0x10]
mov byte [ebp - 4], 0xb
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x451767
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
or eax, 0xffffffff
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x451789
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 9
or eax, 0xffffffff
mov edx, dword [ebp - 0x220]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4517ab
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4517c7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 4
call fcn.00425e10
lea ecx, [ebp - 0x2d0]
call fcn.00425e10
lea ecx, [ebp - 0x2e8]
call fcn.00425e10
mov esi, dword [ebp - 0x2f0]
push 6
push 0x50
mov ecx, esi
call fcn.004536b0
cmp dword [ebp + 0x24], 0
je 0x45180a
mov ecx, esi
call fcn.00451d90
push 9
push 0x5f
mov ecx, esi
call fcn.004536b0
cmp dword [ebp + 0x2c], 0
je 0x451b51
cmp dword [ebp + 0xc], 0
je 0x451920
mov esi, dword [0x51b69c]
test esi, esi
je 0x45183d
lock inc dword [esi + 4]
mov esi, dword [0x51b69c]
mov ecx, dword [0x51b698]
mov dword [ebp - 0x234], ecx
mov dword [ebp - 0x230], esi
mov byte [ebp - 4], 0x11
lea edx, [ebp - 0x21c]
mov eax, dword [ecx]
push edx
call dword [eax + 0x94]
mov byte [ebp - 4], 0x13
test esi, esi
je 0x45188b
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x45188b
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x45188b
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
push ecx
mov esi, esp
mov dword [ebp - 0x230], esp
mov dword [ebp - 0x22c], esi
mov eax, dword [ebp - 0x21c]
add eax, 0xfffffff0
push eax
call fcn.004047a0
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [ebp - 4], 0x14
cmp dword [0x51b734], 0
jne 0x4518d9
push 4
call fcn.004a2383
mov dword [ebp - 0x230], eax
add esp, 4
mov dword [0x51b734], eax
mov dword [eax], vtable.CAutoRunManager.0
mov byte [ebp - 4], 0x13
call fcn.0048c530
mov byte [ebp - 4], 4
mov esi, eax
mov edx, dword [ebp - 0x21c]
or ecx, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x451906
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x45191a
push str._update__task_is_run
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x451b4b
mov esi, dword [ebp - 0x2f0]
mov eax, dword [0x51b69c]
mov dword [ebp - 0x21c], eax
test eax, eax
je 0x45193e
lock inc dword [eax + 4]
mov eax, dword [0x51b69c]
mov dword [ebp - 0x21c], eax
mov ecx, dword [0x51b698]
mov dword [ebp - 0x248], ecx
mov dword [ebp - 0x244], eax
mov byte [ebp - 4], 0x15
lea edx, [ebp - 0x22c]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x48]
call eax
mov byte [ebp - 4], 0x16
mov eax, dword [eax]
push 0x208
mov dword [ebp - 0x230], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004a4300
add esi, 0x124
add esp, 0xc
cmp dword [esi + 0x14], 7
jbe 0x451992
mov esi, dword [esi]
push esi
lea eax, [ebp - 0x218]
push 0x4ed148
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x218]
push dword [ebp - 0x230]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x30c]
call fcn.00425cf0
mov byte [ebp - 4], 0x17
lea esi, [ebp - 0x30c]
cmp dword [ebp - 0x2f8], 7
cmova esi, dword [ebp - 0x30c]
call fcn.004050c0
mov ecx, eax
test ecx, ecx
je 0x451ce3
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x238], eax
push esi
lea ecx, [ebp - 0x238]
mov byte [ebp - 4], 0x18
call fcn.00404a20
test al, al
jne 0x451a41
test esi, esi
jne 0x451a20
xor ecx, ecx
jmp 0x451a34
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x451a25
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x238]
call fcn.00404cd0
mov byte [ebp - 4], 0x1a
mov ecx, dword [ebp - 0x2f8]
cmp ecx, 7
jbe 0x451a85
mov edx, dword [ebp - 0x30c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451a7b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451ced
push ecx
push edx
call fcn.004a23b3
add esp, 8
xor eax, eax
mov dword [ebp - 0x2fc], 0
mov dword [ebp - 0x2f8], 7
mov word [ebp - 0x30c], ax
mov byte [ebp - 4], 0x1b
or eax, 0xffffffff
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x451ac4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1c
mov esi, dword [ebp - 0x21c]
test esi, esi
je 0x451af3
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x451af3
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x451af3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov esi, dword [ebp - 0x238]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x451b2f
push ecx
lea eax, [esi - 0x10]
mov dword [ebp - 0x21c], esp
push eax
call fcn.004047a0
mov ecx, dword [ebp - 0x21c]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
mov ecx, 1
call fcn.00476b90
add esp, 4
mov byte [ebp - 4], 4
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x451b4b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x2f0]
mov ecx, esi
call fcn.00453db0
cmp dword [ebp + 8], 0
push 0x4e9538
push 0x4e7df4
push str.install
je 0x451b74
call fcn.004743d0
jmp 0x451b79
call fcn.00474300
add esp, 0xc
mov ecx, esi
push 0xa
push 0x64
call fcn.004536b0
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x24c]
cmp ecx, 7
jbe 0x451bcb
mov edx, dword [ebp - 0x260]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451bc1
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cf2
push ecx
push edx
call fcn.004a23b3
add esp, 8
xor eax, eax
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x264]
mov dword [ebp - 0x250], 0
mov dword [ebp - 0x24c], 7
mov word [ebp - 0x260], ax
cmp ecx, 7
jbe 0x451c2c
mov edx, dword [ebp - 0x278]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451c22
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451cf2
push ecx
push edx
call fcn.004a23b3
add esp, 8
xor eax, eax
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x240]
or esi, 0xffffffff
mov word [ebp - 0x278], ax
add edx, 0xfffffff0
mov dword [ebp - 0x268], 0
mov eax, esi
mov dword [ebp - 0x264], 7
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x451c6d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x451c88
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp + 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x451ca7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2f4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004a2700
mov esp, ebp
pop ebp
ret 0x38
push 0x80004005
call fcn.00404ea0
call fcn.004a78df
call fcn.004a78df
call fcn.004a78df
push 0x80004005
call fcn.00404ea0
call fcn.004a78df
call fcn.004a78df
int3