Function at 0x41fec0
Capabilities:
Check if file exists
Check os version
Create process on windows
Delete registry value
Get file attributes
Persist via windows service
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
lea ebp, [esp - 0x13c0]
mov eax, 0x13c0
call fcn.00614970
push 0xffffffffffffffff
push 0x6374e4
mov eax, dword fs:[0]
push eax
sub esp, 0xfc
mov eax, dword [0x7496c8]
xor eax, ebp
mov dword [ebp + 0x13bc], 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 - 0x14], ebx
xor edi, edi
mov dword [ebp - 4], edi
call fcn.0044ac80
call fcn.00448270
mov ecx, ebx
call fcn.00418b40
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x44], edi
push 0x74e848
call fcn.00415ff0
mov eax, dword [0x74e848]
push eax
push 0x66ae98
push 0x74e84c
call fcn.00402f80
add esp, 0x10
mov dword [ebp - 0xc8], 0x400
lea ecx, [ebp - 0xc8]
push ecx
lea edx, [ebp + 0xf7c]
push edx
push edi
push edi
push str.szCustomUserAgent
mov eax, dword [0x74ea0c]
push eax
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call esi
test eax, eax
jne 0x41ff96
lea ecx, [ebp + 0xf7c]
push ecx
push 0x66ae98
push 0x74e848
call fcn.00402f80
add esp, 0xc
mov ecx, ebx
call fcn.0041cc00
mov ecx, ebx
call fcn.004101c0
cmp dword [0x74e9fc], edi
jne 0x420068
mov dword [ebp - 0x30], 0x40
lea edx, [ebp - 0x30]
push edx
lea eax, [ebp + 0x137c]
push eax
push 0
push 0
push str.idmvers
mov ecx, dword [0x74ea0c]
push ecx
call esi
test eax, eax
jne 0x42005e
mov edx, dword [0x74ebc4]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41ffe7
sub eax, esi
push eax
push edx
lea edx, [ebp + 0x137c]
push edx
call fcn.0061499b
add esp, 0xc
test eax, eax
je 0x42001e
mov eax, dword [ebx + 0x48]
cmp byte [eax + 0x4f], 0
jne 0x42001e
cmp byte [eax + 0x51], 0
jne 0x42001e
mov dword [0x74e9fc], 1
push 8
push str.v6.35b09
lea eax, [ebp + 0x137c]
push eax
call fcn.00617c6f
add esp, 0xc
test eax, eax
je 0x420052
push 8
push str.v6.35b10
lea ecx, [ebp + 0x137c]
push ecx
call fcn.00617c6f
add esp, 0xc
test eax, eax
jne 0x420068
mov dword [0x74ea00], 1
jmp 0x420068
mov dword [0x74e9fc], 1
cmp dword [0x74e9e8], edi
je 0x420091
mov eax, dword [ebx + 0x48]
cmp byte [eax + 0x4f], 0
jne 0x420087
cmp byte [eax + 0x51], 0
jne 0x420087
cmp dword [0x74e9fc], edi
je 0x420091
call fcn.00414a10
call fcn.00410350
mov eax, dword [ebx + 0x48]
cmp byte [eax + 0x4f], 0
jne 0x4200a8
cmp byte [eax + 0x51], 0
jne 0x4200a8
cmp dword [0x74e9fc], edi
je 0x4200b9
push 1
call fcn.00467810
push 0
call fcn.0046e300
add esp, 8
call fcn.0041b870
xor esi, esi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x6c], esi
xor ebx, ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x34], esi
mov dword [ebp + 0xeb8], 0x94
lea edx, [ebp + 0xeb8]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x420120
cmp dword [ebp + 0xec8], 2
jne 0x420120
mov esi, 1
mov dword [ebp - 0x34], esi
cmp dword [ebp + 0xebc], 6
jb 0x420120
mov dword [ebp - 0x28], esi
push 0x80000001
call fcn.00412a20
push 0x80000002
call fcn.00412a20
add esp, 8
mov dword [ebp - 0x40], 4
test esi, esi
je 0x42026d
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x50]
push ecx
push 0
push 0
push str.EnableDriver
mov edx, dword [0x74ea0c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x42015a
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x14]
mov dword [ecx + 0x1c], eax
mov esi, 1
mov dword [ebp - 0xb4], esi
lea edx, [ebp - 0x1c]
push edx
push 0x20019
push 0
push 0x66ae08
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4201c3
mov dword [ebp - 0x40], 4
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x50]
push ecx
push 0
push 0
push str.AdvIntDriverEnabled2
mov edx, dword [ebp - 0x1c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4201b9
mov esi, dword [ebp - 0x50]
mov dword [ebp - 0xb4], esi
mov eax, dword [ebp - 0x14]
mov dword [eax + 0x1c], esi
mov ecx, dword [ebp - 0x1c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [ebp - 0x14]
cmp dword [edx + 0x1c], ebx
jne 0x420222
mov dword [ebp - 0x40], 4
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x50]
push ecx
push 0
push 0
push str.bVistaAdvInt
mov edx, dword [0x74ea0c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [ebp - 0x14]
test eax, eax
je 0x42021f
mov eax, 1
mov dword [ecx + 0x1c], eax
mov dword [ebp - 0x4c], eax
push 4
lea edx, [ebp - 0x4c]
push edx
push 4
push 0
push str.bVistaAdvInt
mov eax, dword [0x74ea0c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
jmp 0x420222
mov dword [ecx + 0x1c], esi
mov edx, dword [ebp - 0x14]
cmp dword [edx + 0x1c], ebx
je 0x42026d
lea eax, [ebp - 0x30]
push eax
mov ecx, edx
call fcn.00410520
mov edi, eax
neg edi
sbb edi, edi
inc edi
mov dword [ebp - 0x38], edi
xor ebx, ebx
cmp dword [ebp - 0x30], ebx
sete bl
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x58], 1
push 4
lea ecx, [ebp - 0x58]
push ecx
push 4
push 0
push str.EnableDriver
mov edx, dword [0x74ea0c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, dword [ebp - 0x14]
mov eax, dword [esi + 0x48]
cmp byte [eax + 0x4f], 0
jne 0x42028c
cmp byte [eax + 0x51], 0
jne 0x42029b
cmp dword [0x74e9fc], 0
je 0x42031d
cmp byte [eax + 0x51], 0
jne 0x42029b
cmp dword [0x74e9fc], 0
je 0x4202d5
lea ecx, [ebp - 0x18]
call fcn.004f81e0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x18]
call fcn.004f8240
test eax, eax
je 0x4202c9
lea ecx, [ebp - 0x18]
call fcn.004f8200
test eax, eax
jne 0x4202c9
push 1
lea ecx, [ebp - 0x18]
call fcn.004f8810
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.004f81f0
mov dword [ebp - 0x2c], 4
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1c]
push ecx
push 0
push 0
push str.DebugFlags
mov edx, dword [0x74ea0c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x42031d
mov dword [ebp - 0x1c], eax
push 4
lea eax, [ebp - 0x1c]
push eax
push 4
push 0
push str.DebugFlags
mov ecx, dword [0x74ea0c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test ebx, ebx
je 0x420548
mov dword [ebp - 0x24], 1
lea ecx, [ebp - 0x18]
call fcn.004f81e0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x18]
call fcn.004f8240
test eax, eax
jne 0x4204b8
xor edi, edi
cmp dword [0x74e9f4], edi
jne 0x42036b
push edi
lea ecx, [ebp - 0x18]
call fcn.004f8810
lea ecx, [ebp - 0x18]
call fcn.004f8380
lea ecx, [ebp - 0x18]
call fcn.004f8330
mov dword [ebp - 0x20], edi
mov dword [ebp + 0xf4c], edi
mov dword [ebp + 0xf54], edi
xor edx, edx
mov word [ebp + 0xf50], dx
mov byte [ebp - 4], 3
mov ecx, esi
call fcn.0041ecd0
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp + 0xf4c]
push ecx
mov ecx, esi
call fcn.004139c0
test eax, eax
je 0x42044b
mov ebx, dword [ebp - 0x20]
cmp ebx, 1
je 0x42044b
xor esi, esi
mov dword [ebp - 0xc0], esi
mov edx, dword [ebp - 0x14]
cmp esi, dword [edx + 0x28]
jge 0x42044b
mov edi, edx
add edi, 0x20
push esi
mov ecx, edi
call fcn.00426070
mov eax, dword [eax]
cmp ebx, dword [eax + 8]
jne 0x4204b2
xor ebx, ebx
mov dword [ebp - 0xb8], ebx
push esi
mov ecx, edi
call fcn.00426070
mov eax, dword [eax]
add eax, 0x14
cmp ebx, dword [eax + 8]
jge 0x42044b
mov eax, dword [ebp + 0xf4c]
test eax, eax
je 0x420409
mov dword [ebp - 0x1c], eax
jmp 0x420412
lea ecx, [ebp + 0xf50]
mov dword [ebp - 0x1c], ecx
push esi
mov ecx, edi
call fcn.00426070
push ebx
mov ecx, dword [eax]
add ecx, 0x14
call fcn.0040d190
mov eax, dword [eax]
mov edx, dword [ebp - 0x1c]
push edx
push eax
call fcn.0061874a
add esp, 8
test eax, eax
jne 0x4204ac
push esi
mov ecx, edi
call fcn.00426070
push ebx
mov ecx, dword [eax]
add ecx, 0x14
call fcn.0040d190
xor eax, eax
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x34], eax
jne 0x42047e
mov ecx, dword [ebp - 0x14]
mov dword [ecx + 0x1c], eax
mov dword [ebp - 0xbc], eax
push 4
lea edx, [ebp - 0xbc]
push edx
push 4
push eax
push str.AdvancedIntegration
mov eax, dword [0x74ea0c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push 1
mov ecx, dword [ebp - 0x14]
call fcn.0041f7d0
mov dword [0x74e844], 1
mov byte [ebp - 4], 2
lea ecx, [ebp + 0xf4c]
call fcn.004011f0
mov edi, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x70]
jmp 0x420539
inc ebx
jmp 0x4203e2
inc esi
jmp 0x4203b6
cmp dword [ebp - 0x28], 0
je 0x42053c
call fcn.0050e6e0
mov esi, eax
test esi, esi
je 0x420539
mov dword [ebp - 0xc4], 4
lea ecx, [ebp - 0xc4]
push ecx
lea edx, [ebp - 0x5c]
push edx
push 0
push 0
push str.StEnableBFEMsg
mov eax, dword [0x74ea0c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x42052f
mov dword [ebp - 0x3c], 1
push 4
lea ecx, [ebp - 0x3c]
push ecx
push 4
push 0
push str.StEnableBFEMsg
mov edx, dword [0x74ea0c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push 0
push 0
push 0
push 0
push esi
push 0x411600
call fcn.005f2e1d
jmp 0x420539
xor ebx, ebx
mov dword [ebp - 0x70], ebx
xor edi, edi
mov dword [ebp - 0x38], edi
mov esi, dword [ebp - 0x14]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.004f81f0
cmp dword [esi + 0x1c], 0
je 0x420908
test ebx, ebx
je 0x4208e8
xor esi, esi
mov dword [ebp - 0x54], esi
cmp dword [ebp - 0x34], esi
je 0x4208b2
push esi
mov ebx, dword [ebp - 0x14]
mov ecx, ebx
call fcn.0041bce0
cmp dword [ebp - 0x28], esi
jne 0x4205b4
push 1
mov ecx, ebx
call fcn.0041a8a0
mov esi, eax
mov dword [ebp - 0x54], esi
mov dword [0x74e840], 1
mov ecx, ebx
test edi, edi
je 0x4205a5
call fcn.00416cd0
xor edi, edi
mov dword [ebp - 0x38], edi
jmp 0x4208ae
call fcn.00410460
xor edi, edi
mov dword [ebp - 0x38], edi
jmp 0x4208ae
mov dword [ebp + 0xf70], esi
mov dword [ebp + 0xf78], esi
xor eax, eax
mov word [ebp + 0xf74], ax
mov byte [ebp - 4], 4
mov eax, dword [0x74ea7c]
cmp eax, esi
jne 0x4205db
mov eax, 0x74ea80
push esi
push str.Uninstall.exe
push eax
push 0x66add0
lea ecx, [ebp + 0xf70]
call fcn.00402320
mov eax, dword [ebx + 0x48]
cmp byte [eax + 0x4f], 0
jne 0x4206d4
cmp dword [0x74e9fc], esi
jne 0x4206d4
cmp byte [eax + 0x29], 0
je 0x4206d4
mov edi, 1
mov dword [ebx + 0x4c], edi
lea ecx, [ebp - 0x6c]
push ecx
lea edx, [ebp - 0x64]
push edx
lea ecx, [ebx + 4]
call fcn.0040dc20
test eax, eax
je 0x420897
push 0x3c
push esi
lea eax, [ebp - 0xb0]
push eax
call fcn.00613900
add esp, 0xc
mov dword [ebp - 0xb0], 0x3c
mov dword [ebp - 0xac], 0x40
mov dword [ebp - 0xa4], str.open
mov eax, dword [ebp + 0xf70]
cmp eax, esi
je 0x420677
mov dword [ebp - 0xa0], eax
jmp 0x420683
lea ecx, [ebp + 0xf74]
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x94], 3
mov dword [ebp - 0x90], esi
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x9c], str._uninstlsp
lea edx, [ebp - 0xb0]
push edx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x4206cc
push 0xffffffffffffffff
mov eax, dword [ebp - 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebp - 0x44], edi
jmp 0x420897
push 0x3c
push esi
lea ecx, [ebp - 0xb0]
push ecx
call fcn.00613900
add esp, 0xc
mov dword [ebp - 0xb0], 0x3c
mov dword [ebp - 0xac], 0x40
mov dword [ebp - 0xa4], str.open
mov eax, dword [ebp + 0xf70]
cmp eax, esi
je 0x420716
mov dword [ebp - 0xa0], eax
jmp 0x420722
lea edx, [ebp + 0xf74]
mov dword [ebp - 0xa0], edx
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x94], 3
mov dword [ebp - 0x90], esi
mov edi, dword [sym.imp.USER32.dll_GetForegroundWindow]
call edi
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x9c], 0x66e8d8
mov eax, dword [ebp + 0xf70]
cmp eax, esi
jne 0x420760
lea eax, [ebp + 0xf74]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x420897
mov eax, dword [ebp + 0xf70]
cmp eax, esi
jne 0x420780
lea eax, [ebp + 0xf74]
push esi
push eax
mov ecx, ebx
call fcn.00416ba0
test al, al
je 0x420897
lea eax, [ebp - 0xb0]
push eax
mov esi, dword [sym.imp.SHELL32.dll_ShellExecuteExW]
call esi
test eax, eax
je 0x420891
mov dword [ebp - 0x54], 1
push 0xffffffffffffffff
mov ecx, dword [ebp - 0x78]
push ecx
mov ebx, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call ebx
lea edx, [ebp - 0x3c]
push edx
mov eax, dword [ebp - 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
je 0x4207d5
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x54], ecx
mov dword [0x74e840], 1
lea edx, [ebp - 0x6c]
push edx
lea eax, [ebp - 0x64]
push eax
mov ecx, dword [ebp - 0x14]
add ecx, 4
call fcn.0040dc20
test eax, eax
je 0x420897
push 0x3c
push 0
lea ecx, [ebp - 0xb0]
push ecx
call fcn.00613900
add esp, 0xc
mov dword [ebp - 0xb0], 0x3c
mov dword [ebp - 0xac], 0x40
mov dword [ebp - 0xa4], str.open
mov eax, dword [ebp + 0xf70]
test eax, eax
je 0x42083d
mov dword [ebp - 0xa0], eax
jmp 0x420849
lea edx, [ebp + 0xf74]
mov dword [ebp - 0xa0], edx
xor eax, eax
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], 3
mov dword [ebp - 0x90], eax
call edi
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x9c], str._uninstlsp
lea eax, [ebp - 0xb0]
push eax
call esi
test eax, eax
je 0x420888
push 0xffffffffffffffff
mov ecx, dword [ebp - 0x78]
push ecx
call ebx
mov dword [ebp - 0x44], 1
jmp 0x420897
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor edi, edi
mov dword [ebp - 0x38], edi
mov byte [ebp - 4], 0
lea ecx, [ebp + 0xf70]
call fcn.004011f0
mov esi, dword [ebp - 0x54]
test esi, esi
jne 0x4208b9
mov dword [ebp - 0x24], 0
xor edx, edx
test esi, esi
setne dl
mov dword [ebp - 0xcc], edx
push 4
lea eax, [ebp - 0xcc]
push eax
push 4
push 0
push str.lastintres
mov ecx, dword [0x74ea0c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, dword [ebp - 0x14]
cmp dword [ebp - 0x34], 0
je 0x420908
test edi, edi
je 0x4208fb
mov ecx, esi
call fcn.00416cd0
jmp 0x420908
cmp dword [ebp - 0x28], 0
jne 0x420908
mov ecx, esi
call fcn.00410460
mov eax, dword [esi + 0x48]
cmp byte [eax + 0x4f], 0
jne 0x420920
cmp byte [eax + 0x51], 0
jne 0x420920
cmp dword [0x74e9fc], 0
je 0x420927
mov ecx, esi
call fcn.0041d190
cmp dword [ebp - 0x34], 0
je 0x420936
mov dword [ebp - 0x24], 0
jmp 0x42093c
cmp dword [ebp - 0x24], 0
jne 0x420989
mov dword [ebp - 0x74], 4
lea edx, [ebp - 0x74]
push edx
lea eax, [ebp - 0x3c]
push eax
push 0
push 0
push str.NeedChAfRb
mov ecx, dword [0x74ea0c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x420ba7
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x24], esi
push str.NeedChAfRb
mov edx, dword [0x74ea0c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
test esi, esi
je 0x420ba7
push str.NeedChAfRb
mov eax, dword [0x74ea0c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
xor esi, esi
xor ebx, ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x68], 4
lea ecx, [ebp - 0x68]
push ecx
lea edx, [ebp - 0x20]
push edx
push ebx
push ebx
push str.ClChIDMRes
mov eax, dword [0x74ea0c]
push eax
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call edi
test eax, eax
jne 0x4209cf
mov ebx, dword [ebp - 0x20]
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x68], 4
lea ecx, [ebp - 0x68]
push ecx
lea edx, [ebp - 0x20]
push edx
push 0
push 0
push str.ClChIERes
mov eax, dword [0x74ea0c]
push eax
call edi
test eax, eax
jne 0x4209fb
mov esi, dword [ebp - 0x20]
cmp esi, 1
je 0x420a04
cmp ebx, 1
jne 0x420ba7
mov edi, 1
mov dword [ebp - 0x48], edi
lea ecx, [ebp - 0x30]
call fcn.004f81e0
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c]
push ecx
lea edx, [ebp - 0x2c]
push edx
push 0
lea ecx, [ebp - 0x30]
call fcn.004f8460
cmp esi, edi
jne 0x420a39
cmp dword [ebp - 0x1c], 0xffffffff
jne 0x420a39
xor edi, edi
mov dword [ebp - 0x48], edi
cmp ebx, 1
jne 0x420a4d
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x420a4d
mov dword [ebp - 0x48], 0
jmp 0x420a55
test edi, edi
jne 0x420b47
push 0x50030
mov eax, dword [0x74fe20]
push eax
mov ecx, dword [0x74fe30]
push ecx
push 0
call fcn.0046db70
add esp, 0x10
mov edi, dword [ebp - 0x14]
lea ecx, [edi + 4]
call fcn.0040eed0
mov dword [ebp - 0x18], 0
push 4
lea edx, [ebp - 0x18]
push edx
push 4
push 0
push str.AdvancedIntegration
mov eax, dword [0x74ea0c]
push eax
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
call ebx
mov dword [edi + 0x1c], 0
lea ecx, [ebp - 0x4c]
call fcn.004f81e0
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x1c]
push ecx
lea edx, [ebp - 0x2c]
push edx
push 0
lea ecx, [ebp - 0x4c]
call fcn.004f8460
mov eax, 1
mov dword [ebp - 0x48], eax
cmp esi, eax
jne 0x420adc
cmp dword [ebp - 0x1c], 0xffffffff
jne 0x420adc
xor eax, eax
mov dword [ebp - 0x48], eax
mov esi, 1
cmp dword [ebp - 0x58], esi
jne 0x420af5
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x420af5
mov dword [ebp - 0x48], 0
jmp 0x420af9
test eax, eax
jne 0x420b36
mov dword [ebp - 0x18], esi
push 4
lea eax, [ebp - 0x18]
push eax
push 4
push 0
push str.NeedSnRpAfRb
mov ecx, dword [0x74ea0c]
push ecx
call ebx
push 0x50030
mov edx, dword [0x74fe20]
push edx
mov eax, dword [0x74fe34]
push eax
push 0
call fcn.0046db70
add esp, 0x10
push esi
call fcn.00411530
mov dword [ebp - 0x60], esi
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x4c]
call fcn.004f81f0
jmp 0x420b9b
push 0x50000
cmp dword [ebp - 0x2c], 1
jne 0x420b62
mov ecx, dword [0x74fe20]
push ecx
mov edx, dword [0x74fe60]
push edx
jmp 0x420b6f
mov eax, dword [0x74fe20]
push eax
mov ecx, dword [0x74fe38]
push ecx
push 0
call fcn.0046db70
add esp, 0x10
mov dword [ebp - 0x18], 1
push 4
lea edx, [ebp - 0x18]
push edx
push 4
push 0
push str.AdvancedIntegration
mov eax, dword [0x74ea0c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x30]
call fcn.004f81f0
cmp dword [ebp - 0x60], 0
jne 0x420bf1
mov dword [ebp - 0x5c], 4
lea ecx, [ebp - 0x5c]
push ecx
lea edx, [ebp - 0x74]
push edx
push 0
push 0
push str.NeedSnRpAfRb
mov eax, dword [0x74ea0c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x420c13
mov esi, dword [ebp - 0x74]
mov dword [ebp - 0x60], esi
push str.NeedSnRpAfRb
mov ecx, dword [0x74ea0c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
test esi, esi
je 0x420c13
push 0
lea ecx, [ebp]
call fcn.00523c70
mov byte [ebp - 4], 7
lea ecx, [ebp]
call fcn.005e96b1
mov byte [ebp - 4], 0
lea ecx, [ebp]
call fcn.00415570
mov edi, dword [ebp - 0x14]
mov ecx, edi
call fcn.00410680
push 1
mov ecx, edi
call fcn.0041bce0
mov ecx, edi
call fcn.00410450
xor ebx, ebx
test eax, eax
jne 0x420c55
push ebx
push ebx
call fcn.00417580
push ebx
push ebx
mov ecx, edi
call fcn.00417620
push ebx
push ebx
mov ecx, edi
call fcn.0041d120
push ebx
push ebx
mov ecx, edi
call fcn.004175e0
mov ecx, edi
cmp dword [edi + 0x1c], ebx
je 0x420c65
push 1
call fcn.00415410
jmp 0x420c76
call fcn.00410d80
test eax, eax
jne 0x420c76
push ebx
mov ecx, edi
call fcn.0041f7d0
cmp dword [0x74e9fc], ebx
je 0x420c85
mov ecx, edi
call fcn.0041f280
cmp dword [ebp - 0x34], ebx
je 0x420f79
lea esi, [edi + 4]
lea edx, [ebp - 0x6c]
push edx
lea eax, [ebp - 0x64]
push eax
mov ecx, esi
call fcn.0040dc20
test eax, eax
je 0x420de7
cmp dword [ebp - 0x28], ebx
jne 0x420cc0
mov ecx, esi
call fcn.0040eed0
mov dword [ebp - 0x44], 1
jmp 0x420f7e
mov dword [ebp + 0xf64], ebx
mov dword [ebp + 0xf6c], ebx
xor ecx, ecx
mov word [ebp + 0xf68], cx
mov byte [ebp - 4], 8
mov eax, dword [0x74ea7c]
cmp eax, ebx
jne 0x420ce7
mov eax, 0x74ea80
push ebx
push str.Uninstall.exe
push eax
push 0x66add0
lea ecx, [ebp + 0xf64]
call fcn.00402320
mov eax, dword [ebp + 0xf64]
cmp eax, ebx
jne 0x420d0e
lea eax, [ebp + 0xf68]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x420dd8
mov eax, dword [ebp + 0xf64]
cmp eax, ebx
jne 0x420d2e
lea eax, [ebp + 0xf68]
push ebx
push eax
mov ecx, edi
call fcn.00416ba0
test al, al
je 0x420dd8
push 0x3c
push ebx
lea edx, [ebp - 0x108]
push edx
call fcn.00613900
add esp, 0xc
mov dword [ebp - 0x108], 0x3c
mov dword [ebp - 0x104], 0x40
mov dword [ebp - 0xfc], str.open
mov eax, dword [ebp + 0xf64]
cmp eax, ebx
jne 0x420d7f
lea eax, [ebp + 0xf68]
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0xf0], ebx
mov dword [ebp - 0xec], 3
mov dword [ebp - 0xe8], ebx
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov dword [ebp - 0x100], eax
mov dword [ebp - 0xf4], str._uninstlsp
lea ecx, [ebp - 0x108]
push ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x420dd1
push 0xffffffffffffffff
mov edx, dword [ebp - 0xd0]
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebp - 0x44], 1
mov byte [ebp - 4], 0
lea ecx, [ebp + 0xf64]
call fcn.004011f0
cmp dword [ebp - 0x28], ebx
je 0x420f79
push ebx
push ebx
push 3
push ebx
push 3
push 0xc0000000
push str..IDMTDI
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
je 0x420e15
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x420e50
call fcn.00446dd0
neg eax
sbb eax, eax
and eax, 0x100
add eax, 0x20019
lea ecx, [ebp - 0x5c]
push ecx
push eax
push ebx
push str.SYSTEMCurrentControlSetServicesIDMTDI
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
jne 0x420f79
mov edx, dword [ebp - 0x5c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp + 0xf58], ebx
mov dword [ebp + 0xf60], ebx
xor eax, eax
mov word [ebp + 0xf5c], ax
mov byte [ebp - 4], 9
mov eax, dword [0x74ea7c]
cmp eax, ebx
jne 0x420e77
mov eax, 0x74ea80
push ebx
push str.Uninstall.exe
push eax
push 0x66add0
lea ecx, [ebp + 0xf58]
call fcn.00402320
mov eax, dword [ebp + 0xf58]
cmp eax, ebx
jne 0x420e9e
lea eax, [ebp + 0xf5c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x420f6a
mov eax, dword [ebp + 0xf58]
cmp eax, ebx
jne 0x420ebe
lea eax, [ebp + 0xf5c]
push 1
push eax
mov ecx, edi
call fcn.00416ba0
test al, al
je 0x420f6a
push 0x3c
push ebx
lea ecx, [ebp + 0x1380]
push ecx
call fcn.00613900
add esp, 0xc
mov dword [ebp + 0x1380], 0x3c
mov dword [ebp + 0x1384], 0x40
mov dword [ebp + 0x138c], str.open
mov eax, dword [ebp + 0xf58]
cmp eax, ebx
je 0x420f12
mov dword [ebp + 0x1390], eax
jmp 0x420f1e
lea edx, [ebp + 0xf5c]
mov dword [ebp + 0x1390], edx
mov dword [ebp + 0x1398], ebx
mov dword [ebp + 0x139c], 3
mov dword [ebp + 0x13a0], ebx
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov dword [ebp + 0x1388], eax
mov dword [ebp + 0x1394], str._uninsttdi
lea eax, [ebp + 0x1380]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x420f6a
push 0xffffffffffffffff
mov ecx, dword [ebp + 0x13b8]
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov byte [ebp - 4], 0
lea ecx, [ebp + 0xf58]
call fcn.004011f0
cmp dword [ebp - 0x44], ebx
je 0x420f99
push 0x50030
mov edx, dword [0x74fe04]
push edx
mov eax, dword [0x74fe58]
push eax
push ebx
call fcn.0046db70
add esp, 0x10
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x13bc]
xor ecx, ebp
call fcn.00613241
add ebp, 0x13c0
mov esp, ebp
pop ebp
ret