Function at 0x4233f0
Capabilities:
Check if file exists
Copy file
Enumerate files on windows
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54ca59
mov eax, dword fs:[0]
push eax
sub esp, 0x2d8
mov eax, dword [0x60c9c8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0043e2f8
xor ecx, ecx
xor edi, edi
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42343c
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x264], eax
push 0x408
mov dword [ebp - 4], edi
mov dword [ebp - 0x28c], edi
mov dword [ebp - 0x2b0], edi
mov dword [ebp - 0x2ac], 5
call fcn.0043e213
cmp eax, edi
je 0x42348a
push 0x408
push eax
lea ecx, [ebp - 0x264]
call fcn.00403150
cmp eax, edi
jne 0x423495
lea ecx, [ebp - 0x264]
call fcn.00402e90
mov ecx, esi
call fcn.00417d60
mov ecx, esi
call fcn.00418000
mov eax, dword [esi + 0x140]
cmp eax, edi
je 0x4234e6
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x4234e6
mov ecx, dword [esi + 0x140]
push edi
call fcn.00429060
mov eax, dword [esi + 0x140]
cmp eax, edi
jne 0x4234d5
xor eax, eax
jmp 0x4234d8
mov eax, dword [eax + 0x20]
push edi
push edi
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push 0
push str._InstallBeforeCall_
lea edx, [ebp - 0x29c]
push edx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x29c], 0
call fcn.004131e0
mov edi, eax
test edi, edi
je 0x4235e5
mov eax, dword [esi + 0x140]
test eax, eax
je 0x42355a
mov eax, dword [eax + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x42355a
mov ecx, dword [ebp - 0x264]
push ecx
mov ecx, dword [esi + 0x140]
call fcn.00429240
mov eax, dword [esi + 0x140]
test eax, eax
je 0x42354a
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov edx, dword [esi + 4]
mov ecx, dword [ebp - 0x29c]
push edx
push 0
lea eax, [ebp - 0x2b0]
push eax
push ecx
push edi
mov ecx, esi
call fcn.0041a200
cmp eax, 0x643
jne 0x4235c2
mov edx, dword [ebp - 0x29c]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
mov eax, dword [ebp - 0x264]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4235b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x4247be
cmp eax, 0xbc2
jne 0x4235d3
mov dword [ebp - 0x28c], 1
mov ecx, dword [ebp - 0x29c]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
mov eax, dword [esi + 0x140]
test eax, eax
je 0x423627
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x423627
mov ecx, dword [esi + 0x140]
push 5
call fcn.00429060
mov eax, dword [esi + 0x140]
test eax, eax
je 0x423617
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea eax, [ebp - 0x268]
push eax
lea ecx, [esi + 0x158]
call fcn.0040be40
push 1
lea ecx, [ebp - 0x270]
push ecx
lea ecx, [esi + 0x158]
mov byte [ebp - 4], 1
call fcn.0040e330
mov ecx, dword [ebp - 0x270]
xor eax, eax
test ecx, ecx
setne al
mov byte [ebp - 4], 2
test eax, eax
jne 0x423670
push 0x80004005
call fcn.00402a80
mov edi, dword [ebp - 0x268]
push ecx
push edi
call fcn.005321b4
add esp, 8
push 1
mov ecx, esi
test eax, eax
jne 0x42372d
mov edx, edi
push edx
call fcn.004197a0
push 0
lea eax, [ebp - 0x288]
push eax
lea ecx, [esi + 0x158]
call fcn.0040e330
mov edi, eax
lea ecx, [ebp - 0x278]
push ecx
lea ecx, [esi + 0x158]
mov byte [ebp - 4], 3
call fcn.0040be10
mov edi, dword [edi]
mov eax, dword [eax]
push edi
push eax
lea ecx, [esi + 0xd9b8]
mov byte [ebp - 4], 4
call fcn.0042dea0
mov eax, dword [ebp - 0x278]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4236fb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x288]
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 0x423721
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 0x26c], 1
jmp 0x42373d
push edi
call fcn.004197a0
mov dword [ebp - 0x26c], 0
lea ecx, [ebp - 0x274]
push ecx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x274], 0
call fcn.004126c0
mov edi, eax
mov dword [ebp - 0x278], edi
test edi, edi
je 0x423ed3
mov edx, dword [ebp - 0x268]
push edx
mov ecx, esi
call fcn.0041ec10
cmp dword [ebp - 0x26c], 0
je 0x423823
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x216]
push ecx
mov word [ebp - 0x218], ax
call fcn.00531fb0
add esp, 0xc
lea edx, [ebp - 0x288]
push edx
lea ecx, [esi + 0x158]
call fcn.0040be10
mov edi, eax
mov eax, dword [edi]
cmp dword [eax - 4], 1
mov byte [ebp - 4], 5
jle 0x4237cd
mov eax, dword [eax - 0xc]
push eax
mov ecx, edi
call fcn.00402d60
mov edi, dword [edi]
push edi
push str._sCanon
lea ecx, [ebp - 0x218]
push 0x104
push ecx
call fcn.00533b0b
mov eax, dword [ebp - 0x288]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42380f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x218]
push ecx
mov ecx, esi
call fcn.0041ec10
mov edi, dword [ebp - 0x278]
mov edx, dword [ebp - 0x274]
xor eax, eax
mov ecx, 5
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2c8], ecx
mov ecx, 0x55
mov dword [ebp - 0x2c4], eax
mov dword [ebp - 0x2c4], ecx
mov dword [ebp - 0x2dc], eax
mov dword [ebp - 0x2d8], eax
mov dword [ebp - 0x2d4], eax
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x2cc], eax
mov dword [ebp - 0x2c0], eax
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2d4], eax
mov dword [ebp - 0x2d8], edi
mov dword [ebp - 0x2d0], 5
mov dword [ebp - 0x2e0], edx
mov dword [ebp - 0x2dc], esi
mov dword [ebp - 0x2cc], eax
mov dword [ebp - 0x2c0], edi
call fcn.0040b2b0
test eax, eax
je 0x4238b4
mov dword [ebp - 0x2c0], eax
lea ecx, [esi + 0x158]
call fcn.0040b320
test eax, eax
je 0x4239ed
push 0xf1c
call fcn.00432a1f
add esp, 4
mov dword [ebp - 0x284], eax
mov byte [ebp - 4], 6
test eax, eax
je 0x4238f1
mov ecx, eax
call fcn.00405fd0
mov dword [ebp - 0x27c], eax
jmp 0x4238fb
mov dword [ebp - 0x27c], 0
lea eax, [ebp - 0x2e0]
push eax
push ecx
mov ecx, esp
mov dword [ebp - 0x284], esp
push ecx
lea ecx, [esi + 0x158]
mov byte [ebp - 4], 2
call fcn.00416300
push ecx
mov edx, esp
mov dword [ebp - 0x2b8], esp
push edx
lea ecx, [esi + 0x158]
mov byte [ebp - 4], 7
call fcn.0040c520
mov ecx, dword [ebp - 0x27c]
mov byte [ebp - 4], 2
call fcn.00406400
test eax, eax
jne 0x4239ae
mov eax, dword [ebp - 0x274]
push eax
lea ecx, [esi + 0x158]
call fcn.00409880
mov eax, dword [ebp - 0x270]
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 0x42397f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
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 0x42358f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x42358f
cmp dword [ebp - 0x27c], 0
je 0x4239d1
mov ecx, dword [ebp - 0x27c]
call fcn.00406010
mov ecx, dword [ebp - 0x27c]
push ecx
call fcn.00432a4e
add esp, 4
cmp dword [ebp - 0x2cc], 0
je 0x423cf8
mov dword [ebp - 0x28c], 1
jmp 0x423cf8
call fcn.0043e2f8
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x423a07
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x26c], eax
lea ecx, [ebp - 0x288]
push ecx
lea ecx, [esi + 0x158]
mov byte [ebp - 4], 8
call fcn.0040c520
mov edx, dword [eax]
push edx
lea eax, [ebp - 0x26c]
push str._s.cab
push eax
mov byte [ebp - 4], 9
call fcn.004047a0
mov eax, dword [ebp - 0x288]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423a70
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x26c]
lea ecx, [ebp - 0x260]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x284], eax
cmp eax, 0xffffffff
jne 0x423b1a
mov edx, dword [ebp - 0x274]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
lea eax, [edi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423ac5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x270]
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 0x423aeb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
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 0x42358f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x42358f
call fcn.0043e2f8
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x423b34
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x280], eax
mov byte [ebp - 4], 0xa
call fcn.0043e2f8
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x423b64
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x27c], eax
mov byte [ebp - 4], 0xb
lea ebx, [ebx]
lea ecx, [ebp - 0x2e4]
push ecx
lea ecx, [esi + 0x158]
call fcn.0040c520
mov eax, dword [eax]
lea edx, [ebp - 0x234]
push edx
push eax
lea ecx, [ebp - 0x280]
push 0x55d250
push ecx
mov byte [ebp - 4], 0xc
call fcn.004047a0
mov eax, dword [ebp - 0x2e4]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 0xb
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423bda
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x2b8]
push ecx
lea ecx, [esi + 0x158]
call fcn.00416300
mov eax, dword [eax]
lea edx, [ebp - 0x234]
push edx
push eax
lea ecx, [ebp - 0x27c]
push 0x55d250
push ecx
mov byte [ebp - 4], 0xd
call fcn.004047a0
mov eax, dword [ebp - 0x2b8]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 0xb
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423c34
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x27c]
mov ecx, dword [ebp - 0x280]
push 0
push edi
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov dword [ebp - 0x288], eax
test eax, eax
je 0x423c6f
lea edx, [ebp - 0x2e0]
push edx
push 0x423150
push 0
push edi
call dword [sym.imp.SETUPAPI.dll_SetupIterateCabinetW]
mov dword [ebp - 0x288], eax
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x423c8a
test al, 1
je 0x423c8a
and eax, 0xfffffffe
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
cmp dword [ebp - 0x288], 0
je 0x423d76
mov edi, dword [ebp - 0x284]
lea eax, [ebp - 0x260]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x423b80
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp - 0x2cc], 0
je 0x423ccd
mov dword [ebp - 0x28c], 1
lea ecx, [ebp - 0x27c]
call fcn.00402e70
lea ecx, [ebp - 0x280]
call fcn.00402e70
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 2
call fcn.00402e70
mov edi, dword [ebp - 0x278]
mov edx, dword [ebp - 0x274]
push edx
push edi
mov ecx, esi
call fcn.00417330
test eax, eax
jne 0x423dd4
mov eax, dword [ebp - 0x274]
push eax
lea ecx, [esi + 0x158]
call fcn.00409880
mov eax, dword [ebp - 0x270]
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 0x423d47
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
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 0x42358f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x42358f
mov ecx, dword [ebp - 0x274]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
lea ecx, [ebp - 0x27c]
call fcn.00402e70
lea ecx, [ebp - 0x280]
call fcn.00402e70
lea ecx, [ebp - 0x26c]
call fcn.00402e70
lea ecx, [ebp - 0x270]
call fcn.00402e70
lea ecx, [ebp - 0x268]
call fcn.00402e70
lea ecx, [ebp - 0x264]
call fcn.00402e70
mov eax, 0x643
jmp 0x4247be
lea ecx, [ebp - 0x294]
push ecx
lea ecx, [esi + 0x158]
call fcn.00411550
mov eax, dword [ebp - 0x294]
cmp dword [eax - 0xc], 0
mov byte [ebp - 4], 0xe
je 0x423e04
push 0
push eax
lea ecx, [esi + 0xd9b8]
call fcn.0042c670
mov edx, dword [ebp - 0x2d4]
mov eax, 0x55
push eax
mov eax, 5
push eax
mov eax, dword [ebp - 0x274]
push edx
push eax
push edi
mov ecx, esi
call fcn.00421c70
test eax, eax
je 0x423e3b
cmp eax, 0xbc2
jne 0x423e6b
mov dword [ebp - 0x28c], 1
mov edx, dword [ebp - 0x274]
push edx
push edi
mov ecx, esi
call fcn.0041d790
test eax, eax
je 0x423e88
mov eax, dword [ebp - 0x274]
push eax
lea ecx, [esi + 0x158]
call fcn.00409880
lea ecx, [ebp - 0x294]
jmp 0x423da4
mov ecx, dword [ebp - 0x274]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
lea ecx, [ebp - 0x294]
jmp 0x423da4
mov ecx, dword [ebp - 0x274]
push ecx
push edi
mov ecx, esi
call fcn.00415c30
lea ecx, [esi + 0x158]
test eax, eax
je 0x423eb8
mov edx, dword [ebp - 0x274]
push edx
call fcn.00409880
lea ecx, [ebp - 0x294]
jmp 0x423da4
mov eax, dword [ebp - 0x274]
push eax
call fcn.00409880
lea ecx, [ebp - 0x294]
mov byte [ebp - 4], 2
call fcn.00402e70
mov eax, dword [esi + 0x140]
test eax, eax
je 0x423f25
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x423f25
mov ecx, dword [esi + 0x140]
push 0x55
call fcn.00429060
mov ecx, dword [esi + 0x140]
push 0x55c8ac
call fcn.00429240
mov eax, dword [esi + 0x140]
test eax, eax
je 0x423f15
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea edx, [ebp - 0x290]
push edx
lea ecx, [esi + 0x158]
mov edi, 0x55
mov dword [ebp - 0x290], 0
call fcn.00414120
test eax, eax
je 0x423fe1
mov ecx, 0x5a
push ecx
mov ecx, dword [ebp - 0x290]
push edi
push ecx
push eax
mov ecx, esi
call fcn.0041dab0
test eax, eax
je 0x423fcf
mov edx, dword [ebp - 0x290]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
mov eax, dword [ebp - 0x270]
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 0x423fa0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
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 0x42358f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x42358f
mov ecx, dword [ebp - 0x290]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
mov ecx, esi
call fcn.0041ec30
mov ecx, esi
call fcn.0041f0c0
lea edx, [ebp - 0x2bc]
push edx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2bc], 0
call fcn.0040eac0
test eax, eax
je 0x42409f
mov ecx, dword [ebp - 0x2bc]
push ecx
push eax
mov ecx, esi
call fcn.004160e0
test eax, eax
je 0x42408d
mov edx, dword [ebp - 0x290]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
mov eax, dword [ebp - 0x270]
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 0x42405e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
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 0x42358f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x42358f
mov ecx, dword [ebp - 0x290]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2b0], 0x5a
call fcn.00409a00
test eax, eax
je 0x42415b
push 1
lea edx, [ebp - 0x26c]
push edx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x26c], 0
call fcn.004104e0
mov edi, eax
test edi, edi
je 0x42415b
lea eax, [ebp - 0x280]
push eax
lea ecx, [esi + 0x158]
call fcn.0040ed40
mov ecx, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x26c]
mov eax, 0x5f
push eax
mov eax, dword [ebp - 0x280]
push ecx
push edx
push edi
push eax
mov ecx, esi
mov byte [ebp - 4], 0xf
call fcn.0041e0b0
test eax, eax
je 0x42413a
mov ecx, dword [ebp - 0x26c]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
lea ecx, [ebp - 0x280]
jmp 0x423da4
mov edx, dword [ebp - 0x26c]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 2
call fcn.00402e70
lea ecx, [esi + 0x158]
call fcn.00409990
test eax, eax
je 0x424238
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x216]
push ecx
mov word [ebp - 0x218], ax
call fcn.00531fb0
add esp, 0xc
lea edx, [ebp - 0x284]
push edx
lea ecx, [esi + 0x158]
call fcn.0040be40
mov edi, eax
mov eax, dword [edi]
cmp dword [eax - 4], 1
mov byte [ebp - 4], 0x10
jle 0x4241b7
mov eax, dword [eax - 0xc]
push eax
mov ecx, edi
call fcn.00402d60
mov edi, dword [edi]
push edi
push str._suninst.isu
lea ecx, [ebp - 0x218]
push 0x104
push ecx
call fcn.00533b0b
mov eax, dword [ebp - 0x284]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4241f9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0
push 2
push 1
push 0
push 0
push 0x40000000
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
je 0x424221
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [ebp - 0x218]
push edx
push str.FILE
lea ecx, [esi + 0xd9b8]
call fcn.0042cc80
mov eax, dword [esi + 0x140]
test eax, eax
je 0x42427a
mov eax, dword [eax + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x42427a
mov ecx, dword [esi + 0x140]
push 0x5f
call fcn.00429060
mov eax, dword [esi + 0x140]
test eax, eax
je 0x42426a
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push 0
push str._InstallAfterCall_
lea ecx, [ebp - 0x2a0]
push ecx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2b0], 0x5f
mov dword [ebp - 0x2ac], 0x63
mov dword [ebp - 0x2a0], 0
call fcn.004131e0
mov edi, eax
test edi, edi
je 0x42435f
mov eax, dword [esi + 0x140]
test eax, eax
je 0x424302
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x424302
mov eax, dword [ebp - 0x264]
mov ecx, dword [esi + 0x140]
push eax
call fcn.00429240
mov eax, dword [esi + 0x140]
test eax, eax
je 0x4242f2
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [esi + 4]
mov eax, dword [ebp - 0x2a0]
push ecx
push 0
lea edx, [ebp - 0x2b0]
push edx
push eax
push edi
mov ecx, esi
call fcn.0041a200
cmp eax, 0x643
jne 0x42433c
mov ecx, dword [ebp - 0x2a0]
push ecx
lea ecx, [esi + 0x158]
call fcn.00409880
jmp 0x423da9
cmp eax, 0xbc2
jne 0x42434d
mov dword [ebp - 0x28c], 1
mov edx, dword [ebp - 0x2a0]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
push 1
push str._UninstallBeforeCall_
lea eax, [ebp - 0x2b4]
push eax
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2b4], 0
call fcn.004131e0
test eax, eax
je 0x4243eb
xor edi, edi
mov dword [ebp - 0x278], eax
mov edi, edi
mov ecx, dword [ebp - 0x2b4]
mov edx, dword [edi + ecx + 0xa14]
lea eax, [edi + ecx]
mov ecx, dword [eax + 0xa10]
push edx
mov edx, dword [eax + 0xa0c]
push 0
push ecx
mov ecx, dword [eax + 0xa08]
push edx
push ecx
lea edx, [eax + 0x208]
push edx
push eax
lea ecx, [esi + 0xd9b8]
call fcn.0042c870
add edi, 0xa18
dec dword [ebp - 0x278]
jne 0x424390
mov eax, dword [ebp - 0x2b4]
push eax
lea ecx, [esi + 0x158]
call fcn.00409880
push 1
push str._UninstallAfterCall_
lea ecx, [ebp - 0x2a8]
push ecx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2a8], 0
call fcn.004131e0
test eax, eax
je 0x42447b
xor edi, edi
mov dword [ebp - 0x278], eax
lea ebx, [ebx]
mov edx, dword [ebp - 0x2a8]
mov ecx, dword [edi + edx + 0xa14]
lea eax, [edi + edx]
mov edx, dword [eax + 0xa10]
push ecx
mov ecx, dword [eax + 0xa0c]
push 1
push edx
mov edx, dword [eax + 0xa08]
push ecx
push edx
lea ecx, [eax + 0x208]
push ecx
push eax
lea ecx, [esi + 0xd9b8]
call fcn.0042c870
add edi, 0xa18
dec dword [ebp - 0x278]
jne 0x424420
mov edx, dword [ebp - 0x2a8]
push edx
lea ecx, [esi + 0x158]
call fcn.00409880
mov ecx, esi
call fcn.0041a850
mov ecx, esi
call fcn.004169b0
push 0x5606f4
lea ecx, [esi + 0x158]
call fcn.00409fb0
lea edi, [esi + 0xd9b8]
mov ecx, edi
test eax, eax
je 0x4244ac
push 0x55f78c
jmp 0x4244b1
push 0x5606f0
push str.SMEXUpdate
call fcn.0042cc80
push 0x5606f4
lea ecx, [esi + 0x158]
call fcn.0040a010
mov ecx, edi
test eax, eax
je 0x4244d8
push 0x55f78c
jmp 0x4244dd
push 0x5606f0
push str.QMUpdate
call fcn.0042cc80
mov ecx, esi
call fcn.00415e70
mov ecx, esi
call fcn.00415f00
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebp - 0x2a4]
xor edi, edi
push ecx
lea ecx, [esi + 0x158]
mov dword [ebp - 0x2a4], edi
mov dword [ebp - 0x298], edi
call fcn.0040ae90
cmp eax, edi
je 0x424640
mov eax, dword [ebp - 0x2a4]
cmp eax, edi
jbe 0x424640
mov dword [ebp - 0x278], edi
mov dword [ebp - 0x26c], edi
mov edi, edi
mov eax, dword [ebp - 0x26c]
add eax, dword [ebp - 0x298]
push ecx
mov ecx, esp
mov dword [ebp - 0x284], esp
push eax
call fcn.00405b90
mov ecx, esi
call fcn.0041e4e0
mov edi, eax
test edi, edi
je 0x424609
cmp dword [edi + 4], 0
je 0x4245f8
cmp dword [edi + 8], 0
je 0x4245f8
mov eax, dword [ebp - 0x26c]
add eax, dword [ebp - 0x298]
lea ecx, [eax + 0x208]
push ecx
push eax
mov ecx, esi
call fcn.00420860
cmp eax, 1
jne 0x4245a8
mov dword [ebp - 0x28c], eax
jmp 0x4245b0
test eax, eax
jne 0x4246bb
mov ecx, edi
call fcn.0040bb10
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
mov eax, dword [esi + 0x140]
test eax, eax
je 0x424609
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x424609
mov eax, dword [esi + 0x140]
test eax, eax
je 0x4245e6
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x424609
mov ecx, edi
call fcn.0040bb10
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
mov eax, dword [ebp - 0x278]
add dword [ebp - 0x26c], 0x26c
inc eax
mov dword [ebp - 0x278], eax
cmp eax, dword [ebp - 0x2a4]
jb 0x424540
mov ecx, dword [ebp - 0x298]
push ecx
lea ecx, [esi + 0x158]
xor edi, edi
call fcn.00409880
lea edx, [ebp - 0x284]
push edx
lea ecx, [esi + 0x158]
call fcn.0040ce80
mov eax, dword [eax]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x11
call fcn.004158e0
mov eax, dword [ebp - 0x284]
add eax, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424688
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 0x140]
cmp eax, edi
je 0x4246e2
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x4246e2
mov ecx, dword [esi + 0x140]
push 0x64
call fcn.00429060
mov esi, dword [esi + 0x140]
cmp esi, edi
jne 0x4246d1
xor eax, eax
jmp 0x4246d4
mov ecx, edi
call fcn.0040bb10
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
jmp 0x423da9
mov eax, dword [esi + 0x20]
push edi
push edi
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x270]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
cmp dword [ebp - 0x28c], edi
je 0x42475d
lea edx, [eax + 0xc]
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42470f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424734
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x264]
add eax, 0xfffffff0
mov dword [ebp - 4], ebx
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebx
dec ebx
test ebx, ebx
jg 0x424756
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xbc2
jmp 0x4247be
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424775
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42479a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x264]
add eax, 0xfffffff0
mov dword [ebp - 4], ebx
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebx
dec ebx
test ebx, ebx
jg 0x4247bc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
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.00531f97
mov esp, ebp
pop ebp
ret