Function at 0x408d50
Capabilities:
Check if file exists
Delete file
Extract resource via kernel32 functions
Parse pe header
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x630e5c
mov eax, dword fs:[0]
push eax
sub esp, 0x314
mov eax, dword [0x6ce488]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0x2a8], ecx
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x90], ebx
mov byte [ebx + 0x5d0], 1
mov dword [ebp - 4], 0
call fcn.00405990
mov dword [ebp - 4], 0xffffffff
jmp 0x408dd9
mov eax, dword [ebx + 0x5dc]
test eax, eax
jne 0x408deb
cmp byte [ebx + 0x5ce], al
je 0x408e0e
cmp dword [ebx + 0x5d8], 0
je 0x408e1a
test eax, eax
jne 0x408e1a
mov eax, dword [ebx + 0x5b4]
cmp dword [eax - 0xc], 0
je 0x408e1a
mov dword [0x6d920c], 0x42c80000
mov byte [ebx + 0x5d0], 0
jmp 0x40c64c
call fcn.004021b0
mov ecx, eax
test ecx, ecx
je 0x40c668
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0xb4], edi
lea eax, [ebx + 0x5b0]
mov dword [ebp - 4], 2
push dword [eax]
lea ecx, [ebp - 0x94]
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x2bc], eax
call fcn.004178d0
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x94]
call fcn.0047fa40
push str.SETUP
push 0x82
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp - 0xa8], eax
test eax, eax
jne 0x408ed0
mov byte [ebp - 4], 2
or esi, 0xffffffff
mov edx, dword [ebp - 0x94]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x408eb0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], esi
dec esi
test esi, esi
jg 0x40c64c
mov ecx, dword [edi]
push edi
jmp 0x40c647
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x98], eax
test eax, eax
jne 0x408f27
mov byte [ebp - 4], 2
or esi, 0xffffffff
mov edx, dword [ebp - 0x94]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x408f07
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], esi
dec esi
test esi, esi
jg 0x40c64c
mov ecx, dword [edi]
push edi
jmp 0x40c647
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x9c], eax
test eax, eax
jne 0x408f82
mov byte [ebp - 4], 2
or esi, 0xffffffff
mov edx, dword [ebp - 0x94]
mov byte [ebx + 0x5d0], al
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x408f62
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], esi
dec esi
test esi, esi
jg 0x40c64c
mov ecx, dword [edi]
push edi
jmp 0x40c647
mov ecx, ebx
call fcn.0040d140
push str.uninstall.xml
lea edx, [ebx + 0x5b4]
mov dword [ebp - 0xb0], 0
lea ecx, [ebp - 0xb0]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 4
mov esi, dword [ebp - 0xb0]
test esi, esi
je 0x408fdf
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x408fd9
mov ecx, esi
call fcn.004803f0
test edx, edx
jl 0x408ff1
jg 0x408fd9
cmp eax, 0x200000
jb 0x408ff1
mov esi, dword [ebp - 0xb0]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [ebx + 0x5b4]
call fcn.00401c10
mov eax, dword [ebx + 0x5b4]
cmp dword [eax - 0xc], 0
je 0x409314
mov ebx, dword [ebp - 0x2a8]
cmp dword [ebx + 0x5d8], 0
jne 0x409020
mov ecx, dword [ebx + 0x5a0]
push str.ck_WxS
mov eax, dword [ecx]
call dword [eax + 0x3c]
cmp dword [ebx + 0x5dc], 0
je 0x4090ce
lea ecx, [ebp - 0xa0]
call fcn.004841d0
mov byte [ebp - 4], 5
mov edx, dword [eax]
mov esi, dword [ebx + 0x61c]
sub esi, 0x10
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x4090a8
cmp dword [esi + 0xc], 0
jl 0x409099
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x409099
push ecx
call fcn.00401b80
or ebx, 0xffffffff
mov dword [ebp - 0x90], eax
add esp, 4
lea edx, [esi + 0xc]
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x409088
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x2a8]
add eax, 0x10
mov dword [ecx + 0x61c], eax
jmp 0x4090ab
push dword [edx - 0xc]
lea ecx, [ebx + 0x61c]
push edx
call fcn.00401e40
or ebx, 0xffffffff
mov byte [ebp - 4], 4
mov eax, ebx
mov edx, dword [ebp - 0xa0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4090d1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4090d1
or ebx, 0xffffffff
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x80], 0
call fcn.00402270
mov esi, dword [ebp - 0x2a8]
xorps xmm0, xmm0
mov edx, dword [ebp - 0x2bc]
mov byte [ebp - 4], 6
mov dword [ebp - 0x48], 0
lea ecx, [esi + 0x5b4]
movlpd qword [ebp - 0x34], xmm0
movlpd qword [ebp - 0x2c], xmm0
movlpd qword [ebp - 0x24], xmm0
mov dword [ebp - 0x58], 0x3c
mov dword [ebp - 0x54], 0x40
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
call fcn.00411cf0
test al, al
mov dword [ebp - 0x40], 0
mov edx, str._S__Force
mov dword [ebp - 0x3c], 0
mov ecx, 0x6a06e0
mov dword [ebp - 0x38], 0
cmove ecx, edx
lea edx, [esi + 0x5b4]
mov dword [ebp - 0x44], ecx
lea ecx, [ebp - 0x2b0]
push str.uninst.exe
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 7
mov eax, dword [eax]
mov esi, dword [ebp - 0x80]
mov dword [ebp - 0xa0], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x90], ecx
cmp edx, ecx
je 0x4091e9
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x4091da
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x4091d4
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0xa0], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4091cc
mov esi, dword [ebp - 0x90]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0xa0]
lea esi, [eax + 0x10]
mov dword [ebp - 0x80], esi
jmp 0x4091e9
mov eax, dword [ebp - 0xa0]
push dword [eax - 0xc]
lea ecx, [ebp - 0x80]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x80]
mov byte [ebp - 4], 6
mov eax, ebx
mov edx, dword [ebp - 0x2b0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40920a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x409245
lea eax, [ebp - 0x58]
mov dword [ebp - 0x48], esi
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
push 0xffffffffffffffff
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x2bc]
mov ecx, dword [eax]
call fcn.0047fa40
call fcn.00407bc0
test eax, eax
je 0x4092f7
mov eax, dword [ebp - 0x2a8]
cmp dword [eax + 0x5d8], 0
mov byte [eax + 0x5d0], 0
jne 0x40927a
push 0
push 0
push 0x7e9
push dword [eax + 4]
call dword [sym.imp.USER32.dll_PostMessageW]
mov byte [ebp - 4], 4
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x409295
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp - 0xb0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4092b6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, ebx
mov edx, dword [ebp - 0x94]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4092d7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x40c64c
mov ecx, dword [edi]
push edi
jmp 0x40c647
mov byte [ebp - 4], 4
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x409317
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x409317
or ebx, 0xffffffff
mov esi, dword [ebp - 0x2a8]
mov eax, dword [esi + 0x614]
lea ecx, [esi + 0x614]
cmp dword [eax - 0xc], 0
je 0x409384
push ecx
lea edx, [esi + 0x618]
mov dword [ebp - 0xac], 0
lea ecx, [ebp - 0xac]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xac]
mov edx, dword [esi + 0x5b0]
call fcn.00484410
mov byte [ebp - 4], 4
mov eax, ebx
mov edx, dword [ebp - 0xac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409384
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esi + 0x5d8], 0
jne 0x40941f
push ecx
lea ecx, [ebp - 0x18c]
mov dword [ebp - 0x84], 0
call fcn.00413360
lea ecx, [ebp - 0x16c]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov byte [ebp - 4], 9
cmp dword [eax + 0x14], 8
jb 0x4093c0
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x84]
call fcn.004178d0
lea ecx, [ebp - 0x16c]
mov byte [ebp - 4], 0xb
call fcn.00402f20
push 6
push 0x6a0714
lea ecx, [ebp - 0x84]
call fcn.00417970
mov ecx, dword [esi + 0x5a0]
push dword [ebp - 0x84]
mov eax, dword [ecx]
call dword [eax + 0x3c]
mov byte [ebp - 4], 4
mov eax, ebx
mov edx, dword [ebp - 0x84]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40941f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0xa8]
push 0
call dword [sym.imp.KERNEL32.dll_SizeofResource]
lea ecx, [ebp - 0xa8]
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0xa8], 0
call fcn.00402270
push 1
lea eax, [ebp - 0x90]
mov byte [ebp - 4], 0xc
push eax
lea ecx, [ebp - 0x94]
call fcn.00411f40
mov ecx, 0x6a2f8c
mov eax, dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40948d
test dx, dx
je 0x409489
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40948d
add eax, 4
add ecx, 4
test dx, dx
jne 0x409467
xor esi, esi
jmp 0x409492
sbb esi, esi
or esi, 1
mov edx, dword [ebp - 0x90]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4094af
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x94]
test esi, esi
jne 0x40955e
mov eax, dword [eax - 0xc]
lea ecx, [ebp - 0x94]
dec eax
push eax
lea eax, [ebp - 0xa0]
push eax
call fcn.00411ed0
mov byte [ebp - 4], 0xd
mov edx, dword [eax]
mov esi, dword [ebp - 0xa8]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x40953b
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x40952c
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40952c
push ecx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x90], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x409521
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x90]
add eax, 0x10
mov dword [ebp - 0xa8], eax
jmp 0x40953b
push dword [edx - 0xc]
lea ecx, [ebp - 0xa8]
push edx
call fcn.00401e40
mov byte [ebp - 4], 0xc
mov eax, ebx
mov edx, dword [ebp - 0xa0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4095bf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4095bf
mov edi, dword [ebp - 0xa8]
lea edx, [eax - 0x10]
lea esi, [edi - 0x10]
cmp edx, esi
je 0x4095c5
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4095b0
mov ecx, dword [edx]
cmp ecx, dword [esi]
jne 0x4095b0
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x90], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x4095a5
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x90]
lea edi, [eax + 0x10]
mov dword [ebp - 0xa8], edi
jmp 0x4095c5
push dword [eax - 0xc]
lea ecx, [ebp - 0xa8]
push eax
call fcn.00401e40
mov edi, dword [ebp - 0xa8]
push ecx
push dword [ebp - 0x2b0]
mov ecx, edi
push dword [ebp - 0x9c]
call fcn.00419bc0
add esp, 0xc
push dword [ebp - 0x98]
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov eax, dword [0x6d92f8]
mov dword [ebp - 0xa0], eax
mov esi, dword [eax]
cmp esi, eax
je 0x409706
nop dword [eax]
mov edx, dword [ebp - 0x2bc]
lea ebx, [esi + 0x10]
push ebx
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x80], 0
call fcn.00411e10
add esp, 4
mov ecx, dword [ebp - 0x2a8]
push ebx
mov byte [ebp - 4], 0xe
lea ecx, [ecx + 0x620]
call fcn.00411a20
push dword [ebp - 0x80]
mov ebx, eax
mov dword [ebp - 0x90], ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x409696
mov eax, dword [ebx]
test eax, eax
je 0x40c668
mov edx, eax
mov eax, dword [ebp - 0x80]
mov ecx, eax
mov bx, word [ecx]
cmp bx, word [edx]
jne 0x40967e
test bx, bx
je 0x40967a
mov bx, word [ecx + 2]
cmp bx, word [edx + 2]
jne 0x40967e
add ecx, 4
add edx, 4
test bx, bx
jne 0x409658
xor ecx, ecx
jmp 0x409683
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x409699
mov edx, dword [ebp - 0x90]
mov ecx, eax
mov edx, dword [edx]
call fcn.004808a0
mov eax, dword [ebp - 0x80]
or ebx, 0xffffffff
mov byte [ebp - 4], 0xc
lea edx, [eax - 0x10]
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4096b7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
je 0x4096e4
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x4096e0
nop dword [eax]
cmp esi, dword [eax + 8]
jne 0x4096e0
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x4096d0
mov esi, eax
jmp 0x4096fa
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0xd], 0
jne 0x4096fa
nop
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0xd], 0
je 0x4096f0
cmp esi, dword [ebp - 0xa0]
jne 0x409600
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
lea ecx, [ebp - 0xc4]
mov dword [ebp - 0xc4], 0
call fcn.004178d0
mov byte [ebp - 4], 0xf
xorps xmm0, xmm0
movq qword [ebp - 0xc0], xmm0
mov dword [ebp - 0xb8], 0
call fcn.004021b0
mov ecx, eax
test ecx, ecx
je 0x40c672
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xc0], eax
mov byte [ebp - 4], 0x10
call fcn.004021b0
mov ecx, eax
test ecx, ecx
je 0x40c67c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xbc], eax
mov byte [ebp - 4], 0x11
call fcn.004021b0
mov ecx, eax
test ecx, ecx
je 0x40c686
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xb8], eax
push 0
push 0
mov byte [ebp - 4], 0x12
call dword [sym.imp.ole32.dll_CoInitializeEx]
lea ecx, [ebp - 0xc0]
call fcn.00495660
xorps xmm0, xmm0
mov dword [ebp - 0x29c], 0
movq qword [ebp - 0x2a4], xmm0
mov dword [ebp - 0x2a4], 0
mov dword [ebp - 0x2a0], 0
mov dword [ebp - 0x29c], 0
push str.SETUP
push 0x83
push 0
mov byte [ebp - 4], 0x14
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
jne 0x4098b0
mov eax, dword [ebp - 0x2a8]
mov byte [eax + 0x5d0], 0
mov byte [ebp - 4], 0xf
call dword [sym.imp.ole32.dll_CoUninitialize]
mov edx, dword [ebp - 0xb8]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409836
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xbc]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409853
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xc0]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409870
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xc
mov eax, ebx
mov edx, dword [ebp - 0xc4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409891
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x40c5e8
mov ecx, dword [edi]
push edi
jmp 0x40c5e3
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x409802
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push 0x70
mov esi, eax
lea eax, [ebp - 0x210]
push 0
push eax
call fcn.005feb40
add esp, 0xc
lea ecx, [ebp - 0x210]
call fcn.0048ec40
mov dword [ebp - 0x12c], 0
mov dword [ebp - 0x128], 0xf
mov byte [ebp - 0x13c], 0
mov dword [ebp - 0xe4], 0
mov dword [ebp - 0xe0], 0xf
mov byte [ebp - 0xf4], 0
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0xf8], 0xf
mov byte [ebp - 0x10c], 0
mov dword [ebp - 0x114], 0
mov dword [ebp - 0x110], 0xf
mov byte [ebp - 0x124], 0
lea ecx, [ebp - 0x98]
mov dword [ebp - 0x98], 0
call fcn.00402270
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x8c], 0
call fcn.00402270
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x9c], 0
call fcn.00402270
push 1
push 0
push esi
lea ecx, [ebp - 0x210]
mov byte [ebp - 4], 0x1c
call fcn.00490420
mov esi, dword [ebp - 0x1f8]
test esi, esi
je 0x4099c7
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x409b45
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x4099b1
xor eax, eax
push str.addfiles
mov ecx, eax
mov dword [ebp - 0x2b0], eax
call fcn.0048e220
mov esi, eax
test esi, esi
je 0x409a02
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x18]
mov ecx, esi
test eax, eax
jne 0x409b51
push str.addfiles
call fcn.0048e280
mov esi, eax
test esi, esi
jne 0x4099e1
mov dword [ebp - 0x80], 0
push str.GSoInput
lea ecx, [ebp - 0x198]
call fcn.00413540
lea ecx, [ebp - 0x16c]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov byte [ebp - 4], 0x1f
cmp dword [eax + 0x14], 8
jb 0x409a32
mov eax, dword [eax]
push eax
lea edx, [ebp - 0xc4]
lea ecx, [ebp - 0x90]
call fcn.00411d40
push ecx
push 0x2001f
sub esp, 8
lea ecx, [ebp - 0x2a4]
push dword [eax]
push reloc.WS2_32.dll_bind
call fcn.00416f80
mov edx, dword [ebp - 0x90]
or ebx, 0xffffffff
mov esi, eax
add edx, 0xfffffff0
mov ecx, ebx
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x409a81
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x16c]
call fcn.00402f20
test esi, esi
je 0x409e3c
mov eax, dword [ebp - 0x2a8]
mov byte [ebp - 4], 0x1b
mov edx, dword [ebp - 0x9c]
add edx, 0xfffffff0
mov byte [eax + 0x5d0], 0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409ac2
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 - 0x8c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409ae3
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 - 0x98]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409b04
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x17
mov edx, dword [ebp - 0xf8]
cmp edx, 0x10
jb 0x409d4a
mov ecx, dword [ebp - 0x10c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409d40
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c690
jmp 0x409d40
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x4099c9
mov eax, dword [esi]
call dword [eax + 0x18]
mov ebx, eax
mov dword [ebp - 0x80], ebx
test ebx, ebx
je 0x409a09
mov esi, dword [ebx + 0x18]
test esi, esi
je 0x409b86
nop word [eax + eax]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x409d18
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x409b70
xor ebx, ebx
mov dword [ebp - 0x84], ebx
test ebx, ebx
je 0x409a09
nop word [eax + eax]
push 0x6a07a0
mov ecx, ebx
call fcn.0048e5c0
push eax
lea ecx, [ebp - 0x154]
call fcn.00417110
lea eax, [ebp - 0x154]
mov byte [ebp - 4], 0x1d
push eax
lea ecx, [ebp - 0xdc]
call fcn.00417290
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0xdc]
cmp dword [ebp - 0xc8], 0x10
lea ebx, [ebp - 0xdc]
mov edx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xcc]
cmovae ecx, edx
cmovae ebx, edx
add eax, ecx
cmp dword [ebp - 0xc8], 0x10
lea ecx, [ebp - 0xdc]
push ebx
cmovae ecx, edx
push eax
push ecx
lea ecx, [ebp - 0x7c]
call fcn.004137e0
add esp, 0xc
lea eax, [ebp - 0xdc]
push eax
call fcn.00411560
lea ecx, [ebp - 0x154]
cmp eax, ecx
je 0x409c49
cmp dword [ebp - 0x140], 0x10
push dword [ebp - 0x144]
cmovae ecx, dword [ebp - 0x154]
push ecx
mov ecx, eax
call fcn.00417150
mov esi, dword [ebp - 0x84]
mov esi, dword [esi + 0x3c]
test esi, esi
je 0x409c6c
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x409d2c
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x409c56
xor ebx, ebx
mov dword [ebp - 0x84], ebx
mov byte [ebp - 4], 0x1d
mov edx, dword [ebp - 0xc8]
cmp edx, 0x10
jb 0x409cb2
mov ecx, dword [ebp - 0xdc]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409ca8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c690
push edx
push ecx
call fcn.005c385c
add esp, 8
mov byte [ebp - 4], 0x1c
mov edx, dword [ebp - 0x140]
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 0xf
mov byte [ebp - 0xdc], 0
cmp edx, 0x10
jb 0x409d0b
mov ecx, dword [ebp - 0x154]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409d01
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c690
push edx
push ecx
call fcn.005c385c
add esp, 8
test ebx, ebx
jne 0x409ba0
jmp 0x409a09
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ebx, eax
mov dword [ebp - 0x84], eax
jmp 0x409b8e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ebx, eax
mov dword [ebp - 0x84], eax
jmp 0x409c74
push edx
push ecx
call fcn.005c385c
add esp, 8
mov byte [ebp - 4], 0x16
mov edx, dword [ebp - 0xe0]
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0xf8], 0xf
mov byte [ebp - 0x10c], 0
cmp edx, 0x10
jb 0x409da3
mov ecx, dword [ebp - 0xf4]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409d99
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c695
push edx
push ecx
call fcn.005c385c
add esp, 8
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x128]
mov dword [ebp - 0xe4], 0
mov dword [ebp - 0xe0], 0xf
mov byte [ebp - 0xf4], 0
cmp edx, 0x10
jb 0x409dfc
mov ecx, dword [ebp - 0x13c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409df2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c69a
push edx
push ecx
call fcn.005c385c
add esp, 8
lea ecx, [ebp - 0x210]
mov dword [ebp - 0x12c], 0
mov dword [ebp - 0x128], 0xf
mov byte [ebp - 0x13c], 0
call fcn.00417620
mov eax, dword [ebp - 0x2a4]
test eax, eax
je 0x40980f
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40980f
cmp dword [0x6d9208], 0
je 0x409ec0
mov eax, dword [ebp - 0x2a8]
mov byte [ebp - 4], 0x1b
mov edx, dword [ebp - 0x9c]
mov dword [0x6d920c], 0x42c80000
add edx, 0xfffffff0
mov byte [eax + 0x5d0], 0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409e7d
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 - 0x8c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409e9e
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 - 0x98]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x409b04
jmp 0x409afc
push 0x88
lea eax, [ebp - 0x298]
push 0
push eax
call fcn.005feb40
add esp, 0xc
lea ecx, [ebp - 0x298]
call fcn.00416ee0
push 1
push 0
push str.__xml_version_1.0__encoding_utf_8___
mov byte [ebp - 4], 0x20
call fcn.00491c40
cmp dword [ebp - 0x284], 0
jne 0x409f93
mov esi, 0x6d9280
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
test eax, eax
jne 0x409f1c
mov esi, dword [esi + 0x10]
test esi, esi
jne 0x409f05
jmp 0x409fb1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
test eax, eax
je 0x409fb1
mov esi, 0x6d9280
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
test eax, eax
jne 0x409f44
mov esi, dword [esi + 0x10]
test esi, esi
jne 0x409f30
jmp 0x409f4d
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
mov esi, eax
cmp byte [esi + 0x40], 0
jne 0x409fb1
mov edx, dword [str.Error_when_TiXmlDocument_added_to_document__because_TiXmlDocument_can_only_be_at_the_root.]
mov ecx, edx
mov byte [esi + 0x40], 1
mov dword [esi + 0x44], 0x10
lea edi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x409f70
sub ecx, edi
push ecx
push edx
lea ecx, [esi + 0x48]
call fcn.00417150
mov dword [esi + 0x68], 0xffffffff
mov dword [esi + 0x64], 0xffffffff
jmp 0x409fb1
mov eax, dword [ebp - 0x298]
lea ecx, [ebp - 0x298]
call dword [eax + 0x3c]
test eax, eax
je 0x409fb1
push eax
mov ecx, 0x6d9280
call fcn.0048e140
push 0x8c
call fcn.005c3873
mov esi, eax
add esp, 4
mov dword [ebp - 0x7c], esi
push 0x8c
push 0
push esi
mov byte [ebp - 4], 0x21
call fcn.005feb40
add esp, 0xc
lea ecx, [ebp - 0x198]
push str.GSoInput
call fcn.00413540
lea ecx, [ebp - 0x16c]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov byte [ebp - 4], 0x22
cmp dword [eax + 0x14], 8
mov dword [ebp - 0xa0], 1
jb 0x40a00a
mov eax, dword [eax]
mov edx, eax
lea ecx, [ebp - 0xdc]
call fcn.004800f0
mov edx, eax
mov dword [esi + 8], 0xffffffff
lea ecx, [esi + 0x20]
mov dword [esi + 4], 0xffffffff
mov dword [esi + 0xc], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov byte [ecx], 0
mov dword [ebp - 0xa0], 3
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 1
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
mov dword [ebp - 4], 0x24
lea eax, [esi + 0x40]
mov dword [esi], vtable.TiXmlElement.0
mov dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0xffffffff
mov dword [eax + 0xc], 0
mov dword [eax], vtable.TiXmlAttribute.0
mov dword [eax + 0x24], 0
mov dword [eax + 0x28], 0xf
mov byte [eax + 0x14], 0
mov dword [eax + 0x3c], 0
mov dword [eax + 0x40], 0xf
mov byte [eax + 0x2c], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x48], eax
mov dword [eax + 0x44], eax
mov byte [ebp - 4], 0x25
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
cmp ecx, edx
je 0x40a0ed
cmp dword [edx + 0x14], 0x10
mov eax, edx
jb 0x40a0e4
mov eax, dword [edx]
push dword [edx + 0x10]
push eax
call fcn.00417150
mov dword [ebp - 4], 0x26
mov edx, dword [ebp - 0xc8]
mov dword [0x6d9208], esi
cmp edx, 0x10
jb 0x40a134
mov ecx, dword [ebp - 0xdc]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a12a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c690
push edx
push ecx
call fcn.005c385c
add esp, 8
mov dword [ebp - 4], 0x20
lea ecx, [ebp - 0x16c]
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 0xf
mov byte [ebp - 0xdc], 0
mov dword [ebp - 0xac], 0
call fcn.00402f20
push 0x8c
call fcn.005c3873
mov esi, eax
add esp, 4
mov dword [ebp - 0x7c], esi
push 0x8c
push 0
push esi
mov byte [ebp - 4], 0x28
call fcn.005feb40
add esp, 0xc
mov ecx, esi
push str.path
call fcn.0048e2e0
mov byte [ebp - 4], 0x20
mov ecx, dword [0x6d9208]
push eax
mov dword [0x6d9204], eax
call fcn.0048e140
push dword [0x6d9200]
mov esi, dword [0x6d9204]
lea eax, [ebp - 0x60]
push 0x6ad0cc
push 0x40
push eax
call fcn.0048f7c0
add esp, 0x10
lea eax, [ebp - 0x60]
mov ecx, esi
push eax
push str.items
call fcn.0048e5f0
mov eax, dword [0x6d92f0]
mov esi, dword [eax]
mov dword [ebp - 0xa0], esi
cmp esi, eax
je 0x40a2e1
mov ebx, eax
nop dword [eax + eax]
push 0x8c
call fcn.005c3873
mov edi, eax
add esp, 4
mov dword [ebp - 0x7c], edi
push 0x8c
push 0
push edi
mov byte [ebp - 4], 0x29
call fcn.005feb40
add esp, 0xc
mov ecx, edi
push str.File
call fcn.0048e2e0
mov edi, eax
mov byte [ebp - 4], 0x20
mov ecx, dword [0x6d9204]
push edi
call fcn.0048e140
push 4
push 0x6a07a0
lea ecx, [ebp - 0xdc]
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 0xf
mov byte [ebp - 0xdc], 0
call fcn.00417150
add esi, 0x28
mov byte [ebp - 4], 0x2a
push esi
lea eax, [ebp - 0xdc]
mov ecx, edi
push eax
call fcn.0048e800
mov byte [ebp - 4], 0x20
mov edx, dword [ebp - 0xc8]
cmp edx, 0x10
jb 0x40a2c5
mov ecx, dword [ebp - 0xdc]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a2bb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40c690
push edx
push ecx
call fcn.005c385c
add esp, 8
lea ecx, [ebp - 0xa0]
call fcn.004123c0
mov esi, dword [ebp - 0xa0]
cmp esi, ebx
jne 0x40a200
or ebx, 0xffffffff
mov ecx, dword [ebp - 0x80]
push str.regrootitem
call fcn.0048e280
mov esi, eax
test esi, esi
je 0x40a315
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x18]
mov ecx, esi
test eax, eax
jne 0x40a3b7
push str.regrootitem
call fcn.0048e280
mov esi, eax
test esi, esi
jne 0x40a2f4
mov edi, dword [ebp - 0x98]
push dword [0x6d9208]
mov ecx, 0x6d9280
call fcn.0048e140
push str.uninstall.xml
lea edx, [ebp - 0x94]
lea ecx, [ebp - 0x2ac]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 0x4c
mov eax, dword [eax]
mov esi, dword [ebp - 0xb4]
mov dword [ebp - 0x88], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x7c], ecx
cmp edx, ecx
je 0x40bc6c
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40bc57
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40bc51
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x88], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40a3a9
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x88]
lea esi, [eax + 0x10]
mov dword [ebp - 0xb4], esi
jmp 0x40bc6c
mov eax, dword [esi]
call dword [eax + 0x18]
mov dword [ebp - 0x7c], eax
test eax, eax
je 0x40a315
mov esi, dword [eax + 0x18]
test esi, esi
je 0x40a3e6
nop
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40a50f
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40a3d0
xor eax, eax
mov dword [ebp - 0x84], eax
test eax, eax
je 0x40a95e
nop word [eax + eax]
mov esi, dword [eax + 0x88]
add eax, 0x40
xor ecx, ecx
cmp esi, eax
cmove esi, ecx
cmp dword [esi + 0x40], 0x10
lea edx, [esi + 0x2c]
jb 0x40a41b
mov edx, dword [edx]
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40a420
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0xf4]
call fcn.00417150
mov esi, dword [esi + 0x48]
cmp dword [esi + 0x3c], 0
jne 0x40a447
cmp dword [esi + 0x24], 0
jne 0x40a447
xor esi, esi
cmp dword [esi + 0x40], 0x10
lea edx, [esi + 0x2c]
jb 0x40a452
mov edx, dword [edx]
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40a457
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x10c]
call fcn.00417150
mov edx, dword [esi + 0x48]
cmp dword [edx + 0x3c], 0
jne 0x40a47e
cmp dword [edx + 0x24], 0
jne 0x40a47e
xor edx, edx
add edx, 0x2c
cmp dword [edx + 0x14], 0x10
jb 0x40a489
mov edx, dword [edx]
mov ecx, edx
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40a490
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x124]
call fcn.00417150
lea edx, [ebp - 0xf4]
lea ecx, [ebp - 0xa0]
call fcn.0047ffd0
mov byte [ebp - 4], 0x2b
mov edx, dword [eax]
mov edi, dword [ebp - 0x8c]
lea ecx, [edx - 0x10]
lea esi, [edi - 0x10]
cmp ecx, esi
je 0x40a530
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x40a51b
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40a51b
push ecx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x90], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x40a504
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x90]
lea edi, [eax + 0x10]
mov dword [ebp - 0x8c], edi
jmp 0x40a530
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x40a3e8
push dword [edx - 0xc]
lea ecx, [ebp - 0x8c]
push edx
call fcn.00401e40
mov edi, dword [ebp - 0x8c]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0xa0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40a551
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebp - 0x10c]
lea ecx, [ebp - 0x2b8]
call fcn.0047ffd0
mov byte [ebp - 4], 0x2c
mov eax, dword [eax]
mov esi, dword [ebp - 0x9c]
mov dword [ebp - 0x80], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x90], ecx
cmp edx, ecx
je 0x40a5db
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40a5c6
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40a5c3
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x80], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40a5b8
mov esi, dword [ebp - 0x90]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x80]
lea esi, [eax + 0x10]
mov dword [ebp - 0x9c], esi
jmp 0x40a5db
mov eax, dword [ebp - 0x80]
push dword [eax - 0xc]
lea ecx, [ebp - 0x9c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x9c]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0x2b8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40a5fc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0xe0], 0x10
lea eax, [ebp - 0xf4]
push 0xf
cmovae eax, dword [ebp - 0xf4]
push 0x6a07f4
push dword [ebp - 0xe4]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40a6d8
lea eax, [ebp - 0x9c]
push eax
lea edx, [ebp - 0x94]
lea ecx, [ebp - 0x2b4]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x2d
lea ecx, [esi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x90], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x40a6c9
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40a6b4
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40a6b1
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x80], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40a699
mov esi, dword [ebp - 0x90]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x80]
lea esi, [eax + 0x10]
mov byte [ebp - 4], 0x20
mov edx, dword [ebp - 0x2b4]
mov dword [ebp - 0x9c], esi
jmp 0x40a7a2
mov eax, dword [ebp - 0x80]
push dword [eax - 0xc]
lea ecx, [ebp - 0x9c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x9c]
mov byte [ebp - 4], 0x20
mov edx, dword [ebp - 0x2b4]
jmp 0x40a7a2
cmp dword [ebp - 0xe0], 0x10
lea eax, [ebp - 0xf4]
push 0xb
cmovae eax, dword [ebp - 0xf4]
push str.DisplayIcon
push dword [ebp - 0xe4]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40a7c2
lea eax, [ebp - 0x9c]
push eax
lea edx, [ebp - 0x94]
lea ecx, [ebp - 0x2ac]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x2e
lea ecx, [esi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x90], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x40a798
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40a783
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40a780
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x80], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40a775
mov esi, dword [ebp - 0x90]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x80]
lea esi, [eax + 0x10]
mov dword [ebp - 0x9c], esi
jmp 0x40a798
mov eax, dword [ebp - 0x80]
push dword [eax - 0xc]
lea ecx, [ebp - 0x9c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x9c]
mov byte [ebp - 4], 0x20
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40a882
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40a882
cmp dword [ebp - 0xe0], 0x10
lea eax, [ebp - 0xf4]
push 0xe
cmovae eax, dword [ebp - 0xf4]
push 0x6a0810
push dword [ebp - 0xe4]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40a882
mov eax, dword [ebp - 0x2a8]
lea edx, [esi - 0x10]
add eax, 0x600
mov dword [ebp - 0x88], eax
mov ecx, dword [eax]
sub ecx, 0x10
mov dword [ebp - 0x80], ecx
cmp edx, ecx
je 0x40a882
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
mov dword [ebp - 0x90], edi
mov edi, dword [ebp - 0x8c]
jl 0x40a877
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40a871
push edx
call fcn.00401b80
mov dword [ebp - 0x88], eax
add esp, 4
mov eax, dword [ebp - 0x90]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a85a
mov eax, dword [ebp - 0x80]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x2a8]
mov eax, dword [ebp - 0x88]
add eax, 0x10
mov dword [ecx + 0x600], eax
jmp 0x40a882
mov eax, dword [ebp - 0x88]
push dword [esi - 0xc]
mov ecx, eax
push esi
call fcn.00401e40
cmp dword [ebp - 0x110], 0x10
lea eax, [ebp - 0x124]
push 1
cmovae eax, dword [ebp - 0x124]
push 0x6a0820
push dword [ebp - 0x114]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40a8c0
push ecx
push esi
push edi
lea ecx, [ebp - 0x2a4]
call fcn.00416d40
jmp 0x40a92b
cmp dword [ebp - 0x110], 0x10
lea eax, [ebp - 0x124]
push 1
cmovae eax, dword [ebp - 0x124]
push 0x6a0824
push dword [ebp - 0x114]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40a92b
cmp dword [ebp - 0xf8], 0x10
lea eax, [ebp - 0x10c]
cmovae eax, dword [ebp - 0x10c]
push eax
call fcn.0060c3a5
add esp, 4
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x88]
push 4
push eax
push 4
push 0
push edi
push dword [ebp - 0x2a4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [ebp - 0x84]
mov esi, dword [esi + 0x3c]
test esi, esi
je 0x40a94e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40ab16
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40a938
xor eax, eax
mov dword [ebp - 0x84], eax
test eax, eax
jne 0x40a400
mov eax, dword [ebp - 0x94]
lea ecx, [ebp - 0x94]
mov dword [ebp - 0xa0], 0
mov eax, dword [eax - 0xc]
dec eax
push eax
lea eax, [ebp - 0xa0]
push eax
call fcn.00411ed0
push ecx
mov byte [ebp - 4], 0x2f
lea ecx, [ebp - 0x2a4]
push dword [ebp - 0xa0]
push 0x6a0828
call fcn.00416d40
mov ecx, dword [ebp - 0x7c]
push str.regsubkey
call fcn.0048e280
mov esi, eax
test esi, esi
je 0x40a9d4
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x18]
mov ecx, esi
test eax, eax
jne 0x40ab22
push str.regsubkey
call fcn.0048e280
mov esi, eax
test esi, esi
jne 0x40a9b3
xor esi, esi
mov edi, dword [ebp - 0x98]
lea ecx, [ebp - 0x144]
call fcn.00416d20
mov eax, dword [ebp - 0x2a8]
mov ecx, 0x18
push 0
push 0xe10
mov eax, dword [eax + 0x5c8]
imul ecx
push edx
push eax
call fcn.005c4770
push edx
push eax
lea eax, [ebp - 0x1a0]
push eax
lea ecx, [ebp - 0x144]
call fcn.00416d00
lea ecx, [ebp - 0x90]
mov dword [ebp - 0x90], 0
call fcn.00402270
lea eax, [ebp - 0x1a0]
mov byte [ebp - 4], 0x33
push eax
lea eax, [ebp - 0x190]
push eax
call fcn.00613cf3
add esp, 8
test eax, eax
jne 0x40aabe
mov eax, dword [ebp - 0x17c]
add eax, 0x76c
mov word [ebp - 0xd4], ax
mov eax, dword [ebp - 0x180]
inc eax
mov word [ebp - 0xd2], ax
movzx eax, word [ebp - 0x178]
mov word [ebp - 0xd0], ax
movzx eax, word [ebp - 0x184]
mov word [ebp - 0xce], ax
movzx eax, word [ebp - 0x188]
mov word [ebp - 0xcc], ax
movzx eax, word [ebp - 0x18c]
mov word [ebp - 0xca], ax
movzx eax, word [ebp - 0x190]
mov word [ebp - 0xc8], ax
xor eax, eax
mov word [ebp - 0xc6], ax
mov eax, dword [ebp - 0x2a8]
cmp byte [eax + 0x5c1], 0
jne 0x40aada
cmp byte [eax + 0x5c2], 0
je 0x40b458
push str.desklink
mov ecx, esi
call fcn.0048e280
mov esi, eax
test esi, esi
je 0x40b458
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x18]
mov ecx, esi
test eax, eax
jne 0x40afeb
push str.desklink
call fcn.0048e280
mov esi, eax
test esi, esi
jne 0x40aaf0
jmp 0x40b458
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x40a950
mov eax, dword [esi]
call dword [eax + 0x18]
mov dword [ebp - 0x80], eax
test eax, eax
je 0x40afe3
mov esi, dword [eax + 0x18]
test esi, esi
je 0x40ab56
nop dword [eax]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40acbb
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40ab40
xor eax, eax
mov dword [ebp - 0x84], eax
test eax, eax
je 0x40afe3
mov edi, dword [ebp - 0x98]
nop dword [eax]
mov esi, dword [eax + 0x88]
add eax, 0x40
xor ecx, ecx
cmp esi, eax
cmove esi, ecx
cmp dword [esi + 0x40], 0x10
lea edx, [esi + 0x2c]
jb 0x40ab8b
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ab93
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0x13c]
call fcn.00417150
mov esi, dword [esi + 0x48]
cmp dword [esi + 0x3c], 0
jne 0x40abbb
cmp dword [esi + 0x24], 0
jne 0x40abbb
xor esi, esi
cmp dword [esi + 0x40], 0x10
lea edx, [esi + 0x2c]
jb 0x40abc6
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40abd0
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0xf4]
call fcn.00417150
mov esi, dword [esi + 0x48]
cmp dword [esi + 0x3c], 0
jne 0x40abf8
cmp dword [esi + 0x24], 0
jne 0x40abf8
xor esi, esi
cmp dword [esi + 0x40], 0x10
lea edx, [esi + 0x2c]
jb 0x40ac03
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ac10
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0x10c]
call fcn.00417150
mov edx, dword [esi + 0x48]
cmp dword [edx + 0x3c], 0
jne 0x40ac38
cmp dword [edx + 0x24], 0
jne 0x40ac38
xor edx, edx
add edx, 0x2c
cmp dword [edx + 0x14], 0x10
jb 0x40ac43
mov edx, dword [edx]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ac48
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x124]
call fcn.00417150
lea edx, [ebp - 0x13c]
lea ecx, [ebp - 0x88]
call fcn.0047ffd0
mov byte [ebp - 4], 0x30
lea esi, [edi - 0x10]
mov edx, dword [eax]
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x40acdc
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x40acc7
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40acc7
push ecx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x7c], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x40acb0
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x7c]
lea edi, [eax + 0x10]
mov dword [ebp - 0x98], edi
jmp 0x40acdc
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x40ab58
push dword [edx - 0xc]
lea ecx, [ebp - 0x98]
push edx
call fcn.00401e40
mov edi, dword [ebp - 0x98]
mov byte [ebp - 4], 0x2f
mov eax, ebx
mov edx, dword [ebp - 0x88]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40acfd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebp - 0xf4]
lea ecx, [ebp - 0x2ac]
call fcn.0047ffd0
mov byte [ebp - 4], 0x31
mov edx, dword [eax]
mov esi, dword [ebp - 0x8c]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x40ad6f
cmp dword [esi + 0xc], 0
jl 0x40ad60
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40ad60
push ecx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x7c], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40ad55
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x7c]
add eax, 0x10
mov dword [ebp - 0x8c], eax
jmp 0x40ad6f
push dword [edx - 0xc]
lea ecx, [ebp - 0x8c]
push edx
call fcn.00401e40
mov byte [ebp - 4], 0x2f
mov eax, ebx
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40ad90
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebp - 0x10c]
lea ecx, [ebp - 0x2b8]
call fcn.0047ffd0
mov byte [ebp - 4], 0x32
mov eax, dword [eax]
mov esi, dword [ebp - 0x9c]
mov dword [ebp - 0x2b4], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x7c], ecx
cmp edx, ecx
je 0x40ae20
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40ae0b
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40ae05
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x2b4], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40adfa
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x2b4]
lea esi, [eax + 0x10]
mov dword [ebp - 0x9c], esi
jmp 0x40ae20
mov eax, dword [ebp - 0x2b4]
push dword [eax - 0xc]
lea ecx, [ebp - 0x9c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x9c]
mov byte [ebp - 4], 0x2f
mov eax, ebx
mov edx, dword [ebp - 0x2b8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40ae41
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x110], 0x10
lea eax, [ebp - 0x124]
push 1
cmovae eax, dword [ebp - 0x124]
push 0x6a0820
push dword [ebp - 0x114]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40af1d
mov eax, dword [ebp - 0x2a0]
lea ecx, [ebp - 0x148]
sub esp, 8
mov dword [ebp - 0x148], 0
or eax, 0x2001f
mov dword [ebp - 0x144], 0
mov dword [ebp - 0x140], 0
push eax
sub esp, 8
push edi
push dword [ebp - 0x2a4]
call fcn.00416f80
test eax, eax
jne 0x40aef3
test esi, esi
je 0x40aef3
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40aec2
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push esi
mov esi, dword [ebp - 0x148]
push 1
push 0
push dword [ebp - 0x8c]
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x40aef9
mov esi, dword [ebp - 0x148]
test esi, esi
je 0x40af0e
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x148], 0
mov dword [ebp - 0x144], 0
jmp 0x40afa1
cmp dword [ebp - 0x110], 0x10
lea eax, [ebp - 0x124]
push 1
cmovae eax, dword [ebp - 0x124]
push 0x6a0824
push dword [ebp - 0x114]
push eax
call fcn.00416480
add esp, 0x10
test al, al
je 0x40afa1
cmp dword [ebp - 0xf8], 0x10
lea eax, [ebp - 0x10c]
cmovae eax, dword [ebp - 0x10c]
push eax
call fcn.0060c3a5
push ecx
push 0x2001f
sub esp, 8
lea ecx, [ebp - 0x2a4]
mov esi, eax
push edi
push dword [ebp - 0x2a4]
call fcn.00416f80
push 4
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x7c], esi
push eax
push 4
push 0
push dword [ebp - 0x8c]
push dword [ebp - 0x2a4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [ebp - 0x84]
mov esi, dword [esi + 0x3c]
test esi, esi
je 0x40afc2
nop
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40afda
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40afb0
xor eax, eax
mov dword [ebp - 0x84], eax
test eax, eax
jne 0x40ab70
mov esi, dword [ebp - 0x80]
jmp 0x40a9dc
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x40afc4
mov esi, dword [ebp - 0x80]
jmp 0x40a9d6
mov eax, dword [esi]
call dword [eax + 0x18]
mov dword [ebp - 0x84], eax
test eax, eax
je 0x40b458
push 0x8c
call fcn.005c3873
mov esi, eax
add esp, 4
mov dword [ebp - 0x7c], esi
push 0x8c
push 0
push esi
mov byte [ebp - 4], 0x34
call fcn.005feb40
add esp, 0xc
mov ecx, esi
push dword [ebp - 0x84]
call fcn.0048e430
mov byte [ebp - 4], 0x33
mov ecx, dword [0x6d9208]
push eax
call fcn.0048e140
mov eax, dword [ebp - 0x84]
mov esi, dword [eax + 0x18]
test esi, esi
je 0x40b066
nop
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40b149
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40b050
xor eax, eax
mov dword [ebp - 0x84], eax
test eax, eax
je 0x40b458
lea esi, [eax + 0x40]
xor ecx, ecx
mov eax, dword [esi + 0x48]
cmp eax, esi
cmove eax, ecx
cmp dword [eax + 0x40], 0x10
lea edx, [eax + 0x2c]
jb 0x40b08e
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40b096
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0x13c]
call fcn.00417150
mov eax, dword [esi + 0x48]
xor ecx, ecx
cmp eax, esi
cmove eax, ecx
mov edx, dword [eax + 0x48]
cmp dword [edx + 0x3c], ecx
jne 0x40b0c6
cmp dword [edx + 0x24], ecx
jne 0x40b0c6
xor edx, edx
add edx, 0x2c
cmp dword [edx + 0x14], 0x10
jb 0x40b0d1
mov edx, dword [edx]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40b0d6
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0xf4]
call fcn.00417150
lea edx, [ebp - 0x13c]
lea ecx, [ebp - 0x88]
call fcn.0047ffd0
mov byte [ebp - 4], 0x35
lea esi, [edi - 0x10]
mov edx, dword [eax]
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x40b16a
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x40b155
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40b155
push ecx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x7c], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x40b13e
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x7c]
lea edi, [eax + 0x10]
mov dword [ebp - 0x98], edi
jmp 0x40b16a
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x40b068
push dword [edx - 0xc]
lea ecx, [ebp - 0x98]
push edx
call fcn.00401e40
mov edi, dword [ebp - 0x98]
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x88]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b18b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebp - 0xf4]
lea ecx, [ebp - 0x2b8]
call fcn.0047ffd0
push eax
lea edx, [ebp - 0x94]
mov byte [ebp - 4], 0x36
lea ecx, [ebp - 0x2b4]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x37
mov eax, dword [eax]
mov esi, dword [ebp - 0x8c]
mov dword [ebp - 0x2ac], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x7c], ecx
cmp edx, ecx
je 0x40b234
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40b21f
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40b219
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x2ac], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40b20e
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x2ac]
lea esi, [eax + 0x10]
mov dword [ebp - 0x8c], esi
jmp 0x40b234
mov eax, dword [ebp - 0x2ac]
push dword [eax - 0xc]
lea ecx, [ebp - 0x8c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x8c]
mov byte [ebp - 4], 0x36
mov eax, ebx
mov edx, dword [ebp - 0x2b4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b255
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x2b8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b276
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2a8]
cmp byte [eax + 0x5c1], 0
je 0x40b360
push 0
sub esp, 8
push dword [ebp - 0x94]
push ecx
push esi
push edi
lea ecx, [ebp - 0xc0]
call fcn.00495b60
mov eax, dword [ebp - 0xc0]
add eax, 0xfffffff0
mov dword [ebp - 0x80], 0
push eax
call fcn.00401b80
or dword [ebp - 0xac], 4
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x7c], esi
lea eax, [ebp - 0x98]
mov byte [ebp - 4], 0x38
push eax
lea edx, [ebp - 0x7c]
lea ecx, [ebp - 0x80]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x3a
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40b2fc
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 4
push 0x6a0860
lea ecx, [ebp - 0x80]
call fcn.00417970
call fcn.00484a70
test eax, eax
je 0x40b31c
mov ecx, dword [ebp - 0x80]
call fcn.004848c0
mov eax, dword [ebp - 0x2a8]
cmp dword [eax + 0x5c8], 0
jle 0x40b339
mov edx, dword [ebp - 0x80]
lea ecx, [ebp - 0xd4]
call fcn.00484dc0
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x80]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b425
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40b425
push dword [ebp - 0x94]
sub esp, 8
push 0
push ecx
push esi
push edi
lea ecx, [ebp - 0xc0]
call fcn.00495b60
push 0x8c
call fcn.005c3873
mov esi, eax
add esp, 4
mov dword [ebp - 0x140], esi
push 0x8c
push 0
push esi
mov byte [ebp - 4], 0x3b
call fcn.005feb40
add esp, 0xc
mov ecx, esi
push str.File
call fcn.0048e2e0
mov esi, eax
mov byte [ebp - 4], 0x33
mov ecx, dword [0x6d9204]
push esi
call fcn.0048e140
mov edx, edi
lea ecx, [ebp - 0x184]
call fcn.004800f0
push str..lnk
push eax
lea eax, [ebp - 0x16c]
mov byte [ebp - 4], 0x3c
push eax
call fcn.00413b30
add esp, 0xc
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x3e
call fcn.00417a20
cmp dword [ebp - 0x158], 0x10
lea eax, [ebp - 0x16c]
mov ecx, esi
cmovae eax, dword [ebp - 0x16c]
push eax
push 0x6a07a0
call fcn.0048e5f0
lea ecx, [ebp - 0x16c]
mov byte [ebp - 4], 0x33
call fcn.00417a20
mov esi, dword [ebp - 0x84]
mov esi, dword [esi + 0x3c]
test esi, esi
je 0x40b448
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40b506
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40b432
xor eax, eax
mov dword [ebp - 0x84], eax
test eax, eax
jne 0x40b076
mov esi, dword [ebp - 0x2a8]
cmp byte [esi + 0x5c2], 0
je 0x40b4a1
mov ecx, dword [ebp - 0x2b0]
push str.desklink
call fcn.0048e220
mov esi, eax
test esi, esi
je 0x40b4a1
nop dword [eax]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x18]
mov ecx, esi
test eax, eax
jne 0x40b512
push str.desklink
call fcn.0048e280
mov esi, eax
test esi, esi
jne 0x40b480
mov esi, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x2a8]
cmp byte [eax + 0x5cf], 0
je 0x40bbfb
mov ecx, dword [ebp - 0x2b0]
push str.programlink
call fcn.0048e220
mov dword [ebp - 0x2b0], eax
test eax, eax
je 0x40bbfb
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x18]
mov ecx, dword [ebp - 0x2b0]
test eax, eax
jne 0x40b819
push str.programlink
call fcn.0048e280
mov dword [ebp - 0x2b0], eax
test eax, eax
jne 0x40b4d8
jmp 0x40bbfb
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
jmp 0x40b44a
mov eax, dword [esi]
call dword [eax + 0x18]
test eax, eax
je 0x40b4a1
mov esi, dword [eax + 0x18]
test esi, esi
je 0x40b4a1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40b53d
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40b526
jmp 0x40b4a1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
je 0x40b4a1
lea esi, [eax + 0x40]
xor ecx, ecx
mov eax, dword [esi + 0x48]
cmp eax, esi
cmove eax, ecx
cmp dword [eax + 0x40], 0x10
lea edx, [eax + 0x2c]
jb 0x40b564
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40b570
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0x13c]
call fcn.00417150
mov eax, dword [esi + 0x48]
xor ecx, ecx
cmp eax, esi
cmove eax, ecx
mov edx, dword [eax + 0x48]
cmp dword [edx + 0x3c], ecx
jne 0x40b5a0
cmp dword [edx + 0x24], ecx
jne 0x40b5a0
xor edx, edx
add edx, 0x2c
cmp dword [edx + 0x14], 0x10
jb 0x40b5ab
mov edx, dword [edx]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40b5b0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0xf4]
call fcn.00417150
lea edx, [ebp - 0x13c]
lea ecx, [ebp - 0x88]
call fcn.0047ffd0
mov byte [ebp - 4], 0x3f
lea esi, [edi - 0x10]
mov edx, dword [eax]
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x40b638
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x40b623
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40b623
push ecx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x7c], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x40b618
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x7c]
lea edi, [eax + 0x10]
mov dword [ebp - 0x98], edi
jmp 0x40b638
push dword [edx - 0xc]
lea ecx, [ebp - 0x98]
push edx
call fcn.00401e40
mov edi, dword [ebp - 0x98]
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x88]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b659
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebp - 0xf4]
lea ecx, [ebp - 0x2b4]
call fcn.0047ffd0
push eax
lea edx, [ebp - 0x94]
mov byte [ebp - 4], 0x40
lea ecx, [ebp - 0x2ac]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x41
mov eax, dword [eax]
mov esi, dword [ebp - 0x8c]
mov dword [ebp - 0x88], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x7c], ecx
cmp edx, ecx
je 0x40b702
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40b6ed
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40b6e7
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x88], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40b6dc
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x88]
lea esi, [eax + 0x10]
mov dword [ebp - 0x8c], esi
jmp 0x40b702
mov eax, dword [ebp - 0x88]
push dword [eax - 0xc]
lea ecx, [ebp - 0x8c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x8c]
mov byte [ebp - 4], 0x40
mov eax, ebx
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b723
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x2b4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b744
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2a8]
lea ecx, [ebp - 0xc0]
cmp byte [eax + 0x5c1], 0
je 0x40b75d
push 0
jmp 0x40b763
push dword [ebp - 0x94]
sub esp, 0x10
push esi
push edi
call fcn.00495e40
mov eax, dword [ebp - 0x2a8]
cmp dword [eax + 0x5c8], 0
jle 0x40b4ad
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x84], 0
push eax
call fcn.00495d10
lea ecx, [ebp - 0x98]
mov byte [ebp - 4], 0x42
push ecx
mov edx, eax
lea ecx, [ebp - 0x84]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x44
mov eax, ebx
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b7cc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 4
push 0x6a0860
lea ecx, [ebp - 0x84]
call fcn.00417970
mov edx, dword [ebp - 0x84]
lea ecx, [ebp - 0xd4]
call fcn.00484dc0
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x84]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b4a7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40b4a7
mov eax, dword [ecx]
call dword [eax + 0x18]
mov dword [ebp - 0x2b0], eax
test eax, eax
je 0x40bbfb
push 0x8c
call fcn.005c3873
mov ebx, eax
add esp, 4
mov dword [ebp - 0x140], ebx
push 0x8c
push 0
push ebx
mov byte [ebp - 4], 0x45
call fcn.005feb40
add esp, 0xc
mov ecx, ebx
push dword [ebp - 0x2b0]
call fcn.0048e430
mov byte [ebp - 4], 0x33
mov ecx, dword [0x6d9208]
push eax
call fcn.0048e140
mov eax, dword [ebp - 0x2b0]
mov ebx, dword [eax + 0x18]
test ebx, ebx
je 0x40b896
nop
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x18]
test eax, eax
jne 0x40b9ad
mov ebx, dword [ebx + 0x3c]
test ebx, ebx
jne 0x40b880
xor ecx, ecx
mov dword [ebp - 0x80], ecx
test ecx, ecx
je 0x40bbf8
mov eax, dword [ebp - 0xbc]
add eax, 0xfffffff0
or ebx, 0xffffffff
mov dword [ebp - 0x2b0], eax
mov eax, dword [ecx + 0x88]
add ecx, 0x40
xor edx, edx
cmp eax, ecx
cmove eax, edx
cmp dword [eax + 0x40], 0x10
lea edx, [eax + 0x2c]
jb 0x40b8d0
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40b8d8
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0x13c]
call fcn.00417150
mov ecx, dword [ebp - 0x80]
xor edx, edx
add ecx, 0x40
mov eax, dword [ecx + 0x48]
cmp eax, ecx
cmove eax, edx
mov edx, dword [eax + 0x48]
cmp dword [edx + 0x3c], 0
jne 0x40b910
cmp dword [edx + 0x24], 0
jne 0x40b910
xor edx, edx
add edx, 0x2c
cmp dword [edx + 0x14], 0x10
jb 0x40b91b
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x7c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40b923
sub ecx, dword [ebp - 0x7c]
push ecx
push edx
lea ecx, [ebp - 0xf4]
call fcn.00417150
lea edx, [ebp - 0x13c]
lea ecx, [ebp - 0x2ac]
call fcn.0047ffd0
mov byte [ebp - 4], 0x46
lea ecx, [edi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x7c], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x40b9d9
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
jl 0x40b9c4
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40b9be
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x88], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x40b9a2
mov edi, dword [ebp - 0x7c]
push edi
mov ecx, dword [edi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x88]
lea edi, [eax + 0x10]
mov dword [ebp - 0x98], edi
jmp 0x40b9d9
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x18]
mov ecx, eax
mov dword [ebp - 0x80], eax
jmp 0x40b89b
mov eax, dword [ebp - 0x88]
push dword [eax - 0xc]
lea ecx, [ebp - 0x98]
push eax
call fcn.00401e40
mov edi, dword [ebp - 0x98]
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40b9fa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebp - 0xf4]
lea ecx, [ebp - 0x2b8]
call fcn.0047ffd0
push eax
lea edx, [ebp - 0x94]
mov byte [ebp - 4], 0x47
lea ecx, [ebp - 0x2b4]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x48
lea ecx, [esi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x7c], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x40ba9d
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40ba88
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40ba82
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x88], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40ba77
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x88]
lea esi, [eax + 0x10]
mov dword [ebp - 0x8c], esi
jmp 0x40ba9d
mov eax, dword [ebp - 0x88]
push dword [eax - 0xc]
lea ecx, [ebp - 0x8c]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x8c]
mov byte [ebp - 4], 0x47
mov eax, ebx
mov edx, dword [ebp - 0x2b4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40babe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x2b8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40badf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
push edi
lea ecx, [ebp - 0xc0]
call fcn.00496740
mov eax, dword [ebp - 0x80]
mov esi, dword [eax + 0x3c]
test esi, esi
je 0x40bb0c
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
test eax, eax
jne 0x40bbe9
mov esi, dword [esi + 0x3c]
test esi, esi
jne 0x40baf6
mov dword [ebp - 0x80], 0
push dword [ebp - 0x2b0]
mov dword [ebp - 0x84], 0
call fcn.00401b80
or dword [ebp - 0xac], 8
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x7c], esi
lea eax, [ebp - 0x98]
mov byte [ebp - 4], 0x49
push eax
lea edx, [ebp - 0x7c]
lea ecx, [ebp - 0x84]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x4b
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40bb6f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 4
push 0x6a0860
lea ecx, [ebp - 0x84]
call fcn.00417970
call fcn.00484a70
test eax, eax
je 0x40bb95
mov ecx, dword [ebp - 0x84]
call fcn.004848c0
mov eax, dword [ebp - 0x2a8]
cmp dword [eax + 0x5c8], 0
jle 0x40bbb5
mov edx, dword [ebp - 0x84]
lea ecx, [ebp - 0xd4]
call fcn.00484dc0
mov byte [ebp - 4], 0x33
mov eax, ebx
mov edx, dword [ebp - 0x84]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bbd6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x80]
mov esi, dword [ebp - 0x8c]
test ecx, ecx
jne 0x40b8b5
jmp 0x40bbfb
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov dword [ebp - 0x80], eax
jmp 0x40bb13
or ebx, 0xffffffff
lea ecx, [ebp - 0x2a4]
call fcn.00417060
mov byte [ebp - 4], 0x2f
mov eax, ebx
mov edx, dword [ebp - 0x90]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bc27
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0xa0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40a31b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40a31b
mov eax, dword [ebp - 0x88]
push dword [eax - 0xc]
lea ecx, [ebp - 0xb4]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0xb4]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bc8d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, esi
lea ecx, [ebp - 0x184]
call fcn.004801f0
mov byte [ebp - 4], 0x4d
cmp dword [eax + 0x14], 0x10
jb 0x40bca6
mov eax, dword [eax]
push ecx
push eax
call fcn.0048ed30
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x20
call fcn.00417a20
mov esi, dword [ebp - 0x2a8]
sub esp, 8
mov ecx, esi
call fcn.0040dcf0
cmp byte [esi + 0x5c6], 0
je 0x40beaa
push str.GSoInputUpdateSvr.exe
lea ecx, [ebp - 0x320]
mov dword [ebp - 0x84], 0
call fcn.00413b80
lea ecx, [ebp - 0x184]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov esi, eax
mov ecx, dword [ebp - 0x2a8]
mov edx, dword [ebp - 0x2bc]
add ecx, 0x600
push ecx
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0x4e
call fcn.00411e10
add esp, 4
push 0x6a2f8c
mov edx, eax
mov byte [ebp - 4], 0x4f
lea ecx, [ebp - 0x7c]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 0x50
cmp dword [esi + 0x14], 8
jb 0x40bd49
mov esi, dword [esi]
push esi
mov edx, eax
lea ecx, [ebp - 0x84]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 0x52
mov eax, ebx
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bd78
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x53
mov eax, ebx
mov edx, dword [ebp - 0x88]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bd99
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x54
call fcn.00402f20
push dword [ebp - 0x84]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40be83
push 0x6a08a0
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x80], 0
call fcn.004178d0
mov byte [ebp - 4], 0x55
lea ecx, [ebp - 0x80]
mov eax, dword [ebp - 0x84]
push dword [eax - 0xc]
push eax
call fcn.00417970
push 4
push 0x6a08a4
lea ecx, [ebp - 0x80]
call fcn.00417970
mov ecx, dword [ebp - 0x80]
mov edx, 0x7530
push 0
call fcn.00480d60
add esp, 4
lea ecx, [ebp - 0x70]
push str.GSoInputUpdateSvr
call fcn.004133d0
lea ecx, [ebp - 0x16c]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov byte [ebp - 4], 0x56
cmp dword [eax + 0x14], 8
jb 0x40be2d
mov eax, dword [eax]
mov ecx, eax
call fcn.00480e80
lea ecx, [ebp - 0x16c]
mov byte [ebp - 4], 0x55
mov esi, eax
call fcn.00402f20
test esi, esi
jne 0x40be65
mov ecx, dword [ebp - 0x84]
call fcn.00481760
mov ecx, dword [ebp - 0x80]
mov edx, 0x7530
push esi
call fcn.00480d60
add esp, 4
mov byte [ebp - 4], 0x54
mov eax, ebx
mov edx, dword [ebp - 0x80]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40be83
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0x84]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bea4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x2a8]
cmp byte [esi + 0x5cc], 0
je 0x40bebf
mov ecx, esi
call fcn.0040e9b0
jmp 0x40bffd
push ecx
lea ecx, [ebp - 0x54]
mov dword [ebp - 0xac], 0
call fcn.00413bf0
lea ecx, [ebp - 0x184]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov byte [ebp - 4], 0x57
cmp dword [eax + 0x14], 0x10
jb 0x40beeb
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x2ac]
call fcn.00412270
mov esi, eax
mov ecx, dword [ebp - 0x2a8]
mov edx, dword [ebp - 0x2bc]
add ecx, 0x600
push ecx
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0x58
call fcn.00411e10
add esp, 4
push 0x6a2f8c
mov edx, eax
mov byte [ebp - 4], 0x59
lea ecx, [ebp - 0x7c]
call fcn.00411d40
add esp, 4
push esi
mov edx, eax
mov byte [ebp - 4], 0x5a
lea ecx, [ebp - 0xac]
call fcn.00411e10
add esp, 4
mov byte [ebp - 4], 0x5c
mov eax, ebx
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bf67
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x5d
mov eax, ebx
mov edx, dword [ebp - 0x88]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bf88
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x5e
mov eax, ebx
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bfa9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x5f
call fcn.00417a20
push 4
push str..xml
lea ecx, [ebp - 0xac]
call fcn.00417970
push dword [ebp - 0xac]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0xac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40bff7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x2a8]
mov ecx, esi
mov dword [0x6d920c], 0x42c80000
call fcn.0040dff0
cmp dword [esi + 0x5d8], 0
jne 0x40c027
mov ecx, dword [esi + 0x5a0]
push 0x6a0910
mov eax, dword [ecx]
call dword [eax + 0x3c]
push 0x6a08a0
lea ecx, [ebp - 0xa4]
mov dword [ebp - 0xa4], 0
call fcn.004178d0
mov byte [ebp - 4], 0x60
lea ecx, [ebp - 0xa4]
mov eax, dword [esi + 0x5b0]
push dword [eax - 0xc]
push eax
call fcn.00417970
mov eax, dword [esi + 0x600]
lea ecx, [ebp - 0xa4]
push dword [eax - 0xc]
push eax
call fcn.00417970
push 1
push 0x6a2f8c
lea ecx, [ebp - 0xa4]
call fcn.00417970
push str.GSoInputDeployer.exe
lea ecx, [ebp - 0x78]
call fcn.00413a80
lea ecx, [ebp - 0x184]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov edx, eax
mov byte [ebp - 4], 0x61
cmp dword [edx + 0x14], 8
jb 0x40c0a9
mov edx, dword [edx]
test edx, edx
jne 0x40c0b1
xor ecx, ecx
jmp 0x40c0cb
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40c0b6
sub ecx, esi
mov esi, dword [ebp - 0x2a8]
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xa4]
call fcn.00417970
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x60
call fcn.00402f20
push str.___deploy
lea edx, [ebp - 0xa4]
lea ecx, [ebp - 0x7c]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 0x62
mov edx, ebx
mov ecx, dword [eax]
push 0
call fcn.00480d60
mov byte [ebp - 4], 0x60
add esp, 4
mov edx, dword [ebp - 0x7c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c12d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.___regskinfile
lea edx, [ebp - 0xa4]
lea ecx, [ebp - 0x7c]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 0x63
mov edx, ebx
mov ecx, dword [eax]
push 0
call fcn.00480d60
mov byte [ebp - 4], 0x60
add esp, 4
mov edx, dword [ebp - 0x7c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c173
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.___rebuildskinlistfile
lea edx, [ebp - 0xa4]
lea ecx, [ebp - 0x7c]
call fcn.00411d40
add esp, 4
mov byte [ebp - 4], 0x64
mov edx, ebx
mov ecx, dword [eax]
push 0
call fcn.00480d60
mov byte [ebp - 4], 0x60
add esp, 4
mov edx, dword [ebp - 0x7c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c1b9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 1
push 0x6a08a0
lea ecx, [ebp - 0xa4]
call fcn.00401e40
mov eax, dword [esi + 0x5b0]
lea ecx, [ebp - 0xa4]
push dword [eax - 0xc]
push eax
call fcn.00417970
mov eax, dword [esi + 0x600]
lea ecx, [ebp - 0xa4]
push dword [eax - 0xc]
push eax
call fcn.00417970
push 1
push 0x6a2f8c
lea ecx, [ebp - 0xa4]
call fcn.00417970
push str.GSoInputSetup.exe
lea ecx, [ebp - 0x70]
call fcn.004133d0
lea ecx, [ebp - 0x184]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx]
mov edx, eax
mov byte [ebp - 4], 0x65
cmp dword [edx + 0x14], 8
jb 0x40c22f
mov edx, dword [edx]
test edx, edx
jne 0x40c237
xor ecx, ecx
jmp 0x40c255
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40c240
sub ecx, esi
mov esi, dword [ebp - 0x2a8]
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xa4]
call fcn.00417970
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x60
call fcn.00402f20
push 4
push str.___i
lea ecx, [ebp - 0xa4]
call fcn.00417970
mov ecx, dword [ebp - 0xa4]
mov edx, ebx
push 1
call fcn.00480d60
add esp, 4
mov ecx, esi
call fcn.00408b50
mov ecx, esi
call fcn.004083b0
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x80], 0
call fcn.00402270
mov byte [ebp - 4], 0x66
mov eax, dword [esi + 0x5b0]
mov esi, dword [ebp - 0x80]
mov dword [ebp - 0x88], eax
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x7c], ecx
cmp edx, ecx
je 0x40c329
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40c31a
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40c314
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x88], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40c30c
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x88]
lea esi, [eax + 0x10]
mov dword [ebp - 0x80], esi
jmp 0x40c329
mov eax, dword [ebp - 0x88]
push dword [eax - 0xc]
lea ecx, [ebp - 0x80]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x80]
mov eax, dword [esi - 0xc]
lea ecx, [ebp - 0x80]
dec eax
push eax
lea eax, [ebp - 0x7c]
push eax
call fcn.00411ed0
mov byte [ebp - 4], 0x67
mov ecx, dword [eax]
call fcn.004848c0
mov byte [ebp - 4], 0x66
mov eax, ebx
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c363
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2a8]
cmp dword [eax + 0x610], 0
je 0x40c452
lea ecx, [ebp - 0x2ac]
call fcn.00482f40
mov byte [ebp - 4], 0x68
lea ecx, [esi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x7c], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x40c3f1
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x40c3e2
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x40c3dc
push edx
call fcn.00401b80
add esp, 4
mov dword [ebp - 0x88], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x40c3d4
mov esi, dword [ebp - 0x7c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x88]
lea esi, [eax + 0x10]
mov dword [ebp - 0x80], esi
jmp 0x40c3f1
mov eax, dword [ebp - 0x88]
push dword [eax - 0xc]
lea ecx, [ebp - 0x80]
push eax
call fcn.00401e40
mov esi, dword [ebp - 0x80]
mov byte [ebp - 4], 0x66
mov eax, ebx
mov edx, dword [ebp - 0x2ac]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c412
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esi - 0xc]
lea ecx, [ebp - 0x80]
dec eax
push eax
lea eax, [ebp - 0x7c]
push eax
call fcn.00411ed0
mov byte [ebp - 4], 0x69
mov ecx, dword [eax]
call fcn.004848c0
mov byte [ebp - 4], 0x66
mov eax, ebx
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c44c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2a8]
mov byte [eax + 0x5d0], 0
add esi, 0xfffffff0
mov byte [ebp - 4], 0x60
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40c474
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x20
mov eax, ebx
mov edx, dword [ebp - 0xa4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c495
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x298]
call fcn.00416d90
mov byte [ebp - 4], 0x1b
mov eax, ebx
mov edx, dword [ebp - 0x9c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c4c1
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 - 0x8c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c4e2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x19
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x40c4fd
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x124]
call fcn.00417a20
lea ecx, [ebp - 0x10c]
call fcn.00417a20
lea ecx, [ebp - 0xf4]
call fcn.00417a20
lea ecx, [ebp - 0x13c]
call fcn.00417a20
lea ecx, [ebp - 0x210]
call fcn.00417620
mov eax, dword [ebp - 0x2a4]
test eax, eax
je 0x40c545
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [ebp - 4], 0xf
call dword [sym.imp.ole32.dll_CoUninitialize]
mov edx, dword [ebp - 0xb8]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c56c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xbc]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c589
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xc0]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c5a6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xc
mov eax, ebx
mov edx, dword [ebp - 0xc4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c5c7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, ebx
mov edx, dword [ebp - 0xa8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c5e8
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 - 0xb0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c609
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, ebx
mov edx, dword [ebp - 0x94]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40c62a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0xb4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x40c64c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.005c358e
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00401f90
push 0x80004005
call fcn.00401f90
push 0x80004005
call fcn.00401f90
push 0x80004005
call fcn.00401f90
call fcn.00606fc9
call fcn.00606fc9
call fcn.00606fc9
int3