Function at 0x450120
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 0x4d01cb
mov eax, dword fs:[0]
push eax
sub esp, 0x3fc
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 esi, ecx
mov dword [ebp - 0x3e4], esi
mov dword [ebp - 0x3f0], 0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x240]
mov dword [ebp - 0x240], 0
call fcn.00471f90
push 0
push 0xa
mov ecx, esi
call fcn.00452cd0
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x1a0], eax
xor eax, eax
mov dword [ebp - 0x264], 0
mov dword [ebp - 0x220], 0
mov dword [ebp - 0x254], 0
mov dword [ebp - 0x250], 7
mov word [ebp - 0x264], ax
mov dword [ebp - 0x27c], eax
mov dword [ebp - 0x26c], eax
mov dword [ebp - 0x268], 7
mov word [ebp - 0x27c], ax
lea eax, [esi + 4]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x24c]
mov dword [ebp - 0x224], eax
xorps xmm0, xmm0
mov dword [ebp - 0x244], 0
push ecx
mov ecx, eax
movq qword [ebp - 0x24c], xmm0
call fcn.00457970
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x248]
mov edi, dword [ebp - 0x24c]
sub eax, edi
sar eax, 3
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x228], eax
test eax, eax
je 0x4502d3
cmp dword [edi + 0x14], 8
mov esi, edi
jb 0x45024b
mov esi, dword [edi]
push ecx
mov ebx, esp
mov dword [ebp - 0x3e8], ebx
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x45138b
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
push esi
mov ecx, ebx
mov byte [ebp - 4], 6
call fcn.00404740
test al, al
jne 0x4502a8
test esi, esi
jne 0x450285
xor ecx, ecx
jmp 0x45029f
mov ecx, esi
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450290
sub ecx, edx
sar ecx, 1
push ecx
push esi
mov ecx, ebx
call fcn.00404a10
mov byte [ebp - 4], 4
call fcn.004581c0
mov ecx, dword [ebp - 0x21c]
add edi, 0x18
inc ecx
mov dword [ebp - 0x21c], ecx
cmp ecx, dword [ebp - 0x228]
jb 0x450241
mov esi, dword [ebp - 0x3e4]
call fcn.004584c0
lea ecx, [esi + 4]
call fcn.00454500
lea ecx, [ebp - 0x24c]
mov byte [ebp - 4], 3
call fcn.00458b60
cmp dword [esi + 0x150], 8
lea edx, [esi + 0x13c]
mov dword [ebp - 0x3e8], edx
mov eax, edx
jb 0x450308
mov eax, dword [edx]
push ecx
push 1
push eax
call fcn.00454690
lea eax, [ebp - 0x220]
mov ecx, esi
push eax
call fcn.00453240
mov edi, eax
or ebx, 0xffffffff
test edi, edi
js 0x4512d4
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x45138b
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x234], eax
push str.MainProgName
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 7
call fcn.00404740
test al, al
jne 0x450373
push 0xc
push str.MainProgName
lea ecx, [ebp - 0x234]
call fcn.00404a10
mov byte [ebp - 4], 8
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x451395
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x230], eax
push str.UninstallProgName
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 9
call fcn.00404740
test al, al
jne 0x4503be
push 0x11
push str.UninstallProgName
lea ecx, [ebp - 0x230]
call fcn.00404a10
mov byte [ebp - 4], 0xa
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x45139f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x23c], eax
push str.GroupName
lea ecx, [ebp - 0x23c]
mov byte [ebp - 4], 0xb
call fcn.00404740
test al, al
jne 0x450409
push 9
push str.GroupName
lea ecx, [ebp - 0x23c]
call fcn.00404a10
mov byte [ebp - 4], 0xc
mov eax, dword [0x517538]
add eax, 0xfffffff0
push eax
call fcn.00404520
add esp, 4
lea edi, [eax + 0x10]
mov dword [ebp - 0x238], edi
mov byte [ebp - 4], 0xd
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4513a9
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 [0x517538]
push 0x4ea0cc
push eax
call fcn.0041a0f0
add esp, 0xc
cmp dword [ebp + 0xc], 0
jne 0x45048d
mov ecx, esi
call fcn.00453560
test eax, eax
jne 0x45066b
call fcn.00451c30
test eax, eax
je 0x45070d
jmp 0x45066b
mov ebx, dword [0x517568]
mov dword [ebp - 0x220], 0
test ebx, ebx
je 0x4504ab
lock inc dword [ebx + 4]
mov ebx, dword [0x517568]
mov ecx, dword [0x517564]
mov dword [ebp - 0x248], ecx
mov dword [ebp - 0x244], ebx
mov byte [ebp - 4], 0xf
lea edx, [ebp - 0x3e0]
mov eax, dword [ecx]
push edx
call dword [eax + 0x30]
mov dword [ebp - 0x228], eax
mov byte [ebp - 4], 0x11
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4513b3
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x3f0], 1
mov dword [ebp - 0x22c], 0
lea esi, [eax + 0x10]
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x220], esi
push eax
mov eax, dword [ebp - 0x228]
push 0x201
push 0
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4505c9
push 0x208
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.004a1810
add esp, 0xc
mov dword [ebp - 0x3ec], 1
lea eax, [ebp - 0x228]
mov dword [ebp - 0x228], 0x208
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x3ec]
push eax
push 0
push str.DisplayName
push dword [ebp - 0x22c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x22c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x218]
mov dword [ebp - 0x22c], 0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4505a1
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 - 0x3e0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4505eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x13
test ebx, ebx
je 0x450614
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x450614
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x450614
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
mov eax, dword [0x517538]
test eax, eax
je 0x4513bd
push eax
push esi
call fcn.004b2f77
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 - 0x3e0], eax
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45065e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x3e0], 0
je 0x450707
lea eax, [ebp - 0x238]
mov edx, 0x4ea0dc
push eax
lea ecx, [ebp - 0x3e0]
call fcn.00453db0
add esp, 4
push eax
lea ecx, [ebp - 0x238]
mov byte [ebp - 4], 0x14
call fcn.00403210
mov byte [ebp - 4], 0xe
mov eax, ebx
mov esi, dword [ebp - 0x3e0]
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4506b6
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x238]
mov edx, 0x4ea0dc
push eax
lea ecx, [ebp - 0x3e0]
call fcn.00453db0
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 - 0x3e0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450701
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x238]
mov esi, dword [ebp - 0x3e4]
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450712
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [esi + 0x1c]
call fcn.00426af0
mov eax, dword [esi + 0xb0]
mov ecx, dword [esi + 0xac]
sub eax, ecx
mov esi, dword [ebp - 0x21c]
sar eax, 2
imul eax, eax, 0xc28f5c29
mov dword [ebp - 0x220], 0
test eax, eax
je 0x45088d
xor edx, edx
mov dword [ebp - 0x22c], edx
lea eax, [edx + ecx]
cmp dword [eax + 0x18], 8
lea ebx, [eax + 4]
mov dword [ebp - 0x3e0], eax
mov eax, ebx
jb 0x450778
mov eax, dword [ebx]
test eax, eax
je 0x45138b
push eax
push dword [ebp - 0x234]
call fcn.004b2f77
add esp, 8
test eax, eax
jne 0x4507b3
mov edx, edi
lea ecx, [edx + 2]
nop dword [eax + eax]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x4507a0
sub edx, ecx
sar edx, 1
push edx
push edi
jmp 0x4507f1
cmp dword [ebx + 0x14], 8
mov eax, ebx
jb 0x4507bd
mov eax, dword [ebx]
test eax, eax
je 0x45138b
push eax
push dword [ebp - 0x230]
call fcn.004b2f77
add esp, 8
test eax, eax
jne 0x4507f8
mov ecx, esi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4507e0
sub ecx, edx
sar ecx, 1
push ecx
push esi
mov ecx, ebx
call fcn.00426af0
mov ebx, dword [ebp - 0x3e0]
cmp dword [ebx + 0x60], 8
lea eax, [ebx + 0x4c]
jb 0x45080a
mov eax, dword [ebx + 0x4c]
test eax, eax
je 0x45138b
push eax
push dword [ebp - 0x23c]
call fcn.004b2f77
add esp, 8
test eax, eax
jne 0x450849
mov edx, edi
lea ecx, [edx + 2]
nop word [eax + eax]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x450830
sub edx, ecx
lea ecx, [ebx + 0x4c]
sar edx, 1
push edx
push edi
call fcn.00426af0
mov eax, dword [ebp - 0x3e4]
mov ebx, dword [ebp - 0x220]
mov edx, dword [ebp - 0x22c]
inc ebx
add edx, 0x64
mov dword [ebp - 0x220], ebx
mov ecx, dword [eax + 0xac]
mov eax, dword [eax + 0xb0]
sub eax, ecx
mov dword [ebp - 0x22c], edx
sar eax, 2
imul eax, eax, 0xc28f5c29
cmp ebx, eax
jb 0x450762
or ebx, 0xffffffff
mov ecx, dword [ebp - 0x224]
call fcn.00459c10
mov byte [ebp - 4], 0xd
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4508b3
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 0x4508ce
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 - 0x23c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4508ef
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 - 0x230]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450910
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 - 0x234]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450931
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp + 0x28], 0
je 0x45093c
call fcn.00452d40
mov esi, dword [ebp - 0x3e4]
mov ecx, dword [esi + 0x198]
mov eax, dword [ecx]
mov dword [ebp - 0x21c], eax
cmp eax, ecx
je 0x450987
mov edi, dword [sym.imp.USER32.dll_PostMessageW]
nop word [eax + eax]
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 0x450960
mov ecx, esi
call fcn.00451f00
mov edi, eax
mov dword [ebp - 0x228], edi
test edi, edi
js 0x4512d4
push 3
push 0x32
mov ecx, esi
call fcn.00452cd0
cmp dword [esi + 0x150], 8
lea edi, [esi + 0x13c]
mov eax, edi
jb 0x4509bc
mov eax, dword [edi]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
cmp dword [edi + 0x14], 8
mov ecx, edi
jb 0x4509d1
mov ecx, dword [edi]
add esi, 0x124
mov eax, esi
cmp dword [esi + 0x14], 8
jb 0x4509e1
mov eax, dword [esi]
push ecx
push eax
call fcn.00455020
cmp dword [esi + 0x14], 8
jb 0x4509f0
mov esi, dword [esi]
push ecx
push 0
push esi
call fcn.00454690
mov esi, dword [ebp - 0x3e4]
mov ecx, esi
push 2
push 0x3c
call fcn.00452cd0
cmp dword [ebp + 0x18], 0
mov edi, dword [ebp + 0xc]
je 0x450a57
test edi, edi
jne 0x450a57
push ecx
mov esi, esp
mov dword [ebp - 0x3e0], esi
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
push eax
call fcn.00404520
add esp, 4
add eax, 0x10
mov dword [esi], eax
mov esi, dword [ebp - 0x3e4]
mov ecx, esi
push edi
call fcn.00452300
mov edi, eax
mov dword [ebp - 0x228], eax
test edi, edi
js 0x4512d4
jmp 0x450b8a
call fcn.0045e770
cmp dword [ebp + 0x3c], 0
jne 0x450a6a
test edi, edi
je 0x450b8d
mov ecx, dword [ebp - 0x224]
lea eax, [ebp - 0x3dc]
push eax
call fcn.004559c0
cmp dword [ebp - 0x350], 8
lea edi, [ebp - 0x364]
mov esi, dword [0x517568]
cmovae edi, dword [ebp - 0x364]
mov dword [ebp - 0x21c], 0
test esi, esi
je 0x450aae
lock inc dword [esi + 4]
mov esi, dword [0x517568]
mov ecx, dword [0x517564]
mov dword [ebp - 0x248], ecx
mov dword [ebp - 0x244], esi
mov byte [ebp - 4], 0x17
lea edx, [ebp - 0x3e0]
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 - 0x3e0]
mov ecx, ebx
mov dword [ebp - 0x3ec], eax
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x450b0e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x450b31
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x450b31
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x450b31
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
cmp dword [ebp - 0x3ec], 0
jne 0x450b69
mov ecx, edi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450b40
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 - 0x3dc]
mov byte [ebp - 4], 3
call fcn.00451400
mov esi, dword [ebp - 0x3e4]
mov edi, dword [ebp + 0xc]
cmp dword [ebp + 0x38], 0
je 0x450b98
call fcn.0045e9b0
push 5
push 0x46
mov ecx, esi
call fcn.00452cd0
cmp dword [ebp + 0x20], 0
je 0x450d15
test edi, edi
je 0x450d06
mov eax, dword [ebp - 0x240]
cmp dword [eax - 4], 1
jle 0x450bcf
push dword [eax - 0xc]
lea ecx, [ebp - 0x240]
call fcn.00404870
mov esi, dword [ebp - 0x240]
test esi, esi
je 0x450d0f
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x224], 0
push eax
lea eax, [ebp - 0x230]
mov dword [ebp - 0x220], 0
push eax
lea eax, [ebp - 0x220]
mov dword [ebp - 0x230], 0
push eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x22c], 0
push eax
push str._d._d._d._d
push str.1.1.0.5
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x238], 0
call fcn.0040ac10
lea eax, [ebp - 0x238]
push eax
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x21c]
push eax
push str._d._d._d._d
push esi
call fcn.0040ac10
mov eax, dword [ebp - 0x224]
add esp, 0x30
mov ecx, dword [ebp - 0x21c]
cmp ecx, eax
jne 0x450c96
xor eax, eax
jmp 0x450c9c
sbb eax, eax
and eax, 2
dec eax
mov ecx, dword [ebp - 0x220]
mov edx, dword [ebp - 0x234]
cmp edx, ecx
jne 0x450cb0
xor ecx, ecx
jmp 0x450cb6
sbb ecx, ecx
and ecx, 2
dec ecx
mov edx, dword [ebp - 0x230]
mov esi, dword [ebp - 0x23c]
cmp esi, edx
jne 0x450cca
xor edx, edx
jmp 0x450cd0
sbb edx, edx
and edx, 2
dec edx
mov esi, dword [ebp - 0x22c]
mov edi, dword [ebp - 0x238]
cmp edi, esi
jne 0x450ce4
xor esi, esi
jmp 0x450cea
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 - 0x3e4]
test eax, eax
jle 0x450d15
mov ecx, esi
call fcn.00452b10
jmp 0x450d15
mov esi, dword [ebp - 0x3e4]
push 8
push 0x46
mov ecx, esi
call fcn.00452cd0
cmp dword [ebp + 0x34], 0
mov edi, dword [ebp + 0xc]
je 0x450fee
lea ecx, [ebp - 0x2d4]
call fcn.0044fa90
test edi, edi
jne 0x450f6f
mov eax, ecx
mov byte [ebp - 4], 0x18
push eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], edi
push eax
mov ecx, esi
call fcn.004516d0
mov byte [ebp - 4], 0x19
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4513c7
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x230], eax
mov byte [ebp - 4], 0x1a
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4513d1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x234], eax
mov byte [ebp - 4], 0x1b
lea eax, [ebp - 0x234]
mov edi, dword [ebp - 0x224]
lea edx, [ebp - 0x230]
push eax
mov ecx, edi
call fcn.004618b0
add esp, 4
mov dword [ebp - 0x21c], 0
mov edx, 0x4ea03c
lea ecx, [ebp - 0x21c]
call fcn.0047a700
mov byte [ebp - 4], 0x1c
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4513db
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 0x4ea210
push eax
call fcn.0041a0f0
mov ebx, dword [0x517568]
add esp, 0xc
test ebx, ebx
je 0x450e27
lock inc dword [ebx + 4]
mov ebx, dword [0x517568]
mov ecx, dword [0x517564]
mov dword [ebp - 0x248], ecx
mov dword [ebp - 0x244], ebx
mov byte [ebp - 4], 0x1e
lea edx, [ebp - 0x3e0]
mov eax, dword [ecx]
push edx
call dword [eax + 0xf4]
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 - 0x3e0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450e84
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
je 0x450ea9
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x450ea9
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x450ea9
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 0x450ec7
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 0x450ee8
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 - 0x234]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450f09
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 - 0x230]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x450f2a
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 0x450f45
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x2a0]
mov byte [ebp - 4], 3
call fcn.00426a90
lea ecx, [ebp - 0x2b8]
call fcn.00426a90
lea ecx, [ebp - 0x2d0]
call fcn.00426a90
mov edi, dword [ebp + 0xc]
jmp 0x450fe8
lea eax, [ebp - 0x2d4]
mov byte [ebp - 4], 0x1f
push eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], 0
push eax
mov ecx, esi
call fcn.004516d0
mov byte [ebp - 4], 0x20
call fcn.00461460
mov esi, dword [ebp - 0x224]
mov edx, esi
call fcn.00461690
mov byte [ebp - 4], 0x1f
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x450fc3
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x2a0]
mov byte [ebp - 4], 3
call fcn.00426a90
lea ecx, [ebp - 0x2b8]
call fcn.00426a90
lea ecx, [ebp - 0x2d0]
call fcn.00426a90
mov esi, dword [ebp - 0x3e4]
push 6
push 0x50
mov ecx, esi
call fcn.00452cd0
cmp dword [ebp + 0x24], 0
je 0x451006
mov ecx, esi
call fcn.00451490
push 9
push 0x5f
mov ecx, esi
call fcn.00452cd0
cmp dword [ebp + 0x2c], 0
je 0x4512ce
test edi, edi
je 0x451111
mov esi, dword [0x517568]
test esi, esi
je 0x451037
lock inc dword [esi + 4]
mov esi, dword [0x517568]
mov ecx, dword [0x517564]
mov dword [ebp - 0x248], ecx
mov dword [ebp - 0x244], esi
mov byte [ebp - 4], 0x21
lea edx, [ebp - 0x224]
mov eax, dword [ecx]
push edx
call dword [eax + 0xa8]
mov byte [ebp - 4], 0x23
test esi, esi
je 0x451083
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x451083
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x451083
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
push ecx
mov esi, esp
mov dword [ebp - 0x3e0], esp
mov dword [ebp - 0x3ec], 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], 0x24
cmp dword [0x5175e8], 0
jne 0x4510d1
push 4
call fcn.0049f987
mov dword [ebp - 0x3e0], eax
add esp, 4
mov dword [0x5175e8], eax
mov dword [eax], vtable.CAutoRunManager.0
mov byte [ebp - 4], 0x23
call fcn.004857c0
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 0x4510fd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x451111
push str._update__task_is_run
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x4512c8
mov esi, dword [0x517568]
test esi, esi
je 0x451125
lock inc dword [esi + 4]
mov esi, dword [0x517568]
mov ecx, dword [0x517564]
mov dword [ebp - 0x248], ecx
mov dword [ebp - 0x244], esi
mov byte [ebp - 4], 0x25
lea edx, [ebp - 0x3e0]
mov eax, dword [ecx]
push edx
call dword [eax + 0x64]
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0x408]
push dword [eax]
mov edx, dword [ebp - 0x3e8]
call fcn.004580f0
add esp, 4
mov edi, eax
mov byte [ebp - 4], 0x27
cmp dword [edi + 0x14], 8
jb 0x45116f
mov edi, dword [edi]
call fcn.00404de0
mov ecx, eax
test ecx, ecx
je 0x4513e5
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], 0x28
call fcn.00404740
test al, al
jne 0x4511cc
test edi, edi
jne 0x4511a8
xor ecx, ecx
jmp 0x4511bf
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4511b0
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x21c]
call fcn.00404a10
mov byte [ebp - 4], 0x2a
mov edx, dword [ebp - 0x3f4]
cmp edx, 8
jb 0x451210
mov ecx, dword [ebp - 0x408]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x451206
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4513ef
push edx
push ecx
call fcn.0049f9b7
add esp, 8
xor eax, eax
mov dword [ebp - 0x3f8], 0
mov dword [ebp - 0x3f4], 7
mov word [ebp - 0x408], ax
mov byte [ebp - 4], 0x2b
mov eax, ebx
mov edx, dword [ebp - 0x3e0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45124e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x2c
test esi, esi
je 0x451275
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x451275
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x451275
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 0x4512ad
push ecx
lea eax, [esi - 0x10]
mov edi, esp
push eax
mov dword [ebp - 0x3e8], edi
call fcn.00404520
add esp, 4
add eax, 0x10
mov ecx, 1
mov dword [edi], eax
call fcn.00473d60
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 0x4512c8
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x3e4]
mov edi, dword [ebp - 0x228]
push 0x4e57a0
push 0x4e5068
push str.install
call fcn.004787c0
mov ecx, dword [esi + 0x198]
add esp, 0xc
mov eax, dword [ecx]
mov dword [ebp - 0x228], eax
cmp eax, ecx
je 0x45132b
nop dword [eax]
push 0xa
push 0x64
push 0x464
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0x228]
call fcn.004034c0
mov eax, dword [ebp - 0x228]
cmp eax, dword [esi + 0x198]
jne 0x451300
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x240]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45134c
mov ecx, dword [edx]
push edx
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 0x45136b
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.0049fe2d
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
call fcn.004a453f
int3