Function at 0x426120
Capabilities:
Check if file exists
Create directory
Get common file path
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5498c9
mov eax, dword fs:[0]
push eax
sub esp, 0x3e0
mov eax, dword [0x5c5b9c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x3e4], ecx
call fcn.0043d2a1
xor ecx, ecx
xor edi, edi
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x426170
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x3a0], eax
mov dword [ebp - 4], edi
call fcn.0043d2a1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42619f
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x394], eax
mov byte [ebp - 4], 1
call fcn.0043d2a1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x4261cf
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x3a8], eax
mov byte [ebp - 4], 2
call fcn.0043d2a1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x4261ff
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x39c], eax
mov byte [ebp - 4], 3
call fcn.0043d2a1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42622f
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x390], eax
mov byte [ebp - 4], 4
call fcn.0043d2a1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42625f
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x3ac], ebx
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1a0
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431540
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431540
mov dword [ebp - 0x3a4], edi
mov dword [ebp - 0x3bc], edi
mov dword [ebp - 0x3b8], edi
mov dword [ebp - 0x3b4], edi
push 0x104
lea ecx, [ebp - 0x21c]
push ecx
mov byte [ebp - 4], 9
mov dword [ebp - 0x3e0], edi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push 0x55a33c
lea edx, [ebp - 0x21c]
push 0x105
push edx
call fcn.00531b8a
add esp, 0xc
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404790
cmp eax, edi
jne 0x426306
xor ecx, ecx
jmp 0x42631f
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x426310
mov dx, word [ecx]
add ecx, 2
cmp dx, di
jne 0x426310
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x3a0]
call fcn.00401600
lea eax, [ebp - 0x3a0]
push eax
lea ecx, [ebp - 0x21c]
push ecx
lea edx, [ebp - 0x3c0]
push edx
call fcn.00406130
add esp, 0xc
push eax
lea ecx, [ebp - 0x3a0]
mov byte [ebp - 4], 0xa
call fcn.004018e0
mov eax, dword [ebp - 0x3c0]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42637f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [ebp - 0x3a0]
push esi
push str.CIstDrvDlg::RegisterUninstaller_Uninstaller_directory___1_s__n
push 4
call fcn.00411380
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
add esp, 0xc
or ecx, eax
jge 0x4263b6
push edi
lea ecx, [ebp - 0x3a0]
call fcn.004012e0
mov esi, dword [ebp - 0x3a0]
mov edi, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0
push esi
call edi
test eax, eax
jne 0x426503
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x426503
push str.CIstDrvDlg::RegisterUninstaller_Cannot_create_a_common_uninstaller_directory._n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426441
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x390]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426467
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x39c]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42648d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4264b3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x394]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4264d9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4264fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x427dc9
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x426525
push 0
lea ecx, [ebp - 0x3a0]
call fcn.004012e0
mov esi, dword [ebp - 0x3a0]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x426541
push 0
lea ecx, [ebp - 0x3a0]
call fcn.004012e0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ecx, dword [ebp - 0x3a0]
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
or eax, 2
push eax
push ecx
call ebx
lea edx, [ebp - 0x3a0]
push edx
lea ecx, [ebp - 0x394]
call fcn.004018e0
push 1
push 0x55a33c
lea ecx, [ebp - 0x394]
call fcn.00405ed0
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404490
test eax, eax
jne 0x42659a
xor ecx, ecx
jmp 0x4265af
mov ecx, eax
lea esi, [ecx + 2]
nop
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4265a0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x394]
call fcn.00405ed0
mov esi, dword [ebp - 0x394]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x4265e4
push 0
lea ecx, [ebp - 0x394]
call fcn.004012e0
mov esi, dword [ebp - 0x394]
push 0
push esi
call edi
test eax, eax
jne 0x42670f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x42670f
push str.CIstDrvDlg::RegisterUninstaller_Cannot_create_a_device_specific_uninstaller_directory._n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 4
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42666f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x390]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 3
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426695
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x39c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 2
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4266bb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4266e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426701
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a0]
add eax, 0xfffffff0
jmp 0x4264dc
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x42672b
push 0
lea ecx, [ebp - 0x394]
call fcn.004012e0
mov edi, dword [ebp - 0x394]
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
mov esi, edi
or ecx, eax
jge 0x426755
push 0
lea ecx, [ebp - 0x394]
call fcn.004012e0
mov edi, dword [ebp - 0x394]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
or eax, 2
push eax
push edi
call ebx
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404490
test eax, eax
jne 0x42677e
xor ecx, ecx
jmp 0x426792
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x426783
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x390]
call fcn.00401600
push 0x33
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
lea ecx, [ebp - 0x39c]
call fcn.00401600
push 1
push 0x55a33c
lea ecx, [ebp - 0x39c]
call fcn.00405ed0
mov esi, dword [ebp - 0x390]
mov eax, dword [esi - 0xc]
push eax
push esi
lea ecx, [ebp - 0x39c]
call fcn.00405ed0
mov ebx, dword [ebp - 0x39c]
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x426801
push 0
lea ecx, [ebp - 0x39c]
call fcn.004012e0
mov ebx, dword [ebp - 0x39c]
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x298]
call fcn.004310d0
test eax, eax
jne 0x426af6
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x298]
call fcn.004310d0
test eax, eax
jne 0x42690e
push str.CIstDrvDlg::RegisterUninstaller_reg.Open_HKEY_LOCAL_MACHINE_failed._n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4268a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4268c0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4268e0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426906
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
jmp 0x4266e4
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x426930
push 0
lea ecx, [ebp - 0x39c]
call fcn.004012e0
mov ebx, dword [ebp - 0x39c]
push ebx
lea ecx, [ebp - 0x298]
call fcn.00431140
test eax, eax
jne 0x426a24
push ebx
push str.CIstDrvDlg::RegisterUninstaller_reg.CreateKey___1_failed._n
push 4
call fcn.00411380
add esp, 0xc
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4269b2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4269d2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4269f2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426906
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
jmp 0x4266e4
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x426a46
push 0
lea ecx, [ebp - 0x39c]
call fcn.004012e0
mov ebx, dword [ebp - 0x39c]
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x298]
call fcn.004310d0
test eax, eax
jne 0x426cc8
mov ecx, dword [ebp - 0x39c]
push ecx
push str.CIstDrvDlg::RegisterUninstaller_reg.Open___1_failed._n
push 4
call fcn.00411380
add esp, 0xc
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
lea ecx, [ebp - 0x3ac]
call fcn.00401450
lea ecx, [ebp - 0x390]
call fcn.00401450
lea ecx, [ebp - 0x39c]
call fcn.00401450
lea ecx, [ebp - 0x3a8]
call fcn.00401450
lea ecx, [ebp - 0x394]
call fcn.00401450
lea ecx, [ebp - 0x3a0]
call fcn.00401450
xor eax, eax
jmp 0x427dc9
call fcn.0043d2a1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x426b10
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x398], eax
push str.CIstDrvDlg::RegisterUninstaller_already_exist_Uninstaller_registry._n
push 4
mov byte [ebp - 4], 0xb
call fcn.00411380
add esp, 8
push str.Version
lea ecx, [ebp - 0x298]
call fcn.004312a0
test eax, eax
jne 0x426b4d
xor ecx, ecx
jmp 0x426b61
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x426b52
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x398]
call fcn.00401600
mov ebx, dword [ebp - 0x398]
cmp dword [ebx - 0xc], 0
je 0x426c90
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.004046d0
push eax
lea ecx, [ebp - 0x390]
call fcn.00406a00
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x426bbf
push 0
lea ecx, [ebp - 0x398]
call fcn.004012e0
mov ebx, dword [ebp - 0x398]
lea ecx, [ebp - 0x220]
push ecx
lea edx, [ebp - 0x224]
push edx
lea eax, [ebp - 0x228]
push eax
lea ecx, [ebp - 0x22c]
push ecx
push str._d._d._d._d
push ebx
call fcn.005322a2
mov edx, dword [ebp - 0x390]
mov esi, dword [ebp - 0x22c]
mov edi, dword [ebp - 0x224]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
shl esi, 0x10
add esi, dword [ebp - 0x228]
shl edi, 0x10
add edi, dword [ebp - 0x220]
add esp, 0x18
or ecx, eax
jge 0x426c2f
push 0
lea ecx, [ebp - 0x390]
call fcn.004012e0
mov edx, dword [ebp - 0x390]
lea eax, [ebp - 0x220]
push eax
lea ecx, [ebp - 0x224]
push ecx
lea eax, [ebp - 0x228]
push eax
lea ecx, [ebp - 0x22c]
push ecx
push str._d._d._d._d
push edx
call fcn.005322a2
mov ecx, dword [ebp - 0x224]
mov eax, dword [ebp - 0x22c]
shl ecx, 0x10
add ecx, dword [ebp - 0x220]
push 1
shl eax, 0x10
add eax, dword [ebp - 0x228]
push ecx
push eax
push edi
push esi
call fcn.00411d40
add esp, 0x2c
test eax, eax
jne 0x426c90
mov dword [ebp - 0x3a4], 1
add ebx, 0xfffffff0
mov byte [ebp - 4], 9
lea edx, [ebx + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x426cb0
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
cmp dword [ebp - 0x3a4], 0
je 0x426cc8
push str.CIstDrvDlg::RegisterUninstaller_Already_exist_a_newer_version_uninstaller.
push 4
call fcn.00411380
add esp, 8
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404730
test eax, eax
jne 0x426ce3
xor ecx, ecx
jmp 0x426cff
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x426cf0
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x426cf0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x390]
call fcn.00401600
push 0x104
lea ecx, [ebp - 0x21c]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [ebp - 0x21c]
push 0x5c
push edx
call fcn.0053193f
add esp, 8
test eax, eax
jne 0x426e26
push str.CIstDrvDlg::RegisterUninstaller_Cannot_get_a_backslash._n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426da6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x390]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426dcc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x39c]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426df2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426e18
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x394]
add eax, 0xfffffff0
jmp 0x4266e4
mov edi, dword [ebp - 0x390]
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x426e54
push 0
lea ecx, [ebp - 0x390]
call fcn.004012e0
mov edi, dword [ebp - 0x390]
push 0x2c
push edi
lea ecx, [ebp - 0x3d8]
call fcn.0043a510
lea ecx, [ebp - 0x3d8]
call fcn.00438c50
test eax, eax
je 0x426eac
lea edx, [ebp - 0x394]
push edx
lea ecx, [ebp - 0x3a8]
call fcn.004018e0
push 0x55a33c
lea ecx, [ebp - 0x3a8]
call fcn.00407890
push 0
lea ecx, [ebp - 0x3d8]
call fcn.00438e80
push eax
lea ecx, [ebp - 0x3a8]
call fcn.00407890
cmp dword [ebp - 0x3a4], 0
jne 0x427563
call fcn.0043d2a1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x426ed3
push 0x80004005
call fcn.00401020
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x398], eax
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 0xc
xor ebx, ebx
call fcn.00438c50
test eax, eax
je 0x426fc1
lea eax, [ebp - 0x21c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x426f07
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x21c]
push ecx
lea ecx, [ebp - 0x390]
call fcn.00401600
push ebx
lea ecx, [ebp - 0x3d8]
call fcn.00438e80
test eax, eax
jne 0x426f3d
xor ecx, ecx
jmp 0x426f51
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x426f42
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x390]
call fcn.00405ed0
mov ecx, dword [ebp - 0x394]
mov eax, 1
sub eax, dword [ecx - 4]
mov ecx, dword [ecx - 8]
or ecx, eax
jge 0x426f80
push 0
lea ecx, [ebp - 0x394]
call fcn.004012e0
mov esi, dword [ebp - 0x394]
push esi
push ebx
lea ecx, [ebp - 0x3d8]
call fcn.00438e80
push eax
lea edx, [ebp - 0x21c]
push edx
call 0x408680
add esp, 0xc
test eax, eax
je 0x427016
lea ecx, [ebp - 0x3d8]
inc ebx
call fcn.00438c50
cmp ebx, eax
jb 0x426efe
mov edi, dword [ebp - 0x390]
mov eax, dword [ebp - 0x398]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426fe7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x3a0]
push ecx
push str.UninstallerCommonDir
lea ecx, [ebp - 0x298]
call fcn.00431340
test eax, eax
jne 0x42705b
push str.CIstDrvDlg::RegisterUninstaller_Write_UninstallerCommonDir_failed._n
push 4
call fcn.00411380
add esp, 8
jmp 0x427e33
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CIstDrvDlg::RegisterUninstaller_CopyFile_failed.__0x_1_lx___n
push 4
call fcn.00411380
mov eax, dword [ebp - 0x398]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426611
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x426611
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.004046d0
push eax
lea ecx, [ebp - 0x390]
call fcn.00406a00
mov edi, dword [ebp - 0x390]
push edi
push str.Version
lea ecx, [ebp - 0x298]
call fcn.00431340
test eax, eax
jne 0x4270a9
push str.CIstDrvDlg::RegisterUninstaller_Write_Version_failed._n
push 4
call fcn.00411380
add esp, 8
jmp 0x427e33
lea eax, [edi - 0x10]
push eax
call fcn.00401340
lea esi, [eax + 0x10]
add esp, 4
mov dword [ebp - 0x3a4], esi
mov bl, 0xd
lea ecx, [ebp - 0x308]
mov byte [ebp - 4], bl
call fcn.00431610
mov ecx, dword [ebp - 0x39c]
mov eax, 1
sub eax, dword [ecx - 4]
mov ecx, dword [ecx - 8]
or ecx, eax
mov byte [ebp - 4], 0xe
jge 0x4270f4
push 0
lea ecx, [ebp - 0x39c]
call fcn.004012e0
mov eax, dword [ebp - 0x39c]
push 3
lea edx, [ebp - 0x388]
push eax
lea ecx, [ebp - 0x38c]
mov dword [ebp - 0x38c], edx
call fcn.004128c0
mov ecx, dword [ebp - 0x38c]
push ecx
lea edx, [ebp - 0x254]
push edx
mov byte [ebp - 4], 0xf
call fcn.00439b80
add esp, 8
mov eax, dword [ebp - 0x38c]
lea ecx, [ebp - 0x388]
mov byte [ebp - 4], 0x11
cmp eax, ecx
je 0x42714b
push eax
call fcn.00532cbd
add esp, 4
cmp dword [ebp - 0x240], 8
mov eax, dword [ebp - 0x254]
jae 0x427160
lea eax, [ebp - 0x254]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x308]
call fcn.00431260
test eax, eax
jne 0x4271b1
push str.CIstDrvDlg::RegisterUninstaller_Write_displayname_failed_RegKey_cannot_open_._n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x254]
call fcn.004021b0
lea ecx, [ebp - 0x308]
mov byte [ebp - 4], bl
call fcn.00431640
lea ecx, [ebp - 0x3a4]
mov byte [ebp - 4], 9
call fcn.00401450
jmp 0x427e33
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404410
push eax
lea ecx, [ebp - 0x254]
call fcn.004066b0
cmp dword [ebp - 0x240], 8
mov eax, dword [ebp - 0x254]
jae 0x4271e5
lea eax, [ebp - 0x254]
push eax
push str.DisplayName
lea ecx, [ebp - 0x308]
call fcn.00431380
test eax, eax
jne 0x427204
push str.CIstDrvDlg::RegisterUninstaller_Write_displayname_failed._n
jmp 0x42717a
lea ecx, [ebp - 0x308]
call fcn.00431240
mov edx, dword [ebp - 0x3a8]
push edx
push str.DisplayIcon
lea ecx, [ebp - 0x298]
call fcn.00431340
test eax, eax
jne 0x427234
push str.CIstDrvDlg::RegisterUninstaller_Write_DisplayIcon_failed._n
jmp 0x42717a
push 0x564760
lea ecx, [ebp - 0x390]
call fcn.00406a00
mov ecx, dword [ebp - 0x3a8]
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x390]
call fcn.00405ed0
push 0x5735b8
lea ecx, [ebp - 0x390]
call fcn.00407890
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.004047f0
push eax
lea ecx, [ebp - 0x390]
call fcn.00407890
mov edi, dword [ebp - 0x390]
push edi
push str.UninstallString
lea ecx, [ebp - 0x298]
call fcn.00431340
test eax, eax
jne 0x4272ae
push str.CIstDrvDlg::RegisterUninstaller_Write_displayname_failed._n
jmp 0x42717a
lea ecx, [ebp - 0x398]
call fcn.00401420
push 5
lea ecx, [ebp - 0x398]
mov byte [ebp - 4], 0x12
call fcn.00405f90
mov eax, dword [ebp - 0x398]
push eax
push str.Publisher
lea ecx, [ebp - 0x298]
call fcn.00431340
test eax, eax
jne 0x427304
push str.CIstDrvDlg::RegisterUninstaller_Write_Publisher_failed._n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x398]
call fcn.00401450
jmp 0x427184
push esi
push str.DisplayVersion
lea ecx, [ebp - 0x298]
call fcn.00431340
test eax, eax
jne 0x427320
push str.CIstDrvDlg::RegisterUninstaller_Write_DisplayVersion_failed._n
jmp 0x4272ea
lea ecx, [ebp - 0x39c]
push ecx
lea ecx, [ebp - 0x390]
call fcn.004018e0
push str.DriverStore
lea ecx, [ebp - 0x390]
call fcn.00407890
mov esi, dword [ebp - 0x390]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x42736a
push 0
lea ecx, [ebp - 0x390]
call fcn.004012e0
mov esi, dword [ebp - 0x390]
push esi
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x2c0]
call fcn.004310d0
test eax, eax
jne 0x42749d
push 0x57343c
lea ecx, [ebp - 0x298]
call fcn.00431140
test eax, eax
jne 0x42745b
push esi
push str.CIstDrvDlg::RegisterUninstaller_reg.CreateKey___1_failed._n
push 2
call fcn.00411380
add esp, 0xc
lea ecx, [ebp - 0x398]
call fcn.00401450
lea ecx, [ebp - 0x254]
call fcn.004021b0
lea ecx, [ebp - 0x308]
mov byte [ebp - 4], bl
call fcn.00431640
lea ecx, [ebp - 0x3a4]
call fcn.00401450
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
lea ecx, [ebp - 0x3ac]
call fcn.00401450
lea ecx, [ebp - 0x390]
call fcn.00401450
lea ecx, [ebp - 0x39c]
call fcn.00401450
lea ecx, [ebp - 0x3a8]
call fcn.00401450
lea ecx, [ebp - 0x394]
call fcn.00401450
lea ecx, [ebp - 0x3a0]
call fcn.00401450
xor eax, eax
jmp 0x427dc9
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x42747d
push 0
lea ecx, [ebp - 0x390]
call fcn.004012e0
mov esi, dword [ebp - 0x390]
push esi
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x2c0]
call fcn.004310d0
test eax, eax
jne 0x42749d
push esi
push str.CIstDrvDlg::RegisterUninstaller_regDriverStore.Open___1_failed._n
jmp 0x4273a1
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.004042d0
push eax
lea ecx, [ebp - 0x390]
call fcn.00406a00
mov edx, dword [ebp - 0x390]
push edx
push 0x55a24c
lea ecx, [ebp - 0x2c0]
call fcn.00431340
test eax, eax
jne 0x4274eb
push str.CIstDrvDlg::RegisterUninstaller_regDriverStore.SetValue_Default_failed._n
push 2
call fcn.00411380
add esp, 8
jmp 0x4273ab
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404330
push eax
lea ecx, [ebp - 0x390]
call fcn.00406a00
mov edi, dword [ebp - 0x390]
push 0x55a24c
push edi
lea ecx, [ebp - 0x2c0]
call fcn.00431340
test eax, eax
jne 0x427530
push edi
push str.CIstDrvDlg::RegisterUninstaller_regDriverStore.SetValue___1__failed._n
jmp 0x4273a1
lea ecx, [ebp - 0x398]
call fcn.00401450
lea ecx, [ebp - 0x254]
call fcn.004021b0
lea ecx, [ebp - 0x308]
mov byte [ebp - 4], bl
call fcn.00431640
lea ecx, [ebp - 0x3a4]
mov byte [ebp - 4], 9
call fcn.00401450
lea ecx, [ebp - 0x298]
call fcn.00431240
cmp dword [ebp + 8], 0
jne 0x4275da
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4275d2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
jmp 0x427d10
call fcn.00445a97
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x22c]
push ecx
lea ecx, [eax + 0xb8]
call fcn.0040b370
mov esi, eax
lea edx, [ebp - 0x3bc]
cmp edx, esi
je 0x42762d
mov ecx, edx
call 0x4093c0
mov eax, dword [esi + 8]
mov edi, dword [esi]
mov ebx, dword [esi + 4]
mov dword [ebp - 0x3b4], eax
xor eax, eax
mov dword [ebp - 0x3bc], edi
mov dword [ebp - 0x3b8], ebx
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
jmp 0x427639
mov edi, dword [ebp - 0x3bc]
mov ebx, dword [ebp - 0x3b8]
lea ecx, [ebp - 0x22c]
call 0x4093c0
sub ebx, edi
mov ecx, ebx
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x3e8], eax
mov dword [ebp - 0x3c0], 0
je 0x427ca9
mov dword [ebp - 0x3a4], edi
mov edi, 7
xor esi, esi
xor ecx, ecx
mov dword [ebp - 0x25c], edi
mov dword [ebp - 0x260], esi
mov word [ebp - 0x270], cx
xor edx, edx
mov dword [ebp - 0x240], edi
mov dword [ebp - 0x244], esi
mov word [ebp - 0x254], dx
xor eax, eax
mov dword [ebp - 0x224], edi
mov dword [ebp - 0x228], esi
mov word [ebp - 0x238], ax
mov byte [ebp - 4], 0x16
call fcn.0043d2a1
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
je 0x426166
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x398], esi
mov ecx, dword [ebp - 0x3a4]
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push ecx
lea ecx, [ebp - 0x238]
mov byte [ebp - 4], 0x17
call fcn.004025d0
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x3dc], esp
push 0xffffffffffffffff
push ebx
lea eax, [ebp - 0x238]
xor edx, edx
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push eax
mov word [ecx], dx
call fcn.004025d0
mov byte [ebp - 4], 0x18
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
mov byte [ebp - 4], 0x17
call fcn.00405580
test dword [ebp + 8], eax
jne 0x427815
mov eax, dword [ebp - 0x238]
mov ebx, 8
cmp dword [ebp - 0x224], ebx
jae 0x427764
lea eax, [ebp - 0x238]
push eax
push str.Uninstaller_Not_Copy____1_s___n
push 4
call fcn.00411380
lea eax, [esi - 0x10]
add esp, 0xc
mov byte [ebp - 4], 0x16
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x427794
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x224], ebx
jb 0x4277ab
mov ecx, dword [ebp - 0x238]
push ecx
call fcn.0043c798
add esp, 4
xor edi, edi
xor edx, edx
mov esi, 7
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x228], edi
mov word [ebp - 0x238], dx
cmp dword [ebp - 0x240], ebx
jb 0x4277de
mov eax, dword [ebp - 0x254]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x240], esi
mov dword [ebp - 0x244], edi
mov word [ebp - 0x254], cx
cmp dword [ebp - 0x25c], ebx
jb 0x42780a
mov edx, dword [ebp - 0x270]
push edx
call fcn.0043c798
add esp, 4
mov dword [ebp - 0x260], edi
jmp 0x427c7a
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x3dc], esp
push 0xffffffffffffffff
push ebx
lea eax, [ebp - 0x238]
xor edx, edx
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push eax
mov word [ecx], dx
call fcn.004025d0
mov byte [ebp - 4], 0x19
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
mov byte [ebp - 4], 0x17
call fcn.004052c0
cmp eax, ebx
jne 0x42785d
xor ecx, ecx
jmp 0x427871
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
cmp dx, bx
jne 0x427862
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x398]
call fcn.00401600
mov ebx, dword [ebp - 0x398]
cmp dword [ebx - 0xc], 0
je 0x4278f1
push 0x5c
push ebx
call fcn.0053193f
add esp, 8
test eax, eax
jne 0x42789e
or eax, 0xffffffff
jmp 0x4278a2
sub eax, ebx
sar eax, 1
push eax
lea ecx, [ebp - 0x3ec]
push ecx
lea ecx, [ebp - 0x398]
call fcn.00401860
push eax
lea ecx, [ebp - 0x398]
mov byte [ebp - 4], 0x1a
call fcn.004018e0
mov eax, dword [ebp - 0x3ec]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x17
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4278eb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [ebp - 0x398]
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
call fcn.00404270
mov ecx, eax
lea esi, [ecx + 2]
lea esp, [esp]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x427910
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x270]
call fcn.004026d0
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x42794e
push 0
lea ecx, [ebp - 0x398]
call fcn.004012e0
mov ebx, dword [ebp - 0x398]
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x427953
sub eax, edx
sar eax, 1
push eax
push ebx
lea ecx, [ebp - 0x270]
call fcn.00405db0
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x3dc], esp
xor edx, edx
push 0xffffffffffffffff
push edx
lea eax, [ebp - 0x238]
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], dx
call fcn.004025d0
mov byte [ebp - 4], 0x1b
call fcn.00445a97
mov ecx, dword [eax + 4]
lea ecx, [ecx + 0xb8]
mov byte [ebp - 4], 0x17
call fcn.00405420
mov ecx, eax
lea edx, [ecx + 2]
lea esp, [esp]
mov si, word [ecx]
add ecx, 2
test si, si
jne 0x4279c0
sub ecx, edx
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x270]
call fcn.00405db0
push 3
push 0
push 0x573244
lea ecx, [ebp - 0x238]
call fcn.00402000
test eax, eax
jne 0x427a87
cmp dword [ebp - 0x3e0], eax
je 0x427a6b
cmp dword [ebp - 0x224], 8
mov eax, dword [ebp - 0x238]
jae 0x427a15
lea eax, [ebp - 0x238]
push eax
push str.Uninstaller_Not_Copy____1_s___n
push 4
call fcn.00411380
lea eax, [ebx - 0x10]
add esp, 0xc
mov byte [ebp - 4], 0x16
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427a45
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x238]
call fcn.004021b0
lea ecx, [ebp - 0x254]
call fcn.004021b0
lea ecx, [ebp - 0x270]
call fcn.004021b0
jmp 0x427c89
push 3
push 0x573244
lea ecx, [ebp - 0x238]
mov dword [ebp - 0x3e0], 1
call fcn.004026d0
mov esi, dword [ebp - 0x394]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x427aaf
push 0
lea ecx, [ebp - 0x394]
call fcn.004012e0
mov esi, dword [ebp - 0x394]
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x427ab4
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x254]
call fcn.004026d0
push 1
push 0x55a33c
lea ecx, [ebp - 0x254]
call fcn.00405db0
mov edx, dword [ebp - 0x238]
mov edi, 8
cmp dword [ebp - 0x224], edi
jae 0x427afb
lea edx, [ebp - 0x238]
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x427b00
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x254]
call fcn.00405db0
mov eax, dword [ebp - 0x270]
cmp dword [ebp - 0x25c], edi
jae 0x427b30
lea eax, [ebp - 0x270]
push eax
push str.Uninstaller_Folder_source____1_s___n
push 4
call fcn.00411380
mov eax, dword [ebp - 0x254]
add esp, 0xc
cmp dword [ebp - 0x240], edi
jae 0x427b54
lea eax, [ebp - 0x254]
push eax
push str.Uninstaller_Folder_target____1_s___n
push 4
call fcn.00411380
mov eax, dword [ebp - 0x270]
add esp, 0xc
cmp dword [ebp - 0x25c], edi
jae 0x427b78
lea eax, [ebp - 0x270]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push eax
call esi
cmp eax, 0xffffffff
je 0x427bde
mov eax, dword [ebp - 0x270]
cmp dword [ebp - 0x25c], edi
jae 0x427b9a
lea eax, [ebp - 0x270]
push eax
call esi
test al, 0x10
je 0x427bde
mov ecx, dword [ebp - 0x254]
cmp dword [ebp - 0x240], edi
jae 0x427bb5
lea ecx, [ebp - 0x254]
mov eax, dword [ebp - 0x270]
cmp dword [ebp - 0x25c], edi
jae 0x427bc9
lea eax, [ebp - 0x270]
push ecx
mov ecx, dword [ebp - 0x3e4]
push eax
call fcn.004241c0
test eax, eax
je 0x427de7
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 0x16
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427bfe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x224], edi
jb 0x427c15
mov ecx, dword [ebp - 0x238]
push ecx
call fcn.0043c798
add esp, 4
xor ebx, ebx
xor edx, edx
mov esi, 7
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x228], ebx
mov word [ebp - 0x238], dx
cmp dword [ebp - 0x240], edi
jb 0x427c48
mov eax, dword [ebp - 0x254]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x240], esi
mov dword [ebp - 0x244], ebx
mov word [ebp - 0x254], cx
cmp dword [ebp - 0x25c], edi
jb 0x427c74
mov edx, dword [ebp - 0x270]
push edx
call fcn.0043c798
add esp, 4
mov dword [ebp - 0x260], ebx
xor eax, eax
mov word [ebp - 0x270], ax
mov dword [ebp - 0x25c], esi
mov eax, dword [ebp - 0x3c0]
add dword [ebp - 0x3a4], 0x1c
inc eax
mov dword [ebp - 0x3c0], eax
cmp eax, dword [ebp - 0x3e8]
jb 0x427677
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427d07
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x390]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 3
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427d2d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x39c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 2
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427d53
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427d79
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x394]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 0
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427d9f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a0]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov dword [ebp - 4], edx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427dc4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00530f8d
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Copy_Uninstaller_failed.__0x_1_lx___n
push 4
call fcn.00411380
add esp, 0xc
lea ecx, [ebp - 0x398]
call fcn.00401450
lea ecx, [ebp - 0x238]
call fcn.004021b0
lea ecx, [ebp - 0x254]
call fcn.004021b0
lea ecx, [ebp - 0x270]
mov byte [ebp - 4], 9
call fcn.004021b0
mov edi, dword [ebp - 0x390]
lea ecx, [ebp - 0x298]
call fcn.00431240
lea ecx, [ebp - 0x3bc]
call 0x4093c0
lea ecx, [ebp - 0x2c0]
mov byte [ebp - 4], 7
call fcn.00431570
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 6
call fcn.00431570
lea ecx, [ebp - 0x3d8]
mov byte [ebp - 4], 5
call fcn.0043a1b0
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427e9c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427ebc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x39c]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427ee2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x426e18
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x394]
add eax, 0xfffffff0
jmp 0x4266e4