Function at 0x4500e0
Capabilities:
Check if file exists
Create directory
Print debug messages
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d04b5
mov eax, dword fs:[0]
push eax
sub esp, 0x3f8
mov eax, dword [0x5020a8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x3dc], edi
mov dword [ebp - 0x3ec], 0
mov dword [ebp - 4], 0
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x45117b
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x244], esi
push 0
push 0xa
mov ecx, edi
call fcn.00452ac0
mov eax, dword [ebp + 0x14]
mov dword [edi + 0x1a0], eax
xor eax, eax
mov dword [ebp - 0x25c], 0
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x24c], 0
mov dword [ebp - 0x248], 7
mov word [ebp - 0x25c], ax
mov dword [ebp - 0x274], eax
mov dword [ebp - 0x264], eax
mov dword [ebp - 0x260], 7
mov word [ebp - 0x274], ax
lea eax, [edi + 4]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x240]
mov dword [ebp - 0x224], eax
xorps xmm0, xmm0
mov dword [ebp - 0x238], 0
push ecx
mov ecx, eax
movq qword [ebp - 0x240], xmm0
call fcn.00457760
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x23c]
mov ebx, dword [ebp - 0x240]
sub eax, ebx
sar eax, 3
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x220], 0
mov dword [ebp - 0x22c], eax
test eax, eax
je 0x4502a7
nop dword [eax]
cmp dword [ebx + 0x14], 8
mov edi, ebx
jb 0x45021a
mov edi, dword [ebx]
push ecx
mov dword [ebp - 0x21c], esp
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x45117b
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [ebp - 0x21c]
add eax, 0x10
mov dword [ecx], eax
push edi
mov byte [ebp - 4], 6
call fcn.00404740
test al, al
jne 0x45027c
test edi, edi
jne 0x450256
xor ecx, ecx
jmp 0x45026f
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450260
sub ecx, edx
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0x21c]
push edi
call fcn.00404a10
mov byte [ebp - 4], 4
call fcn.00457fb0
mov ecx, dword [ebp - 0x220]
add ebx, 0x18
inc ecx
mov dword [ebp - 0x220], ecx
cmp ecx, dword [ebp - 0x22c]
jb 0x450210
mov edi, dword [ebp - 0x3dc]
call fcn.004582b0
lea ecx, [edi + 4]
call fcn.004542f0
lea ecx, [ebp - 0x240]
mov byte [ebp - 4], 3
call fcn.00458950
cmp dword [edi + 0x150], 8
lea eax, [edi + 0x13c]
jb 0x4502d8
mov eax, dword [edi + 0x13c]
push ecx
push 1
push eax
call fcn.00454480
lea eax, [ebp - 0x228]
mov ecx, edi
push eax
call fcn.00453030
mov edi, eax
or ebx, 0xffffffff
test edi, edi
js 0x4510b4
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x451185
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x22c], eax
push str.MainProgName
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 7
call fcn.00404740
test al, al
jne 0x450343
push 0xc
push str.MainProgName
lea ecx, [ebp - 0x22c]
call fcn.00404a10
mov byte [ebp - 4], 8
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x45118f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x228], eax
push str.UninstallProgName
lea ecx, [ebp - 0x228]
mov byte [ebp - 4], 9
call fcn.00404740
test al, al
jne 0x45038e
push 0x11
push str.UninstallProgName
lea ecx, [ebp - 0x228]
call fcn.00404a10
mov byte [ebp - 4], 0xa
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x451199
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x230], eax
push str.GroupName
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 0xb
call fcn.00404740
test al, al
jne 0x4503d9
push 9
push str.GroupName
lea ecx, [ebp - 0x230]
call fcn.00404a10
mov byte [ebp - 4], 0xc
mov eax, dword [0x517528]
add eax, 0xfffffff0
push eax
call fcn.00404520
add esp, 4
lea edi, [eax + 0x10]
mov dword [ebp - 0x234], edi
mov byte [ebp - 4], 0xd
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4511a3
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x21c], eax
mov byte [ebp - 4], 0xe
lea eax, [ebp - 0x21c]
push dword [0x517528]
push 0x4ea08c
push eax
call fcn.0041a0f0
add esp, 0xc
cmp dword [ebp + 0xc], 0
jne 0x450463
mov esi, dword [ebp - 0x3dc]
mov ecx, esi
call fcn.00453350
test eax, eax
jne 0x450641
call fcn.00451a20
test eax, eax
je 0x4506e3
jmp 0x450641
mov ebx, dword [0x517558]
mov dword [ebp - 0x220], 0
test ebx, ebx
je 0x450481
lock inc dword [ebx + 4]
mov ebx, dword [0x517558]
mov ecx, dword [0x517554]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], ebx
mov byte [ebp - 4], 0xf
lea edx, [ebp - 0x3d8]
mov eax, dword [ecx]
push edx
call dword [eax + 0x30]
mov dword [ebp - 0x3e8], eax
mov byte [ebp - 4], 0x11
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4511ad
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3ec], 1
mov dword [ebp - 0x3e0], 0
lea esi, [eax + 0x10]
lea eax, [ebp - 0x3e0]
mov dword [ebp - 0x220], esi
push eax
mov eax, dword [ebp - 0x3e8]
push 0x201
push 0
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x45059f
push 0x208
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.004a1c30
add esp, 0xc
mov dword [ebp - 0x3e4], 1
lea eax, [ebp - 0x3e8]
mov dword [ebp - 0x3e8], 0x208
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x3e4]
push eax
push 0
push str.DisplayName
push dword [ebp - 0x3e0]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x3e0]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x218]
mov dword [ebp - 0x3e0], 0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450577
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x220]
call fcn.00404a10
mov esi, dword [ebp - 0x220]
mov byte [ebp - 4], 0x12
or eax, 0xffffffff
mov edx, dword [ebp - 0x3d8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4505c1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x13
test ebx, ebx
je 0x4505ea
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x4505ea
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x4505ea
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
mov eax, dword [0x517528]
test eax, eax
je 0x4511b7
push eax
push esi
call fcn.004b3277
add esp, 8
mov byte [ebp - 4], 0xe
test eax, eax
mov ecx, 1
mov eax, 0
cmovne eax, ecx
or ebx, 0xffffffff
mov dword [ebp - 0x3d8], eax
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x450634
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x3d8], 0
je 0x4506dd
lea eax, [ebp - 0x234]
mov edx, 0x4ea09c
push eax
lea ecx, [ebp - 0x3d8]
call fcn.00453ba0
add esp, 4
push eax
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 0x14
call fcn.00403210
mov byte [ebp - 4], 0xe
mov eax, ebx
mov esi, dword [ebp - 0x3d8]
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45068c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x234]
mov edx, 0x4ea09c
push eax
lea ecx, [ebp - 0x3d8]
call fcn.00453ba0
add esp, 4
push eax
lea ecx, [ebp - 0x21c]
mov byte [ebp - 4], 0x15
call fcn.00403210
mov byte [ebp - 4], 0xe
mov eax, ebx
mov edx, dword [ebp - 0x3d8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4506d7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x234]
mov esi, dword [ebp - 0x3dc]
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4506f0
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [esi + 0x1c]
call fcn.00426ab0
mov eax, dword [esi + 0xb0]
xor edx, edx
mov ecx, dword [esi + 0xac]
sub eax, ecx
mov esi, dword [ebp - 0x21c]
sar eax, 2
imul eax, eax, 0xc28f5c29
mov dword [ebp - 0x220], edx
test eax, eax
je 0x45085a
xor ebx, ebx
mov dword [ebp - 0x3e0], ebx
nop
lea eax, [ebx + ecx]
cmp dword [eax + 0x18], 8
lea ebx, [eax + 4]
mov dword [ebp - 0x3d8], eax
mov eax, ebx
jb 0x450756
mov eax, dword [ebx]
test eax, eax
je 0x45117b
push eax
push dword [ebp - 0x22c]
call fcn.004b3277
add esp, 8
test eax, eax
jne 0x450789
mov edx, edi
lea ecx, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x450776
sub edx, ecx
sar edx, 1
push edx
push edi
jmp 0x4507c4
cmp dword [ebx + 0x14], 8
mov eax, ebx
jb 0x450793
mov eax, dword [ebx]
test eax, eax
je 0x45117b
push eax
push dword [ebp - 0x228]
call fcn.004b3277
add esp, 8
test eax, eax
jne 0x4507cb
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4507b3
sub ecx, edx
sar ecx, 1
push ecx
push esi
mov ecx, ebx
call fcn.00426ab0
mov ebx, dword [ebp - 0x3d8]
cmp dword [ebx + 0x60], 8
lea eax, [ebx + 0x4c]
jb 0x4507dd
mov eax, dword [ebx + 0x4c]
test eax, eax
je 0x45117b
push eax
push dword [ebp - 0x230]
call fcn.004b3277
add esp, 8
test eax, eax
jne 0x450819
mov edx, edi
lea ecx, [edx + 2]
nop dword [eax]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x450800
sub edx, ecx
lea ecx, [ebx + 0x4c]
sar edx, 1
push edx
push edi
call fcn.00426ab0
mov edx, dword [ebp - 0x3dc]
mov ebx, dword [ebp - 0x3e0]
inc dword [ebp - 0x220]
add ebx, 0x64
mov dword [ebp - 0x3e0], ebx
mov eax, dword [edx + 0xb0]
mov ecx, dword [edx + 0xac]
sub eax, ecx
sar eax, 2
imul eax, eax, 0xc28f5c29
cmp dword [ebp - 0x220], eax
jb 0x450740
or ebx, 0xffffffff
mov ecx, dword [ebp - 0x224]
call fcn.00459a00
mov byte [ebp - 4], 0xd
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x450880
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xc
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x45089b
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x230]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4508bc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
mov eax, ebx
mov edx, dword [ebp - 0x228]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4508dd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4508fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp + 0x28], 0
je 0x450909
call fcn.00452b30
mov esi, dword [ebp - 0x3dc]
mov ecx, dword [esi + 0x198]
mov eax, dword [ecx]
mov dword [ebp - 0x21c], eax
cmp eax, ecx
je 0x45094e
mov edi, dword [sym.imp.USER32.dll_PostMessageW]
push 1
push 0x1e
push 0x464
push dword [eax + 0x10]
call edi
lea ecx, [ebp - 0x21c]
call fcn.004034c0
mov eax, dword [ebp - 0x21c]
cmp eax, dword [esi + 0x198]
jne 0x450927
mov ecx, esi
call fcn.00451cf0
mov edi, eax
mov dword [ebp - 0x230], edi
test edi, edi
js 0x4510ae
push 3
mov edi, esi
push 0x32
mov ecx, edi
call fcn.00452ac0
cmp dword [edi + 0x150], 8
lea esi, [edi + 0x13c]
mov eax, esi
jb 0x450985
mov eax, dword [esi]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
cmp dword [esi + 0x14], 8
mov ecx, esi
jb 0x45099a
mov ecx, dword [esi]
cmp dword [edi + 0x138], 8
lea esi, [edi + 0x124]
mov eax, esi
jb 0x4509ad
mov eax, dword [esi]
push ecx
push eax
call fcn.00454e10
cmp dword [esi + 0x14], 8
jb 0x4509bc
mov esi, dword [esi]
push ecx
push 0
push esi
call fcn.00454480
push 2
push 0x3c
mov ecx, edi
call fcn.00452ac0
cmp dword [ebp + 0x18], 0
mov esi, dword [ebp + 0xc]
je 0x450a18
test esi, esi
jne 0x450a18
push ecx
mov esi, esp
mov dword [ebp - 0x3d8], esi
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
push eax
call fcn.00404520
add esp, 4
add eax, 0x10
mov ecx, edi
mov dword [esi], eax
push 0
call fcn.004520f0
mov edi, eax
mov dword [ebp - 0x230], eax
test edi, edi
js 0x4510ae
jmp 0x450b44
call fcn.0045e560
cmp dword [ebp + 0x3c], 0
jne 0x450a2b
test esi, esi
je 0x450b4d
mov ecx, dword [ebp - 0x224]
lea eax, [ebp - 0x3d4]
push eax
call fcn.004557b0
cmp dword [ebp - 0x348], 8
lea edi, [ebp - 0x35c]
mov esi, dword [0x517558]
cmovae edi, dword [ebp - 0x35c]
mov dword [ebp - 0x21c], 0
test esi, esi
je 0x450a6f
lock inc dword [esi + 4]
mov esi, dword [0x517558]
mov ecx, dword [0x517554]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], esi
mov byte [ebp - 4], 0x17
lea edx, [ebp - 0x3d8]
mov eax, dword [ecx]
push edx
call dword [eax + 0x4c]
lea ecx, [ebp - 0x21c]
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 - 0x3d8]
mov ecx, ebx
mov dword [ebp - 0x3e4], eax
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x450acf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x450af2
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x450af2
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x450af2
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
cmp dword [ebp - 0x3e4], 0
jne 0x450b29
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450b00
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edi
push 1
push 0
push str.DisplayVersion
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x3d4]
mov byte [ebp - 4], 3
call fcn.004511f0
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp - 0x3dc]
cmp dword [ebp + 0x38], 0
je 0x450b58
call fcn.0045e7a0
push 5
push 0x46
mov ecx, edi
call fcn.00452ac0
cmp dword [ebp + 0x20], 0
je 0x450b74
test esi, esi
jne 0x450b74
mov ecx, edi
call fcn.00452900
push 8
push 0x46
mov ecx, edi
call fcn.00452ac0
cmp dword [ebp + 0x34], 0
je 0x450dc8
test esi, esi
jne 0x450dc8
lea ecx, [ebp - 0x2cc]
call fcn.0044fa50
mov eax, ecx
mov byte [ebp - 4], 0x18
push eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], esi
push eax
mov ecx, edi
call fcn.004514c0
mov byte [ebp - 4], 0x19
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4511c1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x228], eax
mov byte [ebp - 4], 0x1a
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4511cb
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x22c], eax
mov byte [ebp - 4], 0x1b
lea eax, [ebp - 0x22c]
mov edi, dword [ebp - 0x224]
lea edx, [ebp - 0x228]
push eax
mov ecx, edi
call fcn.00461660
add esp, 4
mov dword [ebp - 0x21c], esi
mov edx, 0x4ea00c
lea ecx, [ebp - 0x21c]
call fcn.00476da0
mov byte [ebp - 4], 0x1c
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4511d5
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x220], eax
push 1
lea eax, [ebp - 0x220]
mov byte [ebp - 4], 0x1d
push 0x4ea1b8
push eax
call fcn.0041a0f0
mov ebx, dword [0x517558]
add esp, 0xc
test ebx, ebx
je 0x450c7f
lock inc dword [ebx + 4]
mov ebx, dword [0x517558]
mov ecx, dword [0x517554]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], ebx
mov byte [ebp - 4], 0x1e
lea edx, [ebp - 0x3d8]
mov eax, dword [ecx]
push edx
call dword [eax + 0x10c]
push dword [ebp - 0x21c]
mov esi, dword [ebp - 0x220]
push esi
push str.isassoccadfile
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov edx, dword [ebp - 0x3d8]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450cdc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
je 0x450d01
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x450d01
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x450d01
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
or ebx, 0xffffffff
mov byte [ebp - 4], 0x1c
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x450d1f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1b
mov eax, ebx
mov edx, dword [ebp - 0x21c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450d40
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1a
mov eax, ebx
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450d61
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x19
mov eax, ebx
mov edx, dword [ebp - 0x228]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450d82
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x18
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x450d9d
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 3
call fcn.00426a50
lea ecx, [ebp - 0x2b0]
call fcn.00426a50
lea ecx, [ebp - 0x2c8]
call fcn.00426a50
mov edi, dword [ebp - 0x3dc]
push 6
push 0x50
mov ecx, edi
call fcn.00452ac0
cmp dword [ebp + 0x24], 0
je 0x450de0
mov ecx, edi
call fcn.00451280
push 9
push 0x5f
mov ecx, edi
call fcn.00452ac0
cmp dword [ebp + 0x2c], 0
je 0x4510a8
cmp dword [ebp + 0xc], 0
je 0x450eed
mov esi, dword [0x517558]
test esi, esi
je 0x450e13
lock inc dword [esi + 4]
mov esi, dword [0x517558]
mov ecx, dword [0x517554]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], esi
mov byte [ebp - 4], 0x1f
lea edx, [ebp - 0x224]
mov eax, dword [ecx]
push edx
call dword [eax + 0xb0]
mov byte [ebp - 4], 0x21
test esi, esi
je 0x450e5f
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x450e5f
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x450e5f
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
push ecx
mov esi, esp
mov dword [ebp - 0x3d8], esp
mov dword [ebp - 0x3e4], esi
mov eax, dword [ebp - 0x224]
add eax, 0xfffffff0
push eax
call fcn.00404520
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [ebp - 4], 0x22
cmp dword [0x5175d8], 0
jne 0x450ead
push 4
call fcn.0049fda7
mov dword [ebp - 0x3d8], eax
add esp, 4
mov dword [0x5175d8], eax
mov dword [eax], vtable.CAutoRunManager.0
mov byte [ebp - 4], 0x21
call fcn.00483830
mov byte [ebp - 4], 3
mov esi, eax
mov edx, dword [ebp - 0x224]
mov ecx, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x450ed9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x450eed
push str._update__task_is_run
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x4510a8
mov esi, dword [0x517558]
test esi, esi
je 0x450f01
lock inc dword [esi + 4]
mov esi, dword [0x517558]
mov ecx, dword [0x517554]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], esi
mov byte [ebp - 4], 0x23
lea edx, [ebp - 0x3d8]
mov eax, dword [ecx]
push edx
call dword [eax + 0x64]
mov byte [ebp - 4], 0x24
lea edx, [edi + 0x13c]
push dword [eax]
lea ecx, [ebp - 0x404]
call fcn.00457ee0
add esp, 4
mov edi, eax
mov byte [ebp - 4], 0x25
cmp dword [edi + 0x14], 8
jb 0x450f4b
mov edi, dword [edi]
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4511df
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x21c], eax
push edi
lea ecx, [ebp - 0x21c]
mov byte [ebp - 4], 0x26
call fcn.00404740
test al, al
jne 0x450fac
test edi, edi
jne 0x450f84
xor ecx, ecx
jmp 0x450f9f
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450f90
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x21c]
call fcn.00404a10
mov byte [ebp - 4], 0x28
mov edx, dword [ebp - 0x3f0]
cmp edx, 8
jb 0x450ff0
mov ecx, dword [ebp - 0x404]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x450fe6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4511e9
push edx
push ecx
call fcn.0049fdd7
add esp, 8
xor eax, eax
mov dword [ebp - 0x3f4], 0
mov dword [ebp - 0x3f0], 7
mov word [ebp - 0x404], ax
mov byte [ebp - 4], 0x29
mov eax, ebx
mov edx, dword [ebp - 0x3d8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45102e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x2a
test esi, esi
je 0x451055
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x451055
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x451055
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 0x45108d
push ecx
lea eax, [esi - 0x10]
mov edi, esp
push eax
mov dword [ebp - 0x3e4], edi
call fcn.00404520
add esp, 4
add eax, 0x10
mov ecx, 1
mov dword [edi], eax
call fcn.00473e00
add esp, 4
mov byte [ebp - 4], 3
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4510a8
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x230]
mov esi, dword [ebp - 0x244]
push 0x4e5770
push 0x4e5038
push str.install
call fcn.00474d70
mov eax, dword [ebp - 0x3dc]
add esp, 0xc
mov ecx, dword [eax + 0x198]
mov eax, dword [ecx]
mov dword [ebp - 0x224], eax
cmp eax, ecx
je 0x451121
mov esi, dword [ebp - 0x3dc]
nop dword [eax]
push 0xa
push 0x64
push 0x464
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0x224]
call fcn.004034c0
mov eax, dword [ebp - 0x224]
cmp eax, dword [esi + 0x198]
jne 0x4510f0
mov esi, dword [ebp - 0x244]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45113c
mov ecx, dword [esi]
push esi
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], ebx
dec ebx
test ebx, ebx
jg 0x45115b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004a024d
mov esp, ebp
pop ebp
ret 0x38
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
push 0x80004005
call fcn.00404bc0
call fcn.004a495f
int3