Function at 0x450db0
Capabilities:
Check if file exists
Create directory
Delete file
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4cc903
mov eax, dword fs:[0]
push eax
sub esp, 0x284
mov eax, dword [0x4f80c0]
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 - 0x278], esi
mov dword [ebp - 4], 0
call fcn.00405000
mov ecx, eax
test ecx, ecx
je 0x451c05
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x260], edi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x25c]
mov dword [ebp - 0x25c], 0
call fcn.0046c070
push 0
push 0xa
mov ecx, esi
call fcn.00453120
mov eax, dword [ebp + 0x14]
xorps xmm0, xmm0
mov dword [esi + 0x17c], eax
xor eax, eax
movups xmmword [ebp - 0x24c], xmm0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x238], 7
mov word [ebp - 0x24c], ax
movups xmmword [ebp - 0x234], xmm0
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x220], 7
mov word [ebp - 0x234], ax
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 4
push ecx
lea ecx, [esi + 4]
movq qword [ebp - 0x258], xmm0
mov dword [ebp - 0x250], eax
call fcn.00457910
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x258]
sub eax, ecx
sar eax, 3
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x264], 0
test eax, eax
je 0x450fb1
xor edx, edx
mov dword [ebp - 0x274], edx
nop dword [eax]
cmp dword [ecx + edx + 0x14], 7
lea eax, [ecx + edx]
mov dword [ebp - 0x21c], eax
jbe 0x450ef8
mov eax, dword [eax]
mov dword [ebp - 0x21c], eax
push ecx
mov dword [ebp - 0x270], esp
call fcn.00405000
mov ecx, eax
test ecx, ecx
je 0x451c05
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword [ebp - 0x270]
add eax, 0x10
mov dword [ecx], eax
mov byte [ebp - 4], 7
push dword [ebp - 0x21c]
call fcn.00404960
test al, al
jne 0x450f70
mov edx, dword [ebp - 0x21c]
test edx, edx
jne 0x450f41
xor ecx, ecx
jmp 0x450f63
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x26c], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450f50
sub ecx, dword [ebp - 0x26c]
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0x270]
push edx
call fcn.00404c10
mov byte [ebp - 4], 5
call fcn.00458180
mov eax, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x258]
sub eax, ecx
mov edx, dword [ebp - 0x274]
inc dword [ebp - 0x264]
add edx, 0x18
sar eax, 3
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x274], edx
cmp dword [ebp - 0x264], eax
jb 0x450ee0
call fcn.00458470
lea ecx, [esi + 4]
call fcn.00454280
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 4
call fcn.00458a80
push 0x12c
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [esi + 0x138], 7
lea eax, [esi + 0x124]
jbe 0x450fe9
mov eax, dword [eax]
push ecx
push 1
push eax
call fcn.00454420
lea eax, [ebp - 0x268]
mov ecx, esi
push eax
call fcn.00453690
mov dword [ebp - 0x270], eax
test eax, eax
js 0x451aa0
cmp dword [ebp + 0x28], 0
je 0x451019
call fcn.00453190
push 1
push 0x1e
mov ecx, esi
call fcn.00453120
mov eax, dword [esi + 0xb0]
mov ecx, dword [esi + 0xac]
sub eax, ecx
sar eax, 6
mov dword [ebp - 0x26c], 0
test eax, eax
je 0x45114b
xor eax, eax
mov dword [ebp - 0x21c], eax
nop
add eax, ecx
mov dword [ebp - 0x264], eax
add eax, 4
mov dword [ebp - 0x268], eax
mov ecx, eax
cmp dword [eax + 0x14], 7
jbe 0x45106b
mov ecx, dword [eax]
lea eax, [esi + 0x10c]
push 0x4e1ed0
push ecx
mov dword [ebp - 0x274], eax
call fcn.004aefe3
add esp, 8
test eax, eax
jne 0x451099
mov eax, dword [ebp - 0x274]
cmp dword [eax + 0x14], 7
jbe 0x4510f5
mov eax, dword [eax]
jmp 0x4510f5
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0049a960
mov eax, dword [ebp - 0x274]
add esp, 0xc
cmp dword [eax + 0x14], 7
jbe 0x4510bd
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.004af545
mov eax, dword [ebp - 0x268]
add esp, 0xc
cmp dword [eax + 0x14], 7
jbe 0x4510e0
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 - 0x264]
push dword [eax]
call fcn.0045b800
mov dword [ebp - 0x270], eax
test eax, eax
js 0x451aa0
mov eax, dword [esi + 0xb0]
mov edx, dword [ebp - 0x26c]
mov ecx, dword [esi + 0xac]
inc edx
add dword [ebp - 0x21c], 0x40
sub eax, ecx
sar eax, 6
mov dword [ebp - 0x26c], edx
cmp edx, eax
jae 0x45114b
mov eax, dword [ebp - 0x21c]
jmp 0x451050
push 3
push 0x32
mov ecx, esi
mov dword [ebp - 0x270], 0
call fcn.00453120
cmp dword [esi + 0x138], 7
lea eax, [esi + 0x124]
jbe 0x451171
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 - 0x290]
call fcn.00453d50
lea ecx, [ebp - 0x24c]
mov dword [ebp - 0x268], eax
add esp, 4
cmp ecx, eax
je 0x451230
mov ecx, dword [ebp - 0x238]
cmp ecx, 7
jbe 0x4511ef
mov edx, dword [ebp - 0x24c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4511df
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c0f
push ecx
push edx
call fcn.00498a13
mov eax, dword [ebp - 0x268]
add esp, 8
mov dword [ebp - 0x23c], 0
xor ecx, ecx
mov dword [ebp - 0x238], 7
mov word [ebp - 0x24c], cx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x24c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x23c], xmm0
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x27c]
cmp ecx, 7
jbe 0x451270
mov edx, dword [ebp - 0x290]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451266
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c0f
push ecx
push edx
call fcn.00498a13
add esp, 8
push str.Install_x86
lea edx, [esi + 0x10c]
lea ecx, [ebp - 0x290]
call fcn.00453d50
lea ecx, [ebp - 0x234]
mov dword [ebp - 0x268], eax
add esp, 4
cmp ecx, eax
je 0x451324
mov ecx, dword [ebp - 0x220]
cmp ecx, 7
jbe 0x4512e3
mov edx, dword [ebp - 0x234]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4512d3
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c14
push ecx
push edx
call fcn.00498a13
mov eax, dword [ebp - 0x268]
add esp, 8
mov dword [ebp - 0x224], 0
xor ecx, ecx
mov dword [ebp - 0x220], 7
mov word [ebp - 0x234], cx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x234], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x224], xmm0
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x27c]
cmp ecx, 7
jbe 0x451364
mov edx, dword [ebp - 0x290]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x45135a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c14
push ecx
push edx
call fcn.00498a13
add esp, 8
call fcn.00477240
cmp dword [0x50d688], 0
je 0x451396
cmp dword [ebp - 0x238], 7
lea eax, [ebp - 0x24c]
cmova eax, dword [ebp - 0x24c]
add esi, 0x124
cmp dword [esi + 0x14], 7
jbe 0x4513b8
mov esi, dword [esi]
jmp 0x4513b8
add esi, 0x124
cmp dword [esi + 0x14], 7
jbe 0x4513a4
mov esi, dword [esi]
cmp dword [ebp - 0x220], 7
lea eax, [ebp - 0x234]
cmova eax, dword [ebp - 0x234]
push esi
push eax
call fcn.00454f20
cmp dword [ebp - 0x238], 7
lea eax, [ebp - 0x24c]
lea ecx, [ebp - 0x21c]
mov dword [ebp - 0x21c], 0
cmova eax, dword [ebp - 0x24c]
push eax
call fcn.00404d30
push 8
push str.webview
lea ecx, [ebp - 0x21c]
mov byte [ebp - 4], 8
call fcn.0043a0d0
cmp dword [ebp - 0x220], 7
lea eax, [ebp - 0x234]
lea ecx, [ebp - 0x264]
mov dword [ebp - 0x264], 0
cmova eax, dword [ebp - 0x234]
push eax
call fcn.00404d30
push 8
push str.webview
lea ecx, [ebp - 0x264]
mov byte [ebp - 4], 9
call fcn.0043a0d0
push ecx
push 0
push dword [ebp - 0x21c]
call fcn.00454420
push ecx
push 0
push dword [ebp - 0x264]
call fcn.00454420
mov byte [ebp - 4], 8
or esi, 0xffffffff
mov edx, dword [ebp - 0x264]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45147f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0x21c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4514a0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x220], 7
lea eax, [ebp - 0x234]
push ecx
cmova eax, dword [ebp - 0x234]
push 0
push eax
call fcn.00454420
cmp dword [ebp - 0x238], 7
lea eax, [ebp - 0x24c]
push ecx
cmova eax, dword [ebp - 0x24c]
push 0
push eax
call fcn.00454420
cmp dword [ebp - 0x220], 7
lea eax, [ebp - 0x234]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
cmova eax, dword [ebp - 0x234]
push eax
call esi
cmp dword [ebp - 0x238], 7
lea eax, [ebp - 0x24c]
cmova eax, dword [ebp - 0x24c]
push eax
call esi
mov esi, dword [ebp - 0x278]
cmp dword [esi + 0x138], 7
lea ecx, [esi + 0x124]
jbe 0x451525
mov ecx, dword [ecx]
lea eax, [esi + 0x10c]
cmp dword [eax + 0x14], 7
lea edx, [eax + 0x14]
mov dword [ebp - 0x268], edx
jbe 0x45153c
mov eax, dword [eax]
push ecx
push eax
call fcn.00454f20
mov ecx, dword [ebp - 0x268]
lea eax, [esi + 0x10c]
cmp dword [ecx], 7
jbe 0x451556
mov eax, dword [eax]
push ecx
push 0
push eax
call fcn.00454420
push 2
push 0x3c
mov ecx, esi
call fcn.00453120
cmp dword [ebp + 0x18], 0
je 0x4515b5
cmp dword [ebp + 0xc], 0
jne 0x4515b5
push ecx
mov esi, esp
mov dword [ebp - 0x268], esi
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
push eax
call fcn.00404710
add esp, 4
add eax, 0x10
mov dword [esi], eax
mov esi, dword [ebp - 0x278]
mov ecx, esi
push 0
call fcn.00452730
mov dword [ebp - 0x270], eax
test eax, eax
js 0x451aa0
jmp 0x451719
call fcn.0045a840
cmp dword [ebp + 0x3c], 0
jne 0x4515ca
cmp dword [ebp + 0xc], 0
je 0x451719
lea eax, [ebp - 0x118]
push eax
lea ecx, [esi + 4]
call fcn.00455a50
cmp dword [ebp - 0x8c], 7
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x264], 0
cmova eax, dword [ebp - 0xa0]
mov dword [ebp - 0x274], eax
mov eax, dword [0x50d658]
mov dword [ebp - 0x21c], eax
test eax, eax
je 0x45161b
lock inc dword [eax + 4]
mov eax, dword [0x50d658]
mov dword [ebp - 0x21c], eax
mov ecx, dword [0x50d654]
mov dword [ebp - 0x254], ecx
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0xb
lea edx, [ebp - 0x268]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x30]
call eax
lea ecx, [ebp - 0x264]
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 - 0x268]
or ecx, 0xffffffff
mov dword [ebp - 0x26c], eax
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x45167e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x21c]
test ecx, ecx
je 0x4516ab
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
jne 0x4516ab
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x21c]
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x4516ab
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x26c], 0
jne 0x4516f2
mov edx, dword [ebp - 0x274]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x268], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4516c5
sub ecx, dword [ebp - 0x268]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayVersion
push dword [ebp - 0x264]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x264]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x118]
mov byte [ebp - 4], 4
call fcn.00451c30
mov eax, dword [ebp - 0x270]
mov dword [ebp - 0x270], eax
cmp dword [ebp + 0x38], 0
je 0x451724
call fcn.0045aa80
push 5
push 0x46
mov ecx, esi
call fcn.00453120
cmp dword [ebp + 0x20], 0
je 0x451742
cmp dword [ebp + 0xc], 0
jne 0x451742
mov ecx, esi
call fcn.00452f60
push 8
push 0x46
mov ecx, esi
call fcn.00453120
push 6
push 0x50
mov ecx, esi
call fcn.00453120
cmp dword [ebp + 0x24], 0
je 0x451765
mov ecx, esi
call fcn.00451ca0
push 9
push 0x5f
mov ecx, esi
call fcn.00453120
cmp dword [ebp + 0x2c], 0
je 0x451aa0
cmp dword [ebp + 0xc], 0
je 0x45186f
mov esi, dword [0x50d658]
test esi, esi
je 0x451798
lock inc dword [esi + 4]
mov esi, dword [0x50d658]
mov ecx, dword [0x50d654]
mov dword [ebp - 0x254], ecx
mov dword [ebp - 0x250], esi
mov byte [ebp - 4], 0xc
lea edx, [ebp - 0x26c]
mov eax, dword [ecx]
push edx
call dword [eax + 0x94]
mov byte [ebp - 4], 0xe
test esi, esi
je 0x4517e6
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x4517e6
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x4517e6
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
push ecx
mov esi, esp
mov dword [ebp - 0x268], esp
mov dword [ebp - 0x274], esi
mov eax, dword [ebp - 0x26c]
add eax, 0xfffffff0
push eax
call fcn.00404710
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [ebp - 4], 0xf
cmp dword [0x50d6e0], 0
jne 0x451834
push 4
call fcn.004989e3
mov dword [ebp - 0x268], eax
add esp, 4
mov dword [0x50d6e0], eax
mov dword [eax], vtable.CAutoRunManager.0
mov byte [ebp - 4], 0xe
call fcn.00482330
mov byte [ebp - 4], 4
mov esi, eax
mov edx, dword [ebp - 0x26c]
or ecx, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x451861
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
mov esi, dword [ebp - 0x278]
jne 0x451aa0
mov eax, dword [0x50d658]
mov dword [ebp - 0x26c], eax
test eax, eax
je 0x45188d
lock inc dword [eax + 4]
mov eax, dword [0x50d658]
mov dword [ebp - 0x26c], eax
mov ecx, dword [0x50d654]
mov dword [ebp - 0x254], ecx
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x10
lea edx, [ebp - 0x274]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x48]
call eax
mov byte [ebp - 4], 0x11
mov eax, dword [eax]
push 0x208
mov dword [ebp - 0x268], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0049a960
add esi, 0x124
add esp, 0xc
cmp dword [esi + 0x14], 7
jbe 0x4518e1
mov esi, dword [esi]
push esi
lea eax, [ebp - 0x218]
push 0x4e10a8
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x218]
push dword [ebp - 0x268]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x290]
call fcn.00426000
mov byte [ebp - 4], 0x12
lea esi, [ebp - 0x290]
cmp dword [ebp - 0x27c], 7
cmova esi, dword [ebp - 0x290]
call fcn.00405000
mov ecx, eax
test ecx, ecx
je 0x451c19
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], 0x13
call fcn.00404960
test al, al
jne 0x451990
test esi, esi
jne 0x45196f
xor ecx, ecx
jmp 0x451983
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x451974
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x21c]
call fcn.00404c10
mov byte [ebp - 4], 0x15
mov ecx, dword [ebp - 0x27c]
cmp ecx, 7
jbe 0x4519d4
mov edx, dword [ebp - 0x290]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4519ca
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c23
push ecx
push edx
call fcn.00498a13
add esp, 8
xor eax, eax
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x27c], 7
mov word [ebp - 0x290], ax
mov byte [ebp - 4], 0x16
or eax, 0xffffffff
mov edx, dword [ebp - 0x274]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x451a13
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x17
mov esi, dword [ebp - 0x26c]
test esi, esi
je 0x451a42
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x451a42
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x451a42
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 0x451a7e
push ecx
lea eax, [esi - 0x10]
mov dword [ebp - 0x268], esp
push eax
call fcn.00404710
mov ecx, dword [ebp - 0x268]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
mov ecx, 1
call fcn.0046dba0
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 0x451a9a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x278]
push 0x4dd498
push 0x4dce2c
push str.install
call fcn.0046b3f0
add esp, 0xc
mov ecx, esi
push 0xa
push 0x64
call fcn.00453120
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x220]
cmp ecx, 7
jbe 0x451b06
mov edx, dword [ebp - 0x234]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451afc
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c28
push ecx
push edx
call fcn.00498a13
add esp, 8
xor eax, eax
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x238]
mov dword [ebp - 0x224], 0
mov dword [ebp - 0x220], 7
mov word [ebp - 0x234], ax
cmp ecx, 7
jbe 0x451b67
mov edx, dword [ebp - 0x24c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x451b5d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x451c28
push ecx
push edx
call fcn.00498a13
add esp, 8
xor eax, eax
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x25c]
or esi, 0xffffffff
mov word [ebp - 0x24c], ax
add edx, 0xfffffff0
mov dword [ebp - 0x23c], 0
mov eax, esi
mov dword [ebp - 0x238], 7
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x451ba8
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 0x451bc3
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 0x451be2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x270]
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.00498d60
mov esp, ebp
pop ebp
ret 0x38
push 0x80004005
call fcn.00404de0
call fcn.0049df3f
call fcn.0049df3f
push 0x80004005
call fcn.00404de0
call fcn.0049df3f
call fcn.0049df3f
int3