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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d1873
mov eax, dword fs:[0]
push eax
sub esp, 0x2f0
mov eax, dword [0x4fe0c0]
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 - 0x2dc], esi
mov dword [ebp - 4], 0
call fcn.00404dd0
mov ecx, eax
test ecx, ecx
je 0x44f862
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x26c], edi
push 0
push 0xa
mov ecx, esi
call fcn.00451180
mov eax, dword [ebp + 0x14]
xorps xmm0, xmm0
mov dword [esi + 0x17c], eax
xor eax, eax
movups xmmword [ebp - 0x250], xmm0
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 7
mov word [ebp - 0x250], ax
movups xmmword [ebp - 0x238], xmm0
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], 7
mov word [ebp - 0x238], ax
push ecx
lea ecx, [esi + 4]
mov byte [ebp - 4], 3
call fcn.00452770
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0x220], 1
je 0x44ea93
mov ecx, esi
call fcn.00451b60
xor ecx, ecx
test eax, eax
sete cl
mov dword [ebp - 0x220], ecx
test eax, eax
je 0x44ea93
push 0x4e7c30
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x44ec09
lea ecx, [esi + 0x124]
call fcn.004582a0
xorps xmm0, xmm0
mov dword [ebp - 0x258], 0
xor eax, eax
mov dword [ebp - 0x254], 7
movups xmmword [ebp - 0x268], xmm0
mov word [ebp - 0x268], ax
mov byte [ebp - 4], 4
call fcn.00476d70
mov eax, dword [0x51348c]
push 0x208
mov dword [ebp - 0x2d8], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0049e870
add esp, 0xc
lea ecx, [esi + 0x124]
cmp dword [esi + 0x138], 7
jbe 0x44eb04
mov ecx, dword [esi + 0x124]
push ecx
lea eax, [ebp - 0x218]
push 0x4e7030
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov ecx, str.ISShellPicExts32.dll
cmp dword [ebp - 0x2d8], 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 - 0x2fc]
call fcn.00425670
mov ecx, dword [ebp - 0x254]
cmp ecx, 7
jbe 0x44eb8e
mov edx, dword [ebp - 0x268]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44eb84
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f86c
push ecx
push edx
call fcn.0049caae
add esp, 8
movups xmm1, xmmword [ebp - 0x2fc]
lea ecx, [ebp - 0x268]
movq xmm0, qword [ebp - 0x2ec]
movq qword [ebp - 0x258], xmm0
cmp dword [ebp - 0x254], 7
movd eax, xmm1
movups xmmword [ebp - 0x268], xmm1
cmova ecx, eax
call fcn.00477360
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x254]
cmp ecx, 7
jbe 0x44ec09
mov edx, dword [ebp - 0x268]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44ebff
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f86c
push ecx
push edx
call fcn.0049caae
add esp, 8
push 0x12c
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [esi + 0x138], 7
lea eax, [esi + 0x124]
jbe 0x44ec25
mov eax, dword [eax]
push ecx
push 1
push eax
call fcn.00452a60
lea eax, [ebp - 0x21c]
mov ecx, esi
push eax
call fcn.00451880
mov dword [ebp - 0x2d4], eax
test eax, eax
js 0x44f71f
cmp dword [ebp + 0x28], 0
je 0x44ec55
call fcn.004511f0
push 1
push 0x1e
mov ecx, esi
call fcn.00451180
mov eax, dword [esi + 0xb0]
mov ecx, dword [esi + 0xac]
sub eax, ecx
sar eax, 6
mov dword [ebp - 0x2d8], 0
test eax, eax
je 0x44ed8b
xor eax, eax
mov dword [ebp - 0x21c], eax
nop dword [eax + eax]
add eax, ecx
mov dword [ebp - 0x2d4], eax
add eax, 4
mov dword [ebp - 0x2d0], eax
mov ecx, eax
cmp dword [eax + 0x14], 7
jbe 0x44ecab
mov ecx, dword [eax]
lea eax, [esi + 0x10c]
push 0x4e7d5c
push ecx
mov dword [ebp - 0x2c8], eax
call fcn.004b4c24
add esp, 8
test eax, eax
jne 0x44ecd9
mov eax, dword [ebp - 0x2c8]
cmp dword [eax + 0x14], 7
jbe 0x44ed35
mov eax, dword [eax]
jmp 0x44ed35
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0049e870
mov eax, dword [ebp - 0x2c8]
add esp, 0xc
cmp dword [eax + 0x14], 7
jbe 0x44ecfd
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.004b4e7b
mov eax, dword [ebp - 0x2d0]
add esp, 0xc
cmp dword [eax + 0x14], 7
jbe 0x44ed20
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 - 0x2d4]
push dword [eax]
call fcn.00460010
mov dword [ebp - 0x2d4], eax
test eax, eax
js 0x44f71f
mov eax, dword [esi + 0xb0]
mov edx, dword [ebp - 0x2d8]
mov ecx, dword [esi + 0xac]
inc edx
add dword [ebp - 0x21c], 0x40
sub eax, ecx
sar eax, 6
mov dword [ebp - 0x2d8], edx
cmp edx, eax
jae 0x44ed8b
mov eax, dword [ebp - 0x21c]
jmp 0x44ec90
push 3
push 0x32
mov ecx, esi
mov dword [ebp - 0x2d4], 0
call fcn.00451180
cmp dword [esi + 0x138], 7
lea eax, [esi + 0x124]
jbe 0x44edb1
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 - 0x2fc]
call fcn.00452320
lea ecx, [ebp - 0x250]
mov dword [ebp - 0x2d0], eax
add esp, 4
cmp ecx, eax
je 0x44ee70
mov ecx, dword [ebp - 0x23c]
cmp ecx, 7
jbe 0x44ee2f
mov edx, dword [ebp - 0x250]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44ee1f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f871
push ecx
push edx
call fcn.0049caae
mov eax, dword [ebp - 0x2d0]
add esp, 8
mov dword [ebp - 0x240], 0
xor ecx, ecx
mov dword [ebp - 0x23c], 7
mov word [ebp - 0x250], cx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x250], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x240], xmm0
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x2e8]
cmp ecx, 7
jbe 0x44eeb0
mov edx, dword [ebp - 0x2fc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44eea6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f871
push ecx
push edx
call fcn.0049caae
add esp, 8
push str.Install_x86
lea edx, [esi + 0x10c]
lea ecx, [ebp - 0x2fc]
call fcn.00452320
lea ecx, [ebp - 0x238]
mov dword [ebp - 0x2d0], eax
add esp, 4
cmp ecx, eax
je 0x44ef64
mov ecx, dword [ebp - 0x224]
cmp ecx, 7
jbe 0x44ef23
mov edx, dword [ebp - 0x238]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44ef13
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f876
push ecx
push edx
call fcn.0049caae
mov eax, dword [ebp - 0x2d0]
add esp, 8
mov dword [ebp - 0x228], 0
xor ecx, ecx
mov dword [ebp - 0x224], 7
mov word [ebp - 0x238], cx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x238], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x228], xmm0
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x2e8]
cmp ecx, 7
jbe 0x44efa4
mov edx, dword [ebp - 0x2fc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44ef9a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f876
push ecx
push edx
call fcn.0049caae
add esp, 8
call fcn.00476d70
cmp dword [0x51348c], 0
je 0x44efdb
cmp dword [esi + 0x138], 7
lea ecx, [esi + 0x124]
jbe 0x44efc3
mov ecx, dword [ecx]
cmp dword [ebp - 0x23c], 7
lea eax, [ebp - 0x250]
push ecx
cmova eax, dword [ebp - 0x250]
push eax
jmp 0x44efff
cmp dword [ebp - 0x224], 7
lea ecx, [ebp - 0x238]
lea eax, [esi + 0x124]
cmova ecx, dword [ebp - 0x238]
cmp dword [eax + 0x14], 7
jbe 0x44effd
mov eax, dword [eax]
push eax
push ecx
call fcn.00453580
cmp dword [ebp - 0x23c], 7
lea eax, [ebp - 0x250]
push ecx
cmova eax, dword [ebp - 0x250]
push 0
push eax
call fcn.00452a60
cmp dword [ebp - 0x224], 7
lea eax, [ebp - 0x238]
push ecx
cmova eax, dword [ebp - 0x238]
push 0
push eax
call fcn.00452a60
lea ecx, [esi + 0x10c]
cmp dword [ecx + 0x14], 7
lea eax, [ecx + 0x14]
mov dword [ebp - 0x2d0], eax
jbe 0x44f055
mov ecx, dword [ecx]
cmp dword [esi + 0x138], 7
lea eax, [esi + 0x124]
jbe 0x44f066
mov eax, dword [eax]
push eax
push ecx
call fcn.00453580
mov ecx, dword [ebp - 0x2d0]
lea eax, [esi + 0x10c]
cmp dword [ecx], 7
jbe 0x44f080
mov eax, dword [eax]
push ecx
push 0
push eax
call fcn.00452a60
push 2
push 0x3c
mov ecx, esi
call fcn.00451180
cmp dword [ebp + 0x18], 0
je 0x44f0df
cmp dword [ebp + 0xc], 0
jne 0x44f0df
push ecx
mov esi, esp
mov dword [ebp - 0x2cc], esi
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
push eax
call fcn.004044e0
add esp, 4
add eax, 0x10
mov dword [esi], eax
mov esi, dword [ebp - 0x2dc]
mov ecx, esi
push 0
call fcn.004507c0
mov dword [ebp - 0x2d4], eax
test eax, eax
js 0x44f71f
jmp 0x44f244
call fcn.00459620
cmp dword [ebp + 0x3c], 0
jne 0x44f0f4
cmp dword [ebp + 0xc], 0
je 0x44f244
lea eax, [ebp - 0x118]
push eax
lea ecx, [esi + 4]
call fcn.004540b0
cmp dword [ebp - 0x8c], 7
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x2c8], 0
cmova eax, dword [ebp - 0xa0]
mov dword [ebp - 0x2cc], eax
mov eax, dword [0x51345c]
mov dword [ebp - 0x21c], eax
test eax, eax
je 0x44f145
lock inc dword [eax + 4]
mov eax, dword [0x51345c]
mov dword [ebp - 0x21c], eax
mov ecx, dword [0x513458]
mov dword [ebp - 0x2e4], ecx
mov dword [ebp - 0x2e0], eax
mov byte [ebp - 4], 6
lea edx, [ebp - 0x2d0]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x30]
call eax
lea ecx, [ebp - 0x2c8]
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 - 0x2d0]
or ecx, 0xffffffff
mov dword [ebp - 0x2d8], eax
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x44f1a8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x21c]
test ecx, ecx
je 0x44f1d5
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
jne 0x44f1d5
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x21c]
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x44f1d5
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x2d8], 0
jne 0x44f21d
mov edx, dword [ebp - 0x2cc]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x2cc], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x44f1f0
sub ecx, dword [ebp - 0x2cc]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayVersion
push dword [ebp - 0x2c8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x2c8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x118]
mov byte [ebp - 4], 3
call fcn.0044f890
mov eax, dword [ebp - 0x2d4]
mov dword [ebp - 0x2d4], eax
cmp dword [ebp + 0x38], 0
je 0x44f24f
call fcn.00459860
push 4
push 0x41
mov ecx, esi
call fcn.00451180
cmp dword [ebp + 0x1c], 0
je 0x44f270
cmp dword [ebp - 0x220], 0
je 0x44f270
mov ecx, esi
call fcn.0044fb60
push 5
push 0x46
mov ecx, esi
call fcn.00451180
cmp dword [ebp + 0x20], 0
je 0x44f28e
cmp dword [ebp + 0xc], 0
jne 0x44f28e
mov ecx, esi
call fcn.00450fc0
push 8
push 0x46
mov ecx, esi
call fcn.00451180
cmp dword [ebp + 0x34], 0
je 0x44f3c0
cmp dword [ebp + 0xc], 0
jne 0x44f3c0
lea ecx, [ebp - 0x2c4]
call fcn.0044e500
mov eax, ecx
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x220]
mov dword [ebp - 0x220], 0
push eax
mov ecx, esi
call fcn.0044fdc0
lea ecx, [ebp - 0x21c]
mov dword [ebp - 0x21c], 0
call fcn.00404ec0
lea ecx, [ebp - 0x2c8]
mov dword [ebp - 0x2c8], 0
call fcn.00404ec0
mov byte [ebp - 4], 0xa
lea eax, [ebp - 0x2c8]
mov esi, dword [ebp - 0x220]
lea edx, [ebp - 0x21c]
push eax
mov ecx, esi
call fcn.0045e830
add esp, 4
lea eax, [ebp - 0x2c8]
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.004516f0
mov byte [ebp - 4], 9
or eax, 0xffffffff
mov edx, dword [ebp - 0x2c8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x44f357
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
or eax, 0xffffffff
mov edx, dword [ebp - 0x21c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x44f379
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x44f395
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 3
call fcn.004257c0
lea ecx, [ebp - 0x2a8]
call fcn.004257c0
lea ecx, [ebp - 0x2c0]
call fcn.004257c0
mov esi, dword [ebp - 0x2dc]
push 6
push 0x50
mov ecx, esi
call fcn.00451180
cmp dword [ebp + 0x24], 0
je 0x44f3d8
mov ecx, esi
call fcn.0044f920
push 9
push 0x5f
mov ecx, esi
call fcn.00451180
cmp dword [ebp + 0x2c], 0
je 0x44f71f
cmp dword [ebp + 0xc], 0
je 0x44f4ee
mov esi, dword [0x51345c]
test esi, esi
je 0x44f40b
lock inc dword [esi + 4]
mov esi, dword [0x51345c]
mov ecx, dword [0x513458]
mov dword [ebp - 0x2e4], ecx
mov dword [ebp - 0x2e0], esi
mov byte [ebp - 4], 0xb
lea edx, [ebp - 0x220]
mov eax, dword [ecx]
push edx
call dword [eax + 0x94]
mov byte [ebp - 4], 0xd
test esi, esi
je 0x44f459
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x44f459
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x44f459
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
push ecx
mov esi, esp
mov dword [ebp - 0x2cc], esp
mov dword [ebp - 0x2d0], esi
mov eax, dword [ebp - 0x220]
add eax, 0xfffffff0
push eax
call fcn.004044e0
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [ebp - 4], 0xe
cmp dword [0x5134f0], 0
jne 0x44f4a7
push 4
call fcn.0049ca7e
mov dword [ebp - 0x2cc], eax
add esp, 4
mov dword [0x5134f0], eax
mov dword [eax], vtable.CAutoRunManager.0
mov byte [ebp - 4], 0xd
call fcn.00483400
mov byte [ebp - 4], 3
mov esi, eax
mov edx, dword [ebp - 0x220]
or ecx, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x44f4d4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x44f4e8
push str._update__task_is_run
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x44f719
mov esi, dword [ebp - 0x2dc]
mov eax, dword [0x51345c]
mov dword [ebp - 0x220], eax
test eax, eax
je 0x44f50c
lock inc dword [eax + 4]
mov eax, dword [0x51345c]
mov dword [ebp - 0x220], eax
mov ecx, dword [0x513458]
mov dword [ebp - 0x2e4], ecx
mov dword [ebp - 0x2e0], eax
mov byte [ebp - 4], 0xf
lea edx, [ebp - 0x2d0]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x48]
call eax
mov byte [ebp - 4], 0x10
mov eax, dword [eax]
push 0x208
mov dword [ebp - 0x2cc], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0049e870
add esi, 0x124
add esp, 0xc
cmp dword [esi + 0x14], 7
jbe 0x44f560
mov esi, dword [esi]
push esi
lea eax, [ebp - 0x218]
push 0x4e7030
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x218]
push dword [ebp - 0x2cc]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x2fc]
call fcn.00425670
mov byte [ebp - 4], 0x11
lea esi, [ebp - 0x2fc]
cmp dword [ebp - 0x2e8], 7
cmova esi, dword [ebp - 0x2fc]
call fcn.00404dd0
mov ecx, eax
test ecx, ecx
je 0x44f87b
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x21c], eax
push esi
lea ecx, [ebp - 0x21c]
mov byte [ebp - 4], 0x12
call fcn.00404730
test al, al
jne 0x44f60f
test esi, esi
jne 0x44f5ee
xor ecx, ecx
jmp 0x44f602
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x44f5f3
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x21c]
call fcn.004049e0
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x2e8]
cmp ecx, 7
jbe 0x44f653
mov edx, dword [ebp - 0x2fc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44f649
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f885
push ecx
push edx
call fcn.0049caae
add esp, 8
xor eax, eax
mov dword [ebp - 0x2ec], 0
mov dword [ebp - 0x2e8], 7
mov word [ebp - 0x2fc], ax
mov byte [ebp - 4], 0x15
or eax, 0xffffffff
mov edx, dword [ebp - 0x2d0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x44f692
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x16
mov esi, dword [ebp - 0x220]
test esi, esi
je 0x44f6c1
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x44f6c1
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x44f6c1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov esi, dword [ebp - 0x21c]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x44f6fd
push ecx
lea eax, [esi - 0x10]
mov dword [ebp - 0x2cc], esp
push eax
call fcn.004044e0
mov ecx, dword [ebp - 0x2cc]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
mov ecx, 1
call fcn.00472c40
add esp, 4
mov byte [ebp - 4], 3
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x44f719
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x2dc]
push 0x4e3458
push 0x4e1d10
push str.install
call fcn.00473930
add esp, 0xc
mov ecx, esi
push 0xa
push 0x64
call fcn.00451180
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x224]
cmp ecx, 7
jbe 0x44f785
mov edx, dword [ebp - 0x238]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44f77b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f88a
push ecx
push edx
call fcn.0049caae
add esp, 8
xor eax, eax
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x23c]
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 7
mov word [ebp - 0x238], ax
cmp ecx, 7
jbe 0x44f7e6
mov edx, dword [ebp - 0x250]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x44f7dc
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x44f88a
push ecx
push edx
call fcn.0049caae
add esp, 8
xor eax, eax
mov dword [ebp - 0x240], 0
or esi, 0xffffffff
mov word [ebp - 0x250], ax
mov byte [ebp - 4], al
add edi, 0xfffffff0
mov dword [ebp - 0x23c], 7
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x44f820
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 0x44f83f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2d4]
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.0049cdfb
mov esp, ebp
pop ebp
ret 0x38
push 0x80004005
call fcn.00404bb0
call fcn.004a1e4f
call fcn.004a1e4f
call fcn.004a1e4f
push 0x80004005
call fcn.00404bb0
call fcn.004a1e4f
call fcn.004a1e4f
int3