Function at 0x409b20
Capabilities:
Check if file exists
Delete file
Get disk information
Get disk size
Get file attributes
Get file size

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43d26b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x938
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [0x4574c0]
mov dword [ebp - 0x84c], eax
mov eax, dword [0x4574c8]
push 0x100
mov dword [ebp - 0x860], eax
lea eax, [ebp - 0x598]
push 0
push eax
call fcn.0042a4e0
add esp, 0xc
lea eax, [ebp - 0x498]
push 0x324
push 0
push eax
call fcn.0042a4e0
add esp, 0xc
mov dword [ebp - 0x20], 0
lea eax, [ebp - 0x830]
xorps xmm0, xmm0
movups xmmword [ebp - 0x30], xmm0
push 0x298
push 0
push eax
call fcn.0042a4e0
mov ax, word [0x4574e0]
add esp, 0xc
mov esi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
xorps xmm0, xmm0
mov word [ebp - 0x1c], ax
xor eax, eax
movq qword [ebp - 0x144], xmm0
push 0x30636
push eax
push dword [0x45764c]
mov dword [ebp - 0x13c], 0
mov dword [ebp - 0x874], 0x20
mov dword [ebp - 0x85c], 0
mov dword [ebp - 0x864], 0
movq qword [ebp - 0x888], xmm0
mov dword [ebp - 0x1a], 0x5c003a
mov word [ebp - 0x16], ax
mov dword [ebp - 0x854], eax
mov dword [ebp - 0x87c], eax
movq qword [ebp - 0x934], xmm0
movups xmmword [ebp - 0x170], xmm0
mov dword [ebp - 0x918], eax
movups xmmword [ebp - 0x160], xmm0
mov dword [ebp - 0x900], eax
movq qword [ebp - 0x150], xmm0
movq qword [ebp - 0x90c], xmm0
movq qword [ebp - 0x948], xmm0
movq qword [ebp - 0x940], xmm0
mov dword [ebp - 0x91c], eax
mov dword [ebp - 0x920], eax
mov byte [ebp - 0x84e], al
mov byte [ebp - 0x84f], al
call esi
mov edi, eax
mov dword [ebp - 0x83c], edi
test edi, edi
je 0x409cc6
push 0x80
push 0
push dword [0x45764c]
call esi
mov dword [ebp - 0x814], eax
test eax, eax
jne 0x409cd7
push edi
push eax
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [0x45771c], 8
xor eax, eax
jmp 0x40b354
lea eax, [edi + 0x10212]
mov dword [ebp - 0x904], edi
mov dword [ebp - 0x914], eax
lea eax, [edi + 0x20424]
mov dword [ebp - 0x910], eax
lea eax, [ebp - 0x92c]
push eax
push 0x104
push 0x457720
push 0x400
push 0
push dword [0x45631c]
mov dword [ebp - 0x92c], str.CabTool
push 0x2400
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
sub esp, 8
lea ecx, [ebp - 0x8f8]
push 0x457720
push dword [0x45633c]
sub esp, 8
push 0x457720
call fcn.00402d80
lea ecx, [ebp - 0x8f8]
mov dword [ebp - 4], 0
call fcn.00402fd0
push 0x4037c0
push 0xfa
push 0x65
push dword [ebp - 0x8f0]
lea eax, [ebp - 0x8f8]
mov dword [0x45754c], eax
mov dword [ebp - 0x49c], eax
call dword [sym.imp.USER32.dll_SetTimer]
movzx ecx, byte [ebp - 0x8ba]
test eax, eax
lea eax, [ebp - 0x878]
mov dword [ebp - 0x878], 0
mov edx, 1
mov dword [ebp - 0x8fc], 0
push eax
cmovne ecx, edx
push 0x2000e
mov byte [ebp - 0x8ba], cl
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x409df3
lea eax, [ebp - 0x8fc]
push eax
push 2
push dword [ebp - 0x878]
call dword [sym.imp.ADVAPI32.dll_DuplicateToken]
push dword [ebp - 0x878]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x8fc]
mov edi, dword [ebp - 0x814]
mov dword [ebp - 0x810], eax
mov eax, 1
mov dword [ebp - 0x820], 0xffffffff
mov dword [ebp - 0x81c], 0xffffffff
mov dword [0x45771c], 0
mov dword [ebp - 0x858], eax
mov dword [ebp - 0x848], edi
mov dword [ebp - 0x838], edi
cmp dword [ebp - 0x84c], eax
jbe 0x40a65c
mov ecx, dword [ebp - 0x860]
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x8f4]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
test eax, eax
jne 0x40a61b
mov eax, dword [ebp - 0x874]
cmp dword [ebp - 0x818], eax
jne 0x409eb3
add eax, eax
mov dword [ebp - 0x874], eax
shl eax, 2
push eax
push dword [ebp - 0x814]
push 0
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov ecx, eax
test ecx, ecx
je 0x40a65c
mov eax, dword [ebp - 0x818]
mov dword [ebp - 0x814], ecx
lea eax, [eax + eax*2]
lea edi, [ecx + eax*8]
mov dword [ebp - 0x848], edi
mov dword [ebp - 0x838], edi
cmp word [esi], 0x2f
jne 0x409f18
movzx eax, word [esi + 2]
cmp eax, 0x43
je 0x409ec7
cmp eax, 0x63
jne 0x409ee0
movzx ecx, word [esi + 4]
cmp ecx, 0x54
je 0x409ed5
cmp ecx, 0x74
jne 0x409ee0
cmp word [esi + 6], 0
je 0x40a577
cmp eax, 0x41
je 0x409eee
cmp eax, 0x61
jne 0x409fa1
movzx ecx, word [esi + 4]
cmp ecx, 0x52
je 0x409f00
cmp ecx, 0x72
jne 0x409fa1
cmp word [esi + 6], 0
jne 0x409fa1
cmp dword [0x4574d4], 0
je 0x40b372
push ecx
lea eax, [ebp - 0x864]
mov ecx, esi
push eax
lea edx, [ebp - 0x83c]
call fcn.00404830
add esp, 8
test al, al
je 0x40a577
mov ax, word [0x457638]
mov ecx, dword [ebp - 0x83c]
push 0
push 0x2000080
push 3
mov word [edi + 0xe], ax
mov eax, dword [ebp - 0x864]
push 0
push 7
sub eax, ecx
push 0x120089
sar eax, 1
push ecx
mov word [edi + 0xc], ax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0x840], esi
cmp esi, 0xffffffff
jne 0x40a150
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
jne 0x40a577
cmp dword [0x4574d4], 0
je 0x40b372
jmp 0x40a577
cmp eax, 0x41
je 0x409faf
cmp eax, 0x61
jne 0x409f18
cmp word [esi + 4], 0x3d
jne 0x409f18
lea ecx, [esi + 6]
mov byte [ebp - 0x831], 0
xorps xmm0, xmm0
movlpd qword [ebp - 0x870], xmm0
test ecx, ecx
je 0x40a13b
movzx eax, word [ecx]
test ax, ax
je 0x40a13b
cmp ax, 9
je 0x40a093
cmp ax, 0x20
je 0x40a093
cmp ax, 0xd
je 0x40a093
cmp ax, 0xa
je 0x40a093
mov edx, 0xa0
cmp ax, dx
je 0x40a093
cmp ax, 0xc
je 0x40a093
cmp ax, 0xb
je 0x40a093
mov edx, 0x85
cmp ax, dx
je 0x40a093
mov edx, 0x2028
cmp ax, dx
je 0x40a093
mov edx, 0x2029
cmp ax, dx
je 0x40a093
mov edx, 0x202f
cmp ax, dx
je 0x40a093
mov edx, 0x1680
cmp ax, dx
je 0x40a093
mov edx, 0x180e
cmp ax, dx
je 0x40a093
mov edx, 0x1fff
cmp ax, dx
jbe 0x40a075
mov edx, 0x200c
cmp ax, dx
jb 0x40a093
mov edx, 0x3000
cmp ax, dx
je 0x40a093
mov edx, 0xfeff
cmp ax, dx
je 0x40a093
mov edx, 0x205f
cmp ax, dx
jne 0x40a09f
movzx eax, word [ecx + 2]
add ecx, 2
jmp 0x409fe3
mov dword [ebp - 0x840], ecx
cmp ax, 0x2b
je 0x40a0bb
movzx edx, ax
cmp ax, 0x2d
jne 0x40a0c8
mov byte [ebp - 0x831], 1
movzx edx, word [ecx + 2]
add ecx, 2
mov dword [ebp - 0x840], ecx
mov esi, dword [ebp - 0x870]
cmp dx, 0x30
jb 0x40a122
mov edi, dword [ebp - 0x86c]
movzx edx, dx
nop dword [eax]
cmp dx, 0x39
ja 0x40a122
mov eax, esi
mov ecx, edi
shld ecx, eax, 2
shl eax, 2
add esi, eax
movzx eax, dx
cdq
adc edi, ecx
shld edi, esi, 1
add esi, esi
add esi, eax
mov eax, dword [ebp - 0x840]
adc edi, edx
sub esi, 0x30
sbb edi, 0
add eax, 2
mov dword [ebp - 0x840], eax
movzx eax, word [eax]
mov edx, eax
cmp eax, 0x30
jae 0x40a0e0
mov eax, esi
neg eax
cmp byte [ebp - 0x831], 0
cmove eax, esi
or dword [ebp - 0x85c], eax
jmp 0x40a577
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
or dword [ebp - 0x85c], eax
jmp 0x40a577
push 0x23
push 8
lea eax, [ebp - 0x90c]
mov dword [ebp - 0x90c], 0
push eax
lea eax, [ebp - 0x934]
mov word [edi], 0
push eax
push esi
call dword [0x4576d0]
test eax, eax
jns 0x40a1c9
push 4
push 0x28
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x934]
push eax
push esi
call dword [0x4576d0]
mov ecx, dword [ebp - 0x83c]
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x90c], eax
mov ax, word [ecx + 8]
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
je 0x40a1d9
cmp eax, 2
je 0x40a1d9
mov byte [edi + 1], 1
jmp 0x40a1d9
test dword [ebp - 0x90c], 0x400
jne 0x40a570
cmp byte [edi + 1], 0
jne 0x40a20e
cmp dword [0x4574d4], 0
jne 0x40a20e
movzx eax, word [edi + 0xc]
mov edx, dword [ebp - 0x83c]
mov ecx, dword [ebp - 0x810]
push 0x120116
push eax
call fcn.00403fc0
add esp, 8
test al, al
je 0x40a59b
cmp dword [ebp - 0x854], 0
jne 0x40a279
cmp byte [edi + 1], 0
je 0x40a226
movzx eax, word [0x4574e0]
jmp 0x40a230
mov eax, dword [ebp - 0x83c]
movzx eax, word [eax + 8]
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x940]
push eax
lea eax, [ebp - 0x948]
push eax
lea eax, [ebp - 0x820]
push eax
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x40a26f
mov eax, dword [ebp - 0x820]
or eax, dword [ebp - 0x81c]
mov dword [ebp - 0x854], 1
jne 0x40a279
mov dword [ebp - 0x854], 0
movzx eax, word [edi + 0xe]
lea eax, [eax*2 + 4]
push eax
push 0
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, eax
mov dword [edi + 0x10], ecx
test ecx, ecx
je 0x40a5b3
movzx eax, word [edi + 0xe]
lea eax, [eax*2 + 2]
push eax
push dword [ebp - 0x83c]
push ecx
call fcn.0043c9e0
add esp, 0xc
lea eax, [ebp - 0x144]
test byte [ebp - 0x90c], 0x10
je 0x40a37d
push eax
push ecx
push dword [ebp - 0x83c]
lea eax, [ebp - 0x838]
push eax
lea edx, [ebp - 0x830]
lea ecx, [ebp - 0x8f8]
call fcn.00408890
add esp, 0x10
test al, al
je 0x40a318
inc dword [ebp - 0x818]
mov byte [edi], 4
add edi, 0x18
inc dword [ebp - 0x830]
mov dword [ebp - 0x848], edi
mov dword [ebp - 0x838], edi
jmp 0x40a570
mov eax, dword [ebp - 0x140]
cmp eax, 5
je 0x40a338
cmp eax, 1
je 0x40a338
cmp eax, 8
je 0x40a338
cmp eax, 0x4c7
jne 0x40a570
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x140]
mov dword [0x45771c], eax
mov eax, dword [ebp - 0x8f4]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
test eax, eax
jne 0x40b319
cmp dword [ebp - 0x140], 5
jne 0x40a5d1
cmp dword [0x4574d4], 0
je 0x40b372
jmp 0x40a5a7
push 0
push eax
mov edx, edi
lea ecx, [ebp - 0x840]
call fcn.00409130
add esp, 8
test al, al
je 0x40a481
cmp dword [ebp - 0x13c], 0
jne 0x40a558
cmp word [edi + 2], 1
movzx eax, word [edi + 0xe]
ja 0x40a3f0
mov edx, dword [ebp - 0x83c]
cmp word [edx + eax*2 - 8], 0x2e
jne 0x40a3eb
movzx ecx, word [edx + eax*2 - 6]
cmp ecx, 0x43
je 0x40a3cd
cmp ecx, 0x63
jne 0x40a3eb
movzx ecx, word [edx + eax*2 - 4]
cmp ecx, 0x41
je 0x40a3dc
cmp ecx, 0x61
jne 0x40a3eb
movzx eax, word [edx + eax*2 - 2]
cmp eax, 0x42
je 0x40a3f0
cmp eax, 0x62
je 0x40a3f0
mov byte [edi], 2
jmp 0x40a3f3
mov byte [edi], 1
movzx eax, word [edi + 2]
mov ecx, dword [ebp - 0x8a8]
cdq
add dword [ebp - 0x898], eax
mov eax, dword [ebp - 0x8a4]
adc dword [ebp - 0x894], edx
add ecx, dword [edi + 4]
mov dword [ebp - 0x8a8], ecx
adc eax, 0
inc dword [ebp - 0x818]
inc dword [ebp - 0x82c]
add edi, 0x18
mov dword [ebp - 0x8a4], eax
mov dword [ebp - 0x848], edi
mov dword [ebp - 0x838], edi
cmp eax, dword [ebp - 0x81c]
ja 0x40a457
jb 0x40a570
cmp ecx, dword [ebp - 0x820]
jbe 0x40a570
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x144], 7
mov dword [ebp - 0x140], 1
mov dword [0x45771c], 1
jmp 0x40a5d1
lea eax, [ebp - 0x888]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
mov ecx, dword [ebp - 0x83c]
push 0
push 0
push 0
mov byte [edi], 8
movzx eax, word [edi + 0xc]
push 0
push 0xffffffffffffffff
lea eax, [ecx + eax*2]
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, 0x100
jg 0x40a558
cmp dword [ebp - 0x884], 0
jne 0x40a558
cmp dword [ebp - 0x888], 0x7fff8000
ja 0x40a558
mov eax, 1
mov word [edi + 2], ax
mov eax, dword [ebp - 0x888]
mov dword [edi + 4], eax
add dword [ebp - 0x898], 1
mov ecx, dword [ebp - 0x8a8]
adc dword [ebp - 0x894], 0
add ecx, dword [ebp - 0x888]
mov eax, dword [ebp - 0x8a4]
adc eax, dword [ebp - 0x884]
add edi, 0x18
inc dword [ebp - 0x818]
inc dword [ebp - 0x82c]
mov dword [ebp - 0x8a8], ecx
mov dword [ebp - 0x8a4], eax
mov dword [ebp - 0x848], edi
mov dword [ebp - 0x838], edi
cmp eax, dword [ebp - 0x81c]
ja 0x40a54c
jb 0x40a570
cmp ecx, dword [ebp - 0x820]
jbe 0x40a570
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x40a468
push dword [edi + 0x10]
push 0
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [edi + 0x10], 0
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x858]
inc eax
mov dword [ebp - 0x858], eax
cmp eax, dword [ebp - 0x84c]
jae 0x40a65c
mov edi, dword [ebp - 0x848]
jmp 0x409e40
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x40a36b
mov dword [0x45771c], 5
jmp 0x40a5d1
mov dword [ebp - 0x144], 3
mov dword [ebp - 0x140], 8
mov dword [0x45771c], 8
cmp byte [ebp - 0x8ba], 0
je 0x40a5e5
lea ecx, [ebp - 0x8f8]
call fcn.004036e0
sub esp, 8
lea ecx, [ebp - 0x8f8]
call fcn.00403080
push 0x320
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
push dword [0x45771c]
lea ecx, [ebp - 0x8f8]
push 0x5dc
call fcn.00403330
jmp 0x40b319
push 0x65
push dword [ebp - 0x8f0]
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [ebp - 0x8f4]
push 0
push 0
push 0x44413c
mov byte [ebp - 0x8ba], 0
mov ecx, dword [eax]
push 2
push eax
call dword [ecx + 0x28]
mov eax, dword [ebp - 0x8f4]
push 0
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0x30]
jmp 0x40b319
mov eax, dword [ebp - 0x898]
or eax, dword [ebp - 0x894]
je 0x40b319
mov ecx, dword [ebp - 0x85c]
mov eax, ecx
and eax, 1
and ecx, 2
mov dword [ebp - 0x924], eax
setne al
mov dword [ebp - 0x85c], ecx
mov ecx, dword [ebp - 0x8a4]
dec al
and al, 0x10
mov byte [ebp - 0x84d], al
mov eax, dword [ebp - 0x8a8]
test ecx, ecx
jne 0x40a6b6
cmp eax, 0x63
ja 0x40a6b6
mov dword [ebp - 0x890], 1
jmp 0x40a6c7
push 0
push 0x64
push ecx
push eax
call fcn.0043d1d0
mov dword [ebp - 0x890], eax
push 0x65
push dword [ebp - 0x8f0]
xorps xmm0, xmm0
mov byte [ebp - 0x8b9], 1
movlpd qword [ebp - 0x8b8], xmm0
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [ebp - 0x8f4]
push 0
push 0
push 0x44413c
mov byte [ebp - 0x8ba], 0
mov ecx, dword [eax]
push 2
push eax
call dword [ecx + 0x28]
mov eax, dword [ebp - 0x8f4]
push 0
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0x30]
cmp byte [ebp - 0x8bf], 0
je 0x40a752
mov eax, dword [ebp - 0x8ec]
mov byte [ebp - 0x8bf], 0
test eax, eax
je 0x40a752
push 0
push 0
push 0x40a
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push 0x50000000
push 0xfffffffffffffff0
push dword [ebp - 0x8ec]
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov esi, dword [0x45754c]
mov ecx, dword [esi + 0x60]
call fcn.00428880
push 0x14
push 0x457550
mov dword [ebp - 0x870], eax
push dword [esi + 0x54]
push dword [esi + 0x50]
call dword [sym.imp.SHLWAPI.dll_StrFormatByteSizeW]
movups xmm0, xmmword [str.CabTool:]
mov dword [ebp - 0x86c], eax
mov ax, word [0x444f2c]
mov word [0x457730], ax
lea eax, [ebp - 0x870]
push eax
push 0xfb
push 0x457732
push 0x400
push 0
push dword [0x4563bc]
movups xmmword [0x457720], xmm0
push 0x2400
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov eax, dword [ebp - 0x8f4]
push 0
push 0
push 0x457720
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x28]
mov dword [ebp - 0x8f8], eax
mov eax, dword [ebp - 0x8f4]
push 0
mov byte [ebp - 0x8b9], 1
push 1
mov ecx, dword [eax]
push eax
call dword [ecx + 0x30]
push 0x324
mov dword [ebp - 0x8f8], eax
lea eax, [ebp - 0x498]
push 0
push eax
call fcn.0042a4e0
mov ecx, dword [str.______]
mov eax, 0x3039
mov word [ebp - 0x478], ax
add esp, 0xc
mov eax, dword [0x444f34]
mov dword [ebp - 0x372], eax
mov dword [ebp - 0x272], eax
mov eax, dword [ebp - 0x83c]
mov dword [ebp - 0x594], eax
mov eax, 0x8109
mov word [ebp - 0x596], ax
mov eax, dword [ebp - 0x818]
mov dword [ebp - 0x498], VariantClear
mov dword [ebp - 0x494], 0x7fff8000
mov dword [ebp - 0x484], 1
mov dword [ebp - 0x376], ecx
mov dword [ebp - 0x276], ecx
mov dword [ebp - 0x848], eax
test eax, eax
je 0x40b2dc
mov edi, dword [ebp - 0x814]
add edi, 0xc
mov dword [ebp - 0x838], edi
nop word [eax + eax]
mov eax, dword [ebp - 0x8f4]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
test eax, eax
jne 0x40b2dc
movzx esi, word [edi - 0xa]
xorps xmm0, xmm0
mov eax, dword [ebp - 0x8a0]
mov dword [ebp - 0x928], eax
mov eax, dword [ebp - 0x89c]
mov dword [0x45771c], 0
movq qword [ebp - 0x144], xmm0
mov dword [ebp - 0x13c], 0
movq qword [ebp - 0x4a8], xmm0
mov dword [ebp - 0x4a0], 0
cmp byte [edi - 0xb], 0
mov dword [ebp - 0x840], esi
mov dword [ebp - 0x86c], eax
je 0x40a97b
mov eax, dword [0x4576b4]
movzx edi, ax
add edi, edi
push edi
push dword [0x4574d0]
push dword [ebp - 0x594]
call fcn.0043c9e0
mov edx, dword [ebp - 0x838]
add esp, 0xc
movzx ecx, word [edx]
mov ax, word [edx + 2]
sub ax, cx
movzx esi, ax
lea eax, [esi*2 + 2]
push eax
mov eax, dword [edx + 4]
lea eax, [eax + ecx*2]
push eax
mov eax, dword [ebp - 0x594]
add eax, edi
push eax
call fcn.0043c9e0
mov ecx, dword [0x4576b4]
mov edi, dword [ebp - 0x838]
mov word [ebp - 0x58a], cx
lea eax, [esi + ecx]
mov word [ebp - 0x598], ax
jmp 0x40a9aa
movzx eax, word [edi + 2]
lea eax, [eax*2 + 2]
push eax
push dword [edi + 4]
push dword [ebp - 0x594]
call fcn.0043c9e0
movzx eax, word [edi + 2]
mov word [ebp - 0x598], ax
movzx eax, word [edi]
mov word [ebp - 0x58a], ax
add esp, 0xc
test byte [edi - 0xc], 0xc
je 0x40ae51
lea eax, [ebp - 0x598]
mov byte [ebp - 0x841], 4
push eax
lea eax, [ebp - 0x498]
push eax
push 0x407ad0
push 0x407890
push 0x407850
push 0x407820
push 0x4077e0
push 0x4077a0
push 0x407700
push 0x4076e0
push 0x4076c0
lea eax, [ebp - 0x144]
push fcn.004078d0
push eax
call dword [sym.imp.Cabinet.dll_FCICreate]
mov edi, eax
add esp, 0x34
mov dword [ebp - 0x854], edi
test edi, edi
je 0x40abf0
mov eax, dword [ebp - 0x838]
test byte [eax - 0xc], 4
je 0x40ac28
movzx ecx, word [ebp - 0x598]
mov eax, dword [ebp - 0x594]
movq xmm0, qword [str..cab]
mov esi, dword [ebp - 0x838]
movq qword [eax + ecx*2], xmm0
lea ecx, [eax + ecx*2]
movzx eax, word [0x444f40]
mov word [ecx + 8], ax
add word [ebp - 0x598], 4
movzx eax, word [esi + 2]
inc ax
cmp dword [ebp - 0x85c], 0
movzx eax, ax
mov dword [ebp - 0x860], eax
jne 0x40aaba
push dword [ebp - 0x594]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40aaba
push dword [ebp - 0x596]
mov edx, dword [ebp - 0x598]
mov ecx, dword [ebp - 0x594]
call fcn.00404280
mov dword [ebp - 0x594], eax
add esp, 4
mov ax, word [0x457638]
mov word [ebp - 0x598], ax
mov edx, dword [esi - 4]
mov ecx, dword [esi + 8]
mov dword [ebp - 0x858], ecx
mov dword [ebp - 0x84c], edx
test edx, edx
je 0x40adf4
mov eax, dword [ecx]
mov dword [ebp - 0x56c], eax
movzx esi, word [ecx + 4]
test si, si
je 0x40abb4
mov ecx, dword [ebp - 0x860]
movzx edi, cx
add edi, edi
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x138]
push 0
push 0
push 0x101
push ecx
push 0xffffffffffffffff
add eax, edi
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov eax, dword [ebp - 0x56c]
push 0
push 1
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x8f4]
add edx, edi
push edx
push 2
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
push 0x1503
push 0x4079e0
push 0x407a50
push fcn.004078d0
mov dword [ebp - 0x8f8], eax
lea eax, [ebp - 0x138]
push 0
push eax
mov eax, dword [ebp - 0x56c]
push dword [eax + 4]
push dword [ebp - 0x854]
call dword [sym.imp.Cabinet.dll_FCIAddFile]
add esp, 0x20
test eax, eax
je 0x40abd7
mov eax, dword [ebp - 0x56c]
add esi, 0xffff
dec dword [ebp - 0x840]
add eax, 0x18
add dword [ebp - 0x898], 0xffffffff
mov dword [ebp - 0x56c], eax
adc dword [ebp - 0x894], 0xffffffff
test si, si
jne 0x40aaf4
mov ecx, dword [ebp - 0x858]
mov edx, dword [ebp - 0x84c]
dec edx
add ecx, 8
mov dword [ebp - 0x84c], edx
mov dword [ebp - 0x858], ecx
test edx, edx
jne 0x40aad4
mov edi, dword [ebp - 0x854]
jmp 0x40adf4
push dword [ebp - 0x854]
mov dword [ebp - 0x13c], 1
call dword [sym.imp.Cabinet.dll_FCIDestroy]
add esp, 4
mov edi, dword [ebp - 0x838]
mov eax, dword [ebp - 0x140]
test eax, eax
mov esi, dword [ebp - 0x4a4]
cmovne esi, eax
mov dword [0x45771c], esi
test esi, esi
je 0x40b207
cmp dword [ebp - 0x848], 1
sete byte [ebp - 0x864]
jmp 0x40b236
mov eax, dword [ebp - 0x598]
sub eax, dword [ebp - 0x58a]
movzx ecx, word [ebp - 0x58a]
mov word [ebp - 0x58c], ax
mov eax, dword [ebp - 0x594]
push 0
push 1
lea eax, [eax + ecx*2]
mov ecx, dword [ebp - 0x8f4]
push eax
mov dword [ebp - 0x590], eax
push 2
mov edx, dword [ecx]
push ecx
call dword [edx + 0x28]
push 0
push 0
push 0x101
mov dword [ebp - 0x8f8], eax
lea eax, [ebp - 0x138]
push eax
push 0xffffffffffffffff
push dword [ebp - 0x590]
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
movzx eax, word [ebp - 0x58c]
mov esi, dword [ebp - 0x590]
movzx ecx, ax
mov dword [ebp - 0x84c], eax
mov eax, ecx
mov dword [ebp - 0x858], esi
mov edx, eax
mov dword [ebp - 0x860], edx
lea edx, [esi + edx*2]
mov dword [ebp - 0x874], edx
test ax, ax
je 0x40ace9
nop dword [eax]
nop word [eax + eax]
cmp word [edx - 2], 0x2e
lea edx, [edx - 2]
je 0x40ad9e
add ecx, 0xffff
test cx, cx
jne 0x40acd0
mov ecx, dword [ebp - 0x874]
mov eax, dword [0x444f44]
mov dword [ecx], eax
mov ax, word [0x444f48]
mov word [ecx + 4], ax
add word [ebp - 0x58c], 2
mov eax, dword [ebp - 0x58c]
mov ecx, dword [ebp - 0x58a]
add eax, ecx
cmp dword [ebp - 0x85c], 0
mov word [ebp - 0x598], ax
jne 0x40ad64
push dword [ebp - 0x594]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40ad64
push dword [ebp - 0x596]
mov edx, dword [ebp - 0x598]
mov ecx, dword [ebp - 0x594]
call fcn.00404280
mov dword [ebp - 0x594], eax
add esp, 4
mov ax, word [0x457638]
mov word [ebp - 0x598], ax
push 0x1503
push 0x4078e0
push 0x407a50
push fcn.004078d0
push 0
lea eax, [ebp - 0x138]
push eax
mov eax, dword [ebp - 0x838]
push dword [eax + 4]
push edi
call dword [sym.imp.Cabinet.dll_FCIAddFile]
add esp, 0x20
test eax, eax
jne 0x40ade0
push edi
jmp 0x40abe7
test cx, cx
je 0x40ace9
mov edx, dword [ebp - 0x860]
movzx eax, cx
sub edx, eax
cmp edx, 2
jle 0x40adbc
add ecx, 2
jmp 0x40adc2
mov ecx, dword [ebp - 0x84c]
movzx eax, cx
inc cx
mov word [ebp - 0x58c], cx
mov ecx, dword [ebp - 0x858]
mov dword [ecx + eax*2], 0x5f
jmp 0x40ad08
add dword [ebp - 0x898], 0xffffffff
adc dword [ebp - 0x894], 0xffffffff
dec dword [ebp - 0x840]
push 0x407a50
push fcn.004078d0
push 0
push edi
call dword [sym.imp.Cabinet.dll_FCIFlushCabinet]
push edi
mov esi, eax
call dword [sym.imp.Cabinet.dll_FCIDestroy]
add esp, 0x14
test esi, esi
je 0x40abf0
mov edi, dword [ebp - 0x838]
cmp byte [ebp - 0x924], 0
je 0x40b2be
test byte [edi - 0xc], 4
mov eax, dword [edi + 4]
je 0x40b1d4
push ecx
mov ecx, eax
call fcn.004083b0
add esp, 4
mov dword [ebp - 0x87c], eax
jmp 0x40b2be
mov al, byte [ebp - 0x84d]
mov byte [ebp - 0x582], al
lea eax, [ebp - 0x144]
push eax
push 0xffffffffffffffff
push 0x407cd0
push 0x407cb0
push 0x407c20
push 0x407bf0
push 0x407b10
push 0x4076e0
push 0x4076c0
mov dword [ebp - 0x13c], 1
mov byte [ebp - 0x841], 8
call dword [sym.imp.Cabinet.dll_FDICreate]
add esp, 0x24
mov dword [ebp - 0x84c], eax
test eax, eax
je 0x40abf6
mov ecx, dword [edi + 4]
mov edx, 0x4575a3
mov byte [ebp - 0x831], 1
mov word [0x4575a3], 0x5c
test ecx, ecx
je 0x40b1e6
mov eax, ecx
dec edx
and eax, 0xf
shr ecx, 4
mov al, byte [eax + 0x44e588]
mov byte [edx], al
mov al, byte [ebp - 0x831]
add al, 1
mov byte [ebp - 0x831], al
test ecx, ecx
jne 0x40aed1
cmp al, 0x16
jbe 0x40aeff
push 0x6f
jmp 0x40b1e8
inc al
movzx eax, al
push eax
push edx
lea eax, [ebp - 0x30]
push eax
call fcn.0043c9e0
add esp, 0xc
test byte [edi - 0xc], 1
je 0x40b045
movzx edx, word [ebp - 0x598]
mov esi, dword [ebp - 0x594]
mov ecx, edx
mov eax, edx
lea eax, [esi + eax*2]
test cx, cx
je 0x40af70
sub eax, 2
cmp word [eax], 0x2e
jne 0x40af4b
add edx, 0xffff
test dx, dx
jne 0x40af35
jmp 0x40af70
test dx, dx
je 0x40af70
movzx ecx, word [eax]
cmp ecx, 0x2e
je 0x40af70
cmp ecx, 0x5c
je 0x40af8d
cmp ecx, 0x2f
je 0x40af70
add edx, 0xffff
sub eax, 2
test dx, dx
jne 0x40af50
movzx eax, word [eax]
cmp eax, 0x5c
je 0x40af8d
cmp eax, 0x2f
je 0x40af8d
test dx, dx
je 0x40af8d
add edx, 0xffff
test dx, dx
jne 0x40af9b
movzx edx, word [ebp - 0x598]
or byte [ebp - 0x582], 0x10
movzx ecx, dx
test dx, dx
je 0x40afbc
add edx, 0xffff
movzx eax, dx
movzx eax, word [esi + eax*2]
cmp eax, 0x5c
je 0x40afbc
cmp eax, 0x2f
je 0x40afbc
mov edx, ecx
movzx eax, dx
xor ecx, ecx
mov word [ebp - 0x598], dx
mov word [esi + eax*2], cx
test byte [ebp - 0x582], 0x10
je 0x40b017
push dword [ebp - 0x594]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40b017
push dword [ebp - 0x596]
mov edx, dword [ebp - 0x598]
mov ecx, dword [ebp - 0x594]
call fcn.004045b0
mov ecx, eax
add esp, 4
mov ax, word [0x457638]
mov dword [ebp - 0x594], ecx
mov word [ebp - 0x598], ax
jmp 0x40b024
mov ecx, dword [ebp - 0x594]
mov ax, word [ebp - 0x598]
movzx eax, ax
mov edx, 0x5c
mov word [ecx + eax*2], dx
mov ax, word [ebp - 0x598]
inc ax
mov word [ebp - 0x598], ax
movzx ecx, ax
jmp 0x40b04c
movzx ecx, word [ebp - 0x58a]
mov eax, dword [ebp - 0x594]
lea eax, [eax + ecx*2]
mov dword [ebp - 0x590], eax
lea eax, [ebp - 0x598]
push eax
push 0
push 0x407cf0
push 0
lea eax, [ebp - 0x30]
push eax
push str.______
push dword [ebp - 0x84c]
call dword [sym.imp.Cabinet.dll_FDICopy]
add esp, 0x1c
mov esi, eax
push dword [ebp - 0x84c]
call dword [sym.imp.Cabinet.dll_FDIDestroy]
add esp, 4
test esi, esi
je 0x40abf6
movzx eax, word [ebp - 0x598]
mov edx, dword [ebp - 0x83c]
movups xmm0, xmmword [str._manifest_.cix.xml]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
lea ecx, [edx + eax*2]
movups xmmword [ecx], xmm0
push edx
movups xmm0, xmmword [0x444f5c]
movups xmmword [ecx + 0x10], xmm0
mov eax, dword [0x444f6c]
mov dword [ecx + 0x20], eax
mov ax, word [0x444f70]
mov word [ecx + 0x24], ax
call esi
cmp eax, 0xffffffff
je 0x40b138
lea eax, [ebp - 0x84e]
push eax
lea eax, [ebp - 0x598]
push eax
lea eax, [ebp - 0x914]
push eax
lea eax, [ebp - 0x910]
push eax
lea eax, [ebp - 0x904]
push eax
lea eax, [ebp - 0x91c]
push eax
lea edx, [ebp - 0x918]
lea ecx, [ebp - 0x8f8]
call fcn.00409570
add esp, 0x18
test eax, eax
jne 0x40ae21
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x140], eax
jmp 0x40abf6
movzx eax, word [ebp - 0x598]
mov edx, dword [ebp - 0x83c]
movups xmm0, xmmword [str._sfx_manifest_]
push edx
lea ecx, [edx + eax*2]
movups xmmword [ecx], xmm0
movq xmm0, qword [0x444f84]
movq qword [ecx + 0x10], xmm0
mov eax, dword [0x444f8c]
mov dword [ecx + 0x18], eax
mov ax, word [0x444f90]
mov word [ecx + 0x1c], ax
call esi
cmp eax, 0xffffffff
je 0x40ae21
lea eax, [ebp - 0x84f]
push eax
lea eax, [ebp - 0x598]
push eax
lea eax, [ebp - 0x914]
push eax
lea eax, [ebp - 0x910]
push eax
lea eax, [ebp - 0x904]
push eax
lea eax, [ebp - 0x920]
push eax
lea edx, [ebp - 0x900]
lea ecx, [ebp - 0x8f8]
call fcn.00409890
add esp, 0x18
test eax, eax
jne 0x40ae21
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x140], eax
jmp 0x40abf6
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [ebp - 0x87c], eax
jmp 0x40b2be
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [ebp - 0x144], 1
mov dword [ebp - 0x140], 2
jmp 0x40abf6
mov eax, dword [ebp - 0x144]
test eax, eax
mov esi, dword [ebp - 0x4a8]
mov cl, byte [ebp - 0x841]
cmovne esi, eax
cmp dword [ebp - 0x848], 1
mov dword [0x45771c], esi
sete al
or cl, al
mov byte [ebp - 0x864], cl
mov ecx, dword [edi - 8]
mov eax, 0
add ecx, dword [ebp - 0x928]
push 0
push dword [ebp - 0x890]
adc eax, dword [ebp - 0x86c]
push eax
push ecx
mov dword [ebp - 0x8a0], ecx
mov dword [ebp - 0x89c], eax
call fcn.0043d1d0
mov dword [ebp - 0x8b0], eax
mov dword [ebp - 0x8ac], edx
cmp edx, dword [ebp - 0x8b4]
jb 0x40b294
ja 0x40b283
cmp eax, dword [ebp - 0x8b8]
jbe 0x40b294
lea ecx, [ebp - 0x8f8]
call fcn.004031a0
mov esi, dword [0x45771c]
push dword [ebp - 0x864]
mov eax, dword [ebp - 0x840]
lea ecx, [ebp - 0x8f8]
sub dword [ebp - 0x898], eax
push esi
sbb dword [ebp - 0x894], 0
push 0x3e8
call fcn.00403330
mov esi, dword [ebp - 0x848]
add edi, 0x18
dec esi
mov dword [ebp - 0x838], edi
mov dword [ebp - 0x848], esi
test esi, esi
jne 0x40a8a0
lea ecx, [ebp - 0x8f8]
mov byte [ebp - 0x8b0], 0x64
call fcn.004031a0
push 0x12c
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x918]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
je 0x40b30c
push eax
call esi
mov eax, dword [ebp - 0x900]
test eax, eax
je 0x40b319
push eax
call esi
push dword [ebp - 0x83c]
push 0
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapFree]
lea ecx, [ebp - 0x830]
call fcn.00409430
lea ecx, [ebp - 0x8f8]
call fcn.00403270
lea ecx, [ebp - 0x8f8]
call fcn.00402f30
mov eax, dword [ebp - 0x87c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00428cd6
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push dword [ebp - 0x83c]
push 0
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapFree]
lea ecx, [ebp - 0x830]
call fcn.00409430
sub esp, 0xc
lea ecx, [ebp - 0x8f8]
xor edx, edx
call fcn.00403910
int3