Function at 0x41ead0
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 0x54681e
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0x5ec938]
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
xor edi, edi
mov esi, ecx
mov dword [ebp - 0x288], edi
mov dword [ebp - 0x2ac], edi
mov dword [ebp - 0x2a8], 5
call fcn.004153b0
mov ecx, esi
call fcn.00415650
mov eax, dword [esi + 0x130]
cmp eax, edi
je 0x41eb67
mov eax, dword [eax + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41eb67
mov ecx, dword [esi + 0x130]
push edi
call fcn.00423c40
mov eax, dword [esi + 0x130]
cmp eax, edi
jne 0x41eb56
xor eax, eax
jmp 0x41eb59
mov eax, dword [eax + 0x20]
push edi
push edi
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push edi
push str._InstallBeforeCall_
lea ecx, [ebp - 0x298]
push ecx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x298], edi
call fcn.00410910
cmp eax, edi
jbe 0x41ebea
mov edx, dword [esi + 4]
push edx
mov edx, dword [ebp - 0x298]
push edi
lea ecx, [ebp - 0x2ac]
push ecx
push edx
push eax
mov ecx, esi
call fcn.00417460
cmp eax, 0x643
jne 0x41ebc7
mov eax, dword [ebp - 0x298]
push eax
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov eax, 0x643
jmp 0x41fd99
cmp eax, 0xbc2
jne 0x41ebd8
mov dword [ebp - 0x288], 1
mov ecx, dword [ebp - 0x298]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov eax, dword [esi + 0x130]
cmp eax, edi
je 0x41ec2e
mov edx, dword [eax + 0x20]
push edx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41ec2e
mov ecx, dword [esi + 0x130]
push 5
call fcn.00423c40
mov eax, dword [esi + 0x130]
cmp eax, edi
jne 0x41ec1d
xor eax, eax
jmp 0x41ec20
mov eax, dword [eax + 0x20]
push edi
push edi
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea eax, [ebp - 0x264]
push eax
lea ecx, [esi + 0x148]
call fcn.00409a70
push 1
lea ecx, [ebp - 0x26c]
push ecx
lea ecx, [esi + 0x148]
mov dword [ebp - 4], edi
call fcn.0040b8d0
mov ecx, dword [ebp - 0x26c]
xor eax, eax
cmp ecx, edi
setne al
mov byte [ebp - 4], 1
cmp eax, edi
jne 0x41ec76
push 0x80004005
call fcn.00401ed0
mov edi, dword [ebp - 0x264]
push ecx
push edi
call fcn.0052d87b
add esp, 8
push 1
mov ecx, esi
test eax, eax
jne 0x41ed33
mov edx, edi
push edx
call fcn.00416c10
push 0
lea eax, [ebp - 0x284]
push eax
lea ecx, [esi + 0x148]
call fcn.0040b8d0
mov edi, eax
lea ecx, [ebp - 0x274]
push ecx
lea ecx, [esi + 0x148]
mov byte [ebp - 4], 2
call fcn.00409a40
mov edi, dword [edi]
mov eax, dword [eax]
push edi
push eax
lea ecx, [esi + 0xdd9c]
mov byte [ebp - 4], 3
call fcn.00428060
mov eax, dword [ebp - 0x274]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41ed01
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x284]
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 0x41ed27
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 0x268], 1
jmp 0x41ed43
push edi
call fcn.00416c10
mov dword [ebp - 0x268], 0
lea ecx, [ebp - 0x270]
push ecx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x270], 0
call fcn.0040ff20
mov edi, eax
mov dword [ebp - 0x274], edi
test edi, edi
je 0x41f4e0
mov edx, dword [ebp - 0x264]
push edx
mov ecx, esi
call fcn.0041ba10
cmp dword [ebp - 0x268], 0
je 0x41ee29
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x216]
push ecx
mov word [ebp - 0x218], ax
call fcn.0052c850
add esp, 0xc
lea edx, [ebp - 0x284]
push edx
lea ecx, [esi + 0x148]
call fcn.00409a40
mov edi, eax
mov eax, dword [edi]
cmp dword [eax - 4], 1
mov byte [ebp - 4], 4
jle 0x41edd3
mov eax, dword [eax - 0xc]
push eax
mov ecx, edi
call fcn.004021c0
mov edi, dword [edi]
push edi
push str._sCanon
lea ecx, [ebp - 0x218]
push 0x104
push ecx
call fcn.0052d99b
mov eax, dword [ebp - 0x284]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41ee15
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.0041ba10
mov edi, dword [ebp - 0x274]
mov edx, dword [ebp - 0x270]
xor eax, eax
mov ecx, 5
mov dword [ebp - 0x2c4], eax
mov dword [ebp - 0x2c4], ecx
mov ecx, 0x55
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2c0], ecx
mov dword [ebp - 0x2d8], eax
mov dword [ebp - 0x2d4], eax
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x2cc], eax
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2bc], eax
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x2d4], edi
mov dword [ebp - 0x2cc], 5
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x2d8], esi
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2bc], edi
call fcn.00409490
test eax, eax
je 0x41eeba
mov dword [ebp - 0x2bc], eax
lea ecx, [esi + 0x148]
call fcn.00409500
test eax, eax
je 0x41eff7
push 0xf1c
call fcn.0042c875
add esp, 4
mov dword [ebp - 0x27c], eax
mov byte [ebp - 4], 5
test eax, eax
je 0x41eef7
mov ecx, eax
call fcn.00405420
mov dword [ebp - 0x278], eax
jmp 0x41ef01
mov dword [ebp - 0x278], 0
lea eax, [ebp - 0x2dc]
push eax
push ecx
mov ecx, esp
mov dword [ebp - 0x27c], esp
push ecx
lea ecx, [esi + 0x148]
mov byte [ebp - 4], 1
call fcn.00413df0
push ecx
mov edx, esp
mov dword [ebp - 0x2b4], esp
push edx
lea ecx, [esi + 0x148]
mov byte [ebp - 4], 6
call fcn.0040a010
mov ecx, dword [ebp - 0x278]
mov byte [ebp - 4], 1
call fcn.00405850
test eax, eax
jne 0x41efb8
mov eax, dword [ebp - 0x270]
push eax
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov eax, dword [ebp - 0x26c]
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 0x41ef85
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], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41efae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x41fd99
cmp dword [ebp - 0x278], 0
je 0x41efdb
mov ecx, dword [ebp - 0x278]
call fcn.00405460
mov ecx, dword [ebp - 0x278]
push ecx
call fcn.0042c8af
add esp, 4
cmp dword [ebp - 0x2c8], 0
je 0x41f308
mov dword [ebp - 0x288], 1
jmp 0x41f308
call fcn.00436219
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x41f011
push 0x80004005
call fcn.00401ed0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x268], eax
lea ecx, [ebp - 0x284]
push ecx
lea ecx, [esi + 0x148]
mov byte [ebp - 4], 7
call fcn.0040a010
mov edx, dword [eax]
push edx
lea eax, [ebp - 0x268]
push str._s.cab
push eax
mov byte [ebp - 4], 8
call fcn.00403bf0
mov eax, dword [ebp - 0x284]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41f07a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x268]
lea ecx, [ebp - 0x260]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x27c], eax
cmp eax, 0xffffffff
jne 0x41f12c
mov edx, dword [ebp - 0x270]
push edx
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea eax, [edi - 0x10]
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41f0cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x26c]
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 0x41f0f5
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], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41efae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x41fd99
call fcn.00436219
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x41f146
push 0x80004005
call fcn.00401ed0
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], 9
call fcn.00436219
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x41f176
push 0x80004005
call fcn.00401ed0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x278], eax
mov byte [ebp - 4], 0xa
lea esp, [esp]
lea ecx, [ebp - 0x2e0]
push ecx
lea ecx, [esi + 0x148]
call fcn.0040a010
mov eax, dword [eax]
lea edx, [ebp - 0x234]
push edx
push eax
lea ecx, [ebp - 0x280]
push str._s_s
push ecx
mov byte [ebp - 4], 0xb
call fcn.00403bf0
mov eax, dword [ebp - 0x2e0]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 0xa
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41f1ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x2b4]
push ecx
lea ecx, [esi + 0x148]
call fcn.00413df0
mov eax, dword [eax]
lea edx, [ebp - 0x234]
push edx
push eax
lea ecx, [ebp - 0x278]
push str._s_s
push ecx
mov byte [ebp - 4], 0xc
call fcn.00403bf0
mov eax, dword [ebp - 0x2b4]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 0xa
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41f244
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x278]
mov ecx, dword [ebp - 0x280]
push 0
push edi
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov dword [ebp - 0x284], eax
test eax, eax
je 0x41f27f
lea edx, [ebp - 0x2dc]
push edx
push 0x41e970
push 0
push edi
call dword [sym.imp.SETUPAPI.dll_SetupIterateCabinetW]
mov dword [ebp - 0x284], eax
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x41f29a
test al, 1
je 0x41f29a
and eax, 0xfffffffe
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
cmp dword [ebp - 0x284], 0
je 0x41f38e
mov edi, dword [ebp - 0x27c]
lea eax, [ebp - 0x260]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x41f190
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp - 0x2c8], 0
je 0x41f2dd
mov dword [ebp - 0x288], 1
lea ecx, [ebp - 0x278]
call fcn.00402480
lea ecx, [ebp - 0x280]
call fcn.00402480
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 1
call fcn.00402480
mov edi, dword [ebp - 0x274]
mov edx, dword [ebp - 0x270]
push edx
push edi
mov ecx, esi
call fcn.00414b60
test eax, eax
jne 0x41f3e1
mov eax, dword [ebp - 0x270]
push eax
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov eax, dword [ebp - 0x26c]
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 0x41f357
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], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41efae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x41fd99
mov ecx, dword [ebp - 0x270]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea ecx, [ebp - 0x278]
call fcn.00402480
lea ecx, [ebp - 0x280]
call fcn.00402480
lea ecx, [ebp - 0x268]
call fcn.00402480
lea ecx, [ebp - 0x26c]
call fcn.00402480
lea ecx, [ebp - 0x264]
call fcn.00402480
mov eax, 0x643
jmp 0x41fd99
lea ecx, [ebp - 0x290]
push ecx
lea ecx, [esi + 0x148]
call fcn.0040eec0
mov eax, dword [ebp - 0x290]
cmp dword [eax - 0xc], 0
mov byte [ebp - 4], 0xd
je 0x41f411
push 0
push eax
lea ecx, [esi + 0xdd9c]
call fcn.004269f0
mov edx, dword [ebp - 0x2d0]
mov eax, 0x55
push eax
mov eax, 5
push eax
mov eax, dword [ebp - 0x270]
push edx
push eax
push edi
mov ecx, esi
call fcn.0041df90
test eax, eax
je 0x41f448
cmp eax, 0xbc2
jne 0x41f478
mov dword [ebp - 0x288], 1
mov edx, dword [ebp - 0x270]
push edx
push edi
mov ecx, esi
call fcn.0041a590
test eax, eax
je 0x41f495
mov eax, dword [ebp - 0x270]
push eax
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea ecx, [ebp - 0x290]
jmp 0x41f3bc
mov ecx, dword [ebp - 0x270]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea ecx, [ebp - 0x290]
jmp 0x41f3bc
mov ecx, dword [ebp - 0x270]
push ecx
push edi
mov ecx, esi
call fcn.00413310
lea ecx, [esi + 0x148]
test eax, eax
je 0x41f4c5
mov edx, dword [ebp - 0x270]
push edx
call fcn.00407bf0
lea ecx, [ebp - 0x290]
jmp 0x41f3bc
mov eax, dword [ebp - 0x270]
push eax
call fcn.00407bf0
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 1
call fcn.00402480
mov eax, dword [esi + 0x130]
test eax, eax
je 0x41f532
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41f532
mov ecx, dword [esi + 0x130]
push 0x55
call fcn.00423c40
mov ecx, dword [esi + 0x130]
push 0x556794
call fcn.00423e20
mov eax, dword [esi + 0x130]
test eax, eax
je 0x41f522
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea edx, [ebp - 0x28c]
push edx
lea ecx, [esi + 0x148]
mov edi, 0x55
mov dword [ebp - 0x28c], 0
call fcn.00411850
test eax, eax
je 0x41f5f6
mov ecx, 0x5a
push ecx
mov ecx, dword [ebp - 0x28c]
push edi
push ecx
push eax
mov ecx, esi
call fcn.0041a8b0
test eax, eax
je 0x41f5e4
mov edx, dword [ebp - 0x28c]
push edx
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov eax, dword [ebp - 0x26c]
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 0x41f5ad
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], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41efae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x41fd99
mov ecx, dword [ebp - 0x28c]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov ecx, esi
call fcn.0041ba30
lea edx, [ebp - 0x2b8]
push edx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2b8], 0
call fcn.0040c0a0
test eax, eax
je 0x41f6b5
mov ecx, dword [ebp - 0x2b8]
push ecx
push eax
mov ecx, esi
call fcn.00413780
test eax, eax
je 0x41f6a3
mov edx, dword [ebp - 0x28c]
push edx
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov eax, dword [ebp - 0x26c]
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 0x41f66c
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], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41efae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x41fd99
mov ecx, dword [ebp - 0x28c]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2ac], 0x5a
call fcn.00407d70
test eax, eax
je 0x41f775
push 1
lea edx, [ebp - 0x268]
push edx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x268], 0
call fcn.0040da30
mov edi, eax
test edi, edi
je 0x41f775
lea eax, [ebp - 0x280]
push eax
lea ecx, [esi + 0x148]
call fcn.0040c3d0
mov ecx, dword [ebp - 0x2ac]
mov edx, dword [ebp - 0x268]
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], 0xe
call fcn.0041aeb0
test eax, eax
je 0x41f754
mov ecx, dword [ebp - 0x268]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea ecx, [ebp - 0x280]
jmp 0x41f3bc
mov edx, dword [ebp - 0x268]
push edx
lea ecx, [esi + 0x148]
call fcn.00407bf0
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 1
call fcn.00402480
lea ecx, [esi + 0x148]
call fcn.00407d00
test eax, eax
je 0x41f852
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x216]
push ecx
mov word [ebp - 0x218], ax
call fcn.0052c850
add esp, 0xc
lea edx, [ebp - 0x27c]
push edx
lea ecx, [esi + 0x148]
call fcn.00409a70
mov edi, eax
mov eax, dword [edi]
cmp dword [eax - 4], 1
mov byte [ebp - 4], 0xf
jle 0x41f7d1
mov eax, dword [eax - 0xc]
push eax
mov ecx, edi
call fcn.004021c0
mov edi, dword [edi]
push edi
push str._suninst.isu
lea ecx, [ebp - 0x218]
push 0x104
push ecx
call fcn.0052d99b
mov eax, dword [ebp - 0x27c]
add eax, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41f813
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 0x41f83b
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [ebp - 0x218]
push edx
push str.FILE
lea ecx, [esi + 0xdd9c]
call fcn.00427000
mov eax, dword [esi + 0x130]
xor edi, edi
cmp eax, edi
je 0x41f898
mov eax, dword [eax + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41f898
mov ecx, dword [esi + 0x130]
push 0x5f
call fcn.00423c40
mov eax, dword [esi + 0x130]
cmp eax, edi
jne 0x41f887
xor eax, eax
jmp 0x41f88a
mov eax, dword [eax + 0x20]
push edi
push edi
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push edi
push str._InstallAfterCall_
lea ecx, [ebp - 0x29c]
push ecx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2ac], 0x5f
mov dword [ebp - 0x2a8], 0x63
mov dword [ebp - 0x29c], edi
call fcn.00410910
cmp eax, edi
jbe 0x41f92a
mov edx, dword [esi + 4]
push edx
mov edx, dword [ebp - 0x29c]
push edi
lea ecx, [ebp - 0x2ac]
push ecx
push edx
push eax
mov ecx, esi
call fcn.00417460
cmp eax, 0x643
jne 0x41f907
mov eax, dword [ebp - 0x29c]
push eax
lea ecx, [esi + 0x148]
call fcn.00407bf0
jmp 0x41f3c1
cmp eax, 0xbc2
jne 0x41f918
mov dword [ebp - 0x288], 1
mov ecx, dword [ebp - 0x29c]
push ecx
lea ecx, [esi + 0x148]
call fcn.00407bf0
push 1
push str._UninstallBeforeCall_
lea edx, [ebp - 0x2b0]
push edx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2b0], edi
call fcn.00410910
cmp eax, edi
jbe 0x41f9bb
xor edi, edi
mov dword [ebp - 0x274], eax
jmp 0x41f960
mov eax, dword [ebp - 0x2b0]
mov ecx, dword [eax + edi + 0x41c]
mov edx, dword [eax + edi + 0x418]
add eax, edi
push ecx
mov ecx, dword [eax + 0x414]
push 0
push edx
mov edx, dword [eax + 0x410]
push ecx
push edx
lea ecx, [eax + 0x208]
push ecx
push eax
lea ecx, [esi + 0xdd9c]
call fcn.00426bf0
add edi, 0x420
dec dword [ebp - 0x274]
jne 0x41f960
mov edx, dword [ebp - 0x2b0]
push edx
lea ecx, [esi + 0x148]
call fcn.00407bf0
push 1
push str._UninstallAfterCall_
lea eax, [ebp - 0x2a4]
push eax
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2a4], 0
call fcn.00410910
test eax, eax
je 0x41fa4b
xor edi, edi
mov dword [ebp - 0x274], eax
lea ebx, [ebx]
mov ecx, dword [ebp - 0x2a4]
mov edx, dword [edi + ecx + 0x41c]
lea eax, [edi + ecx]
mov ecx, dword [eax + 0x418]
push edx
mov edx, dword [eax + 0x414]
push 1
push ecx
mov ecx, dword [eax + 0x410]
push edx
push ecx
lea edx, [eax + 0x208]
push edx
push eax
lea ecx, [esi + 0xdd9c]
call fcn.00426bf0
add edi, 0x420
dec dword [ebp - 0x274]
jne 0x41f9f0
mov eax, dword [ebp - 0x2a4]
push eax
lea ecx, [esi + 0x148]
call fcn.00407bf0
mov ecx, esi
call fcn.00417810
mov ecx, esi
call fcn.00414500
push 0x5599b8
lea ecx, [esi + 0x148]
call fcn.00408320
lea edi, [esi + 0xdd9c]
mov ecx, edi
test eax, eax
je 0x41fa7c
push 0x558ab4
jmp 0x41fa81
push 0x5599b4
push str.SMEXUpdate
call fcn.00427000
push 0x5599b8
lea ecx, [esi + 0x148]
call fcn.00408380
mov ecx, edi
test eax, eax
je 0x41faa8
push 0x558ab4
jmp 0x41faad
push 0x5599b4
push str.QMUpdate
call fcn.00427000
mov ecx, esi
call fcn.00413550
mov ecx, esi
call fcn.004135e0
lea ecx, [ebp - 0x294]
push ecx
lea edx, [ebp - 0x2a0]
xor edi, edi
push edx
lea ecx, [esi + 0x148]
mov dword [ebp - 0x2a0], edi
mov dword [ebp - 0x294], edi
call fcn.00409070
cmp eax, edi
je 0x41fc05
mov eax, dword [ebp - 0x2a0]
cmp eax, edi
jbe 0x41fc05
mov dword [ebp - 0x274], edi
mov dword [ebp - 0x268], edi
mov edi, edi
mov ecx, dword [ebp - 0x268]
mov eax, dword [ebp - 0x294]
push ecx
lea edx, [ecx + eax]
mov ecx, esp
mov dword [ebp - 0x27c], esp
push edx
call fcn.00404fe0
mov ecx, esi
call fcn.0041b2e0
mov edi, eax
test edi, edi
je 0x41fbce
cmp dword [edi + 4], 0
jne 0x41fb58
mov ecx, edi
call fcn.00409760
mov eax, dword [edi]
mov edx, dword [eax]
push 1
mov ecx, edi
call edx
jmp 0x41fbce
mov eax, dword [ebp - 0x294]
add eax, dword [ebp - 0x268]
mov ecx, esi
lea edx, [eax + 0x208]
push edx
push eax
call fcn.0041cd00
cmp eax, 1
jne 0x41fb80
mov dword [ebp - 0x288], eax
jmp 0x41fb88
test eax, eax
jne 0x41fc88
mov ecx, edi
call fcn.00409760
mov eax, dword [edi]
mov edx, dword [eax]
push 1
mov ecx, edi
call edx
mov eax, dword [esi + 0x130]
test eax, eax
je 0x41fbce
mov eax, dword [eax + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41fbce
mov eax, dword [esi + 0x130]
test eax, eax
je 0x41fbbe
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x274]
add dword [ebp - 0x268], 0x26c
inc eax
mov dword [ebp - 0x274], eax
cmp eax, dword [ebp - 0x2a0]
jb 0x41fb10
mov ecx, dword [ebp - 0x294]
push ecx
lea ecx, [esi + 0x148]
xor edi, edi
call fcn.00407bf0
lea edx, [ebp - 0x27c]
push edx
lea ecx, [esi + 0x148]
call fcn.0040a970
mov eax, dword [eax]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x10
call fcn.00412ee0
mov eax, dword [ebp - 0x27c]
add eax, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41fc4d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 0x130]
cmp eax, edi
je 0x41fd07
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41fd07
mov ecx, dword [esi + 0x130]
push 0x64
call fcn.00423c40
mov esi, dword [esi + 0x130]
cmp esi, edi
jne 0x41fcf6
xor eax, eax
jmp 0x41fcf9
mov ecx, edi
call fcn.00409760
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
mov eax, dword [ebp - 0x26c]
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 0x41fcbf
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], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41efae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x643
jmp 0x41fd99
mov eax, dword [esi + 0x20]
push edi
push edi
push 0x8001
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x26c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
cmp dword [ebp - 0x288], edi
je 0x41fd5d
lea edx, [eax + 0xc]
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41fd34
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 0x41fd56
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xbc2
jmp 0x41fd99
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41fd75
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 0x41fd97
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.0052c2ec
mov esp, ebp
pop ebp
ret