Function at 0x409980
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Check if file exists
Check os version
Get file attributes
Log keystrokes via polling
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a8
push esi
push 0x409960
call fcn.004278f3
add esp, 4
call fcn.00407630
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x20], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0x1a2890
je 0x4099cc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0x7a33
je 0x4099cc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0xf4240
jne 0x4099e2
mov eax, dword [ebp - 0x20]
shl eax, 7
and eax, 0x56
jne 0x4099e2
mov ecx, dword [ebp - 0x20]
add ecx, 1
mov dword [ebp - 0x20], ecx
jmp 0x4099cc
mov dword [ebp - 0x140], 0x114
lea edx, [ebp - 0x140]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x409a0f
cmp dword [ebp - 0x130], 2
jne 0x409a0f
cmp dword [ebp - 0x13c], 5
jae 0x409a2d
push 0x10
push str.7_Zip_SFX
push str.Sorry__this_program_requires_Microsoft_Windows_2000_or_later.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 0x14
jmp 0x40b31b
mov byte [str.___InstallEnd__], 0x3b
mov al, byte [str.___InstallEnd__]
mov byte [str.___Install__UTF_8_], al
mov dword [ebp - 0x160], 0xffffffff
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x164], 0xffffffff
lea ecx, [ebp - 0x184]
call fcn.00401140
lea ecx, [ebp - 0x14c]
call fcn.00401140
lea ecx, [ebp - 0x178]
call fcn.00401140
call fcn.00408a80
lea ecx, [ebp - 0x184]
push ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.004051c0
add esp, 8
push eax
lea ecx, [ebp - 0x178]
call fcn.00401280
lea edx, [ebp - 0x178]
push edx
call fcn.00405c30
add esp, 4
lea ecx, [ebp - 0x178]
call fcn.00412200
mov dword [ebp - 0x194], eax
push 1
push 0x42fce8
push str.SfxVarModulePlatform
call fcn.00405000
add esp, 0xc
push 1
call fcn.00408300
push eax
push str.SfxVarSystemPlatform
call fcn.00405000
add esp, 0xc
push 1
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
push str.SfxVarCmdLine0
call fcn.00405000
add esp, 0xc
movzx eax, word [0x4371ec]
push eax
push 0x430af4
push 0x20
lea ecx, [ebp - 0x184]
call fcn.00404ec0
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x184]
call fcn.00404e90
push 1
lea ecx, [ebp - 0x184]
call fcn.00412200
push eax
push str.SfxVarSystemLanguage
call fcn.00405000
add esp, 0xc
push str.sfxlang
mov ecx, dword [ebp - 0x194]
push ecx
call fcn.004090f0
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x409bd8
mov edx, dword [ebp - 0x24]
movzx eax, word [edx]
cmp eax, 0x3a
jne 0x409bd8
mov ecx, dword [ebp - 0x24]
add ecx, 2
push ecx
call fcn.00426cbd
add esp, 4
mov dword [ebp - 0x198], eax
cmp dword [ebp - 0x198], 0
jle 0x409baa
cmp dword [ebp - 0x198], 0xffff
jg 0x409baa
mov dx, word [ebp - 0x198]
mov word [0x4371ec], dx
mov eax, dword [ebp - 0x194]
add eax, 2
mov dword [ebp - 0x194], eax
mov ecx, dword [ebp - 0x194]
movzx edx, word [ecx]
cmp edx, 0x20
jbe 0x409bd8
mov eax, dword [ebp - 0x194]
add eax, 2
mov dword [ebp - 0x194], eax
jmp 0x409bb9
push str.sfxversion
mov ecx, dword [ebp - 0x194]
push ecx
call fcn.004090f0
add esp, 8
test eax, eax
je 0x409c2b
call fcn.004097b0
mov dword [ebp - 0x2d4], 0
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2d4]
jmp 0x40b31b
push str.sfxwaitall
mov edx, dword [ebp - 0x194]
push edx
call fcn.004090f0
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x409c86
mov eax, dword [ebp - 0x24]
push eax
call fcn.00402da0
add esp, 4
mov dword [ebp - 0x2d8], eax
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2d8]
jmp 0x40b31b
mov byte [ebp - 0x18d], 0
push str.sfxelevation
mov ecx, dword [ebp - 0x194]
push ecx
call fcn.004090f0
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x409cba
mov byte [ebp - 0x18d], 1
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x194], edx
push 0x208
push 0x208
mov ecx, 0x437344
call fcn.00404ec0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x409d1d
push 6
push 1
call fcn.0040f2d0
add esp, 8
mov dword [ebp - 0x2dc], 1
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2dc]
jmp 0x40b31b
mov ecx, 0x437344
call fcn.00404e90
push str.sfxtest
mov eax, dword [ebp - 0x194]
push eax
call fcn.004090f0
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40a219
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx]
cmp edx, 0x3a
je 0x409d89
mov dword [ebp - 0x2e0], 0x64
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2e0]
jmp 0x40b31b
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax + 2]
or ecx, 0x20
mov dword [ebp - 0x39c], ecx
mov edx, dword [ebp - 0x39c]
sub edx, 0x61
mov dword [ebp - 0x39c], edx
cmp dword [ebp - 0x39c], 0x15
ja case.0x409dc2.1
mov eax, dword [ebp - 0x39c]
movzx ecx, byte [eax + 0x40b338]
jmp dword [ecx*4 + 0x40b320]
mov edx, dword [ebp - 0x24]
movzx eax, word [edx + 2]
cmp eax, 0x44
jne 0x409ead
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx + 4]
cmp edx, 0x3a
je 0x409e1b
mov dword [ebp - 0x2e4], 0x64
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2e4]
jmp 0x40b31b
mov eax, dword [ebp - 0x24]
add eax, 6
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx]
cmp edx, 0x20
jbe 0x409e64
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax]
cmp ecx, 0x3a
je 0x409e64
mov edx, dword [ebp - 0x24]
mov ax, word [edx]
mov word [ebp - 0x39e], ax
movzx ecx, word [ebp - 0x39e]
push ecx
mov ecx, 0x43739c
call fcn.00402260
mov edx, dword [ebp - 0x24]
add edx, 2
mov dword [ebp - 0x24], edx
jmp 0x409e24
mov ecx, 0x43739c
call fcn.00405320
movzx eax, al
test eax, eax
je 0x409eab
mov dword [ebp - 0x2e8], 0x64
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2e8]
jmp 0x40b31b
jmp 0x409eb6
mov ecx, dword [ebp - 0x24]
add ecx, 4
mov dword [ebp - 0x24], ecx
mov dword [0x437394], 0
mov edx, dword [ebp - 0x24]
movzx eax, word [edx]
cmp eax, 0x3a
jne 0x409edf
mov ecx, dword [ebp - 0x24]
add ecx, 2
push ecx
call fcn.00426cbd
add esp, 4
mov dword [0x437394], eax
cmp dword [0x437394], 0xe10
ja 0x409ef4
cmp dword [0x437394], 0
jne 0x409efe
mov dword [0x437394], 0xa
mov dword [0x437398], 1
jmp 0x40a16b
mov dword [0x437398], 2
jmp 0x40a16b
mov edx, dword [ebp - 0x24]
movzx eax, word [edx + 4]
cmp eax, 0x63
jne 0x409f34
mov dword [0x437398], 4
jmp 0x409f3e
mov dword [0x437398], 3
jmp 0x40a16b
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx + 4]
cmp edx, 0x3a
je 0x409f85
mov dword [ebp - 0x2ec], 0
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2ec]
jmp 0x40b31b
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax + 6]
mov dword [ebp - 0x3a4], ecx
mov edx, dword [ebp - 0x3a4]
sub edx, 0x31
mov dword [ebp - 0x3a4], edx
cmp dword [ebp - 0x3a4], 4
ja case.default.0x409fb4
mov eax, dword [ebp - 0x3a4]
jmp dword [eax*4 + 0x40b350]
mov dword [ebp - 0x2f0], 1
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2f0]
jmp 0x40b31b
mov dword [ebp - 0x2f4], 0xc0
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2f4]
jmp 0x40b31b
mov dword [ebp - 0x2f8], 0x1f
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2f8]
jmp 0x40b31b
mov dword [ebp - 0x2fc], 0x3eff
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x2fc]
jmp 0x40b31b
mov dword [ebp - 0x300], 7
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x300]
jmp 0x40b31b
mov dword [ebp - 0x304], 0
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x304]
jmp 0x40b31b
mov dword [ebp - 0x308], 0x4f3c
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x308]
jmp 0x40b31b
mov dword [ebp - 0x30c], 0x64
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x30c]
jmp 0x40b31b
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx]
cmp edx, 0x20
jbe 0x40a181
mov eax, dword [ebp - 0x24]
add eax, 2
mov dword [ebp - 0x24], eax
jmp 0x40a16b
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x194], ecx
push str.sfxconfig
mov edx, dword [ebp - 0x194]
push edx
call fcn.004090f0
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40a219
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax]
cmp ecx, 0x3a
jne 0x40a1bb
mov edx, dword [ebp - 0x24]
add edx, 2
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax]
test ecx, ecx
je 0x40a1db
mov edx, dword [ebp - 0x24]
movzx eax, word [edx]
cmp eax, 0x20
ja 0x40a1db
mov ecx, dword [ebp - 0x24]
add ecx, 2
mov dword [ebp - 0x24], ecx
jmp 0x40a1bb
lea ecx, [ebp - 0x184]
call fcn.00402a30
lea edx, [ebp - 0x184]
push edx
mov eax, dword [ebp - 0x24]
push eax
call fcn.004051c0
add esp, 8
mov dword [ebp - 0x194], eax
cmp dword [0x437398], 2
je 0x40a219
lea ecx, [ebp - 0x184]
push ecx
mov ecx, 0x437344
call fcn.00403550
push 0x437344
mov ecx, 0x43725c
call fcn.00403550
push 0x437344
mov ecx, 0x437268
call fcn.00403550
push 0x437344
call fcn.004075f0
add esp, 4
mov dword [ebp - 0x18c], eax
cmp dword [ebp - 0x18c], 0
jl 0x40a320
mov edx, dword [ebp - 0x18c]
push edx
mov ecx, 0x43725c
call fcn.00402190
mov ecx, 0x437344
call fcn.00412200
mov ecx, dword [ebp - 0x18c]
lea edx, [eax + ecx*2 + 2]
push edx
mov ecx, 0x437268
call fcn.00401280
mov ecx, 0x437344
call fcn.00412200
mov ecx, dword [ebp - 0x18c]
lea edx, [eax + ecx*2 + 2]
push edx
mov ecx, 0x437280
call fcn.00401280
push 0x2e
mov ecx, 0x437280
call fcn.0041e290
mov dword [ebp - 0x18c], eax
cmp dword [ebp - 0x18c], 0
jle 0x40a2d2
mov eax, dword [ebp - 0x18c]
push eax
mov ecx, 0x437280
call fcn.00402190
push 0x437280
mov ecx, 0x437274
call fcn.00403550
push 4
call fcn.00407fb0
add esp, 4
push eax
mov ecx, 0x437274
call fcn.0041e010
mov ecx, 0x437280
call fcn.00412200
mov dword [0x437218], eax
mov ecx, 0x437274
call fcn.00412200
mov dword [0x437220], eax
mov ecx, dword [0x437218]
mov dword [0x437224], ecx
call fcn.00408300
push eax
mov ecx, 0x43728c
call fcn.00401280
mov ecx, 0x437344
call fcn.00412200
push eax
mov ecx, 0x4372b8
call fcn.004014b0
movzx edx, al
test edx, edx
jne 0x40a399
mov ecx, 0x437344
call fcn.00412200
push eax
push 7
push 1
call fcn.0040f2d0
add esp, 0xc
mov dword [ebp - 0x310], 2
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x310]
jmp 0x40b31b
lea ecx, [ebp - 0x1c]
call fcn.004053d0
mov ecx, 0x437350
call fcn.0040b760
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 0x4372b8
call fcn.0040b430
push eax
call fcn.00408780
add esp, 0xc
mov dword [ebp - 0x16c], eax
cmp dword [ebp - 0x16c], 0
je 0x40a413
mov ecx, dword [ebp - 0x16c]
mov dword [ebp - 0x314], ecx
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x314]
jmp 0x40b31b
cmp dword [0x437398], 0
jne 0x40a51e
push str.sfxconfig
mov edx, dword [ebp - 0x194]
push edx
call fcn.004090f0
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40a51e
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax]
cmp ecx, 0x3a
jne 0x40a455
mov edx, dword [ebp - 0x24]
add edx, 2
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
movzx ecx, word [eax]
test ecx, ecx
je 0x40a475
mov edx, dword [ebp - 0x24]
movzx eax, word [edx]
cmp eax, 0x20
ja 0x40a475
mov ecx, dword [ebp - 0x24]
add ecx, 2
mov dword [ebp - 0x24], ecx
jmp 0x40a455
mov edx, dword [ebp - 0x24]
movzx eax, word [edx]
test eax, eax
je 0x40a4e0
lea ecx, [ebp - 0x1c]
push ecx
mov edx, dword [ebp - 0x24]
push edx
call fcn.00408ec0
add esp, 8
movzx eax, al
test eax, eax
jne 0x40a4e0
push 0xa
push 0
call fcn.0040f2d0
add esp, 8
mov dword [ebp - 0x318], 4
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x318]
jmp 0x40b31b
mov dword [ebp - 0x31c], 0
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x31c]
jmp 0x40b31b
cmp dword [0x437398], 4
jne 0x40a565
mov dword [ebp - 0x320], 0
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x320]
jmp 0x40b31b
mov dword [ebp - 0x168], 0x4360c0
mov ecx, dword [ebp - 0x168]
cmp dword [ecx], 0
je 0x40a5cc
mov edx, dword [ebp - 0x168]
mov eax, dword [edx]
push eax
push str.SfxString_d
lea ecx, [ebp - 0x1f0]
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0
mov edx, dword [ebp - 0x168]
mov eax, dword [edx]
push eax
call fcn.00407fb0
add esp, 4
push eax
lea ecx, [ebp - 0x1f0]
push ecx
call fcn.00405000
add esp, 0xc
mov edx, dword [ebp - 0x168]
add edx, 0x10
mov dword [ebp - 0x168], edx
jmp 0x40a56f
mov eax, dword [ebp - 0x194]
push eax
mov ecx, 0x4372b8
call fcn.0040b4f0
call fcn.004022d0
mov dword [ebp - 0x194], eax
cmp dword [ebp - 0x194], 0
jne 0x40a62f
mov dword [ebp - 0x324], 0x20
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x324]
jmp 0x40b31b
call fcn.004091b0
mov ecx, 0x4372b8
call fcn.00401520
mov ecx, 0x437350
call fcn.0040b760
push 0
push 0
mov ecx, 0x4372b8
call fcn.0040b430
push eax
call fcn.00408780
add esp, 0xc
call fcn.004091b0
mov ecx, 0x4372b8
call fcn.00401770
call fcn.004022d0
call fcn.004091b0
mov dword [ebp - 0x188], 0
lea ecx, [ebp - 0x188]
push ecx
push str.SetEnvironment
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40a730
mov edx, dword [ebp - 0x24]
push edx
lea ecx, [ebp - 0x1fc]
call fcn.00402170
push 0x3d
lea ecx, [ebp - 0x1fc]
call fcn.00406420
mov dword [ebp - 0x18c], eax
cmp dword [ebp - 0x18c], 0
jg 0x40a6db
lea ecx, [ebp - 0x1fc]
call fcn.00401240
jmp 0x40a730
mov eax, dword [ebp - 0x18c]
push eax
lea ecx, [ebp - 0x1fc]
call fcn.00402190
push 0
mov ecx, dword [ebp - 0x18c]
mov edx, dword [ebp - 0x24]
lea eax, [edx + ecx*2 + 2]
push eax
lea ecx, [ebp - 0x1fc]
call fcn.00412200
push eax
call fcn.00405000
add esp, 0xc
mov ecx, dword [ebp - 0x188]
add ecx, 1
mov dword [ebp - 0x188], ecx
lea ecx, [ebp - 0x1fc]
call fcn.00401240
jmp 0x40a682
call fcn.00408c90
cmp dword [0x4363b4], 0xffffffff
jne 0x40a748
mov dword [0x4363b4], 0
mov ecx, 0x4372b8
call fcn.0040b4d0
movzx edx, al
test edx, edx
je 0x40a7f0
push 0
push str.HelpText
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jne 0x40a782
push 0x18
call fcn.00407fb0
add esp, 4
mov dword [ebp - 0x24], eax
lea ecx, [ebp - 0x258]
call fcn.0040b3e0
push 0
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [0x437218]
push ecx
push 0x11
lea ecx, [ebp - 0x258]
call fcn.0040d3c0
mov dword [ebp - 0x328], 0
lea ecx, [ebp - 0x258]
call fcn.0040f140
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x328]
jmp 0x40b31b
mov ecx, 0x4372b8
call fcn.0040b490
movzx edx, al
test edx, edx
je 0x40a810
mov eax, dword [0x4363b4]
and eax, 0xfffffeff
mov dword [0x4363b4], eax
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
push 0
push str.InstallPath
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40a845
mov ecx, dword [ebp - 0x24]
push ecx
mov ecx, 0x437250
call fcn.00401280
mov byte [0x4371fc], 1
push 0x437250
call fcn.00408c10
add esp, 4
push 0
push str.BeginPromptTimeout
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40a87b
mov edx, dword [ebp - 0x24]
push edx
call fcn.00426cbd
add esp, 4
mov dword [0x43723c], eax
mov ecx, 0x43739c
call fcn.00405320
movzx eax, al
test eax, eax
jne 0x40a8cb
call fcn.0040f7b0
mov dword [ebp - 0x32c], eax
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x32c]
jmp 0x40b31b
cmp dword [0x437398], 3
jne 0x40a913
call fcn.0040fb60
mov dword [ebp - 0x330], eax
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x330]
jmp 0x40b31b
push 0
push 0x42f938
push str.SfxVarApiPath
call fcn.00405000
add esp, 0xc
call fcn.00408c90
push 0
push str.ExecuteOnLoad
call fcn.00406600
add esp, 8
test eax, eax
je 0x40a9ad
mov ecx, 0x4372b8
call fcn.0040b4b0
movzx ecx, al
test ecx, ecx
jne 0x40a9ad
push 0
mov ecx, 0x437298
call fcn.0040b410
push eax
push str.SfxVarApiPath
call fcn.00405000
add esp, 0xc
call fcn.00408c90
push 0x42f938
push 0x42f938
lea ecx, [ebp - 0x33c]
call fcn.00402170
push eax
push 0x42f938
mov ecx, 0x437298
call fcn.0040b410
push eax
push str.ExecuteOnLoad
call fcn.00403570
add esp, 0x14
lea ecx, [ebp - 0x33c]
call fcn.00401240
mov ecx, 0x4372b8
call fcn.0040b520
push 0
push str.BeginPrompt
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40aa80
mov ecx, 0x4372b8
call fcn.0040b490
movzx edx, al
test edx, edx
jne 0x40aa80
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [0x437218]
push ecx
call fcn.0040f000
add esp, 8
test eax, eax
jne 0x40aa3d
mov dword [ebp - 0x340], 5
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x340]
jmp 0x40b31b
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
je 0x40aa68
push 1
mov ecx, 0x4372b8
call fcn.004028c0
push 1
mov ecx, 0x4372b8
call fcn.004028e0
call fcn.0040b370
test eax, eax
je 0x40aa80
mov eax, dword [0x4363b4]
and eax, 0xffffff7f
mov dword [0x4363b4], eax
lea ecx, [ebp - 0x158]
call fcn.00401140
mov ecx, 0x4372b8
call fcn.0040b470
movzx ecx, al
test ecx, ecx
je 0x40abcf
mov ecx, 0x4372b8
call fcn.0040b450
mov dword [ebp - 0x25c], eax
push str.AutoInstall
lea ecx, [ebp - 0x158]
call fcn.00401280
mov edx, dword [ebp - 0x25c]
movzx eax, word [edx]
push eax
lea ecx, [ebp - 0x158]
call fcn.00402260
push 0
lea ecx, [ebp - 0x158]
call fcn.00412200
push eax
call fcn.00406600
add esp, 8
test eax, eax
jne 0x40ab50
lea ecx, [ebp - 0x158]
call fcn.00412200
push eax
push 0xe
push 0
call fcn.0040f2d0
add esp, 0xc
mov dword [ebp - 0x344], 6
lea ecx, [ebp - 0x158]
call fcn.00401240
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x344]
jmp 0x40b31b
mov ecx, dword [ebp - 0x25c]
add ecx, 2
mov dword [ebp - 0x25c], ecx
mov edx, dword [ebp - 0x25c]
movzx eax, word [edx]
cmp eax, 0x30
jl 0x40ab7f
mov ecx, dword [ebp - 0x25c]
movzx edx, word [ecx]
cmp edx, 0x39
jle 0x40aab0
mov eax, dword [ebp - 0x25c]
movzx ecx, word [eax]
cmp ecx, 0x61
jl 0x40ab9f
mov edx, dword [ebp - 0x25c]
movzx eax, word [edx]
cmp eax, 0x7a
jle 0x40aab0
mov ecx, dword [ebp - 0x25c]
movzx edx, word [ecx]
cmp edx, 0x41
jl 0x40abbf
mov eax, dword [ebp - 0x25c]
movzx ecx, word [eax]
cmp ecx, 0x5a
jle 0x40aab0
push str.AutoInstall
lea ecx, [ebp - 0x158]
call fcn.00401280
mov byte [ebp - 0x159], 0
lea ecx, [ebp - 0x158]
call fcn.00405320
movzx edx, al
test edx, edx
je 0x40ac12
push 0
push str.ExecuteFile
call fcn.00406600
add esp, 8
test eax, eax
je 0x40ac12
push str.ExecuteFile
lea ecx, [ebp - 0x158]
call fcn.00401280
mov byte [ebp - 0x159], 1
lea ecx, [ebp - 0x158]
call fcn.00405320
movzx eax, al
test eax, eax
je 0x40ac47
push 0
push str.RunProgram
call fcn.00406600
add esp, 8
test eax, eax
je 0x40ac47
push str.RunProgram
lea ecx, [ebp - 0x158]
call fcn.00401280
mov ecx, 0x4372b8
call fcn.0040b470
movzx ecx, al
test ecx, ecx
jne 0x40ad00
mov ecx, 0x4372b8
call fcn.0040b490
movzx edx, al
test edx, edx
jne 0x40ad00
mov eax, dword [0x4363b4]
and eax, 0xc0
cmp eax, 0x80
jne 0x40ad00
mov ecx, dword [0x43720c]
push ecx
mov edx, dword [0x437210]
push edx
call fcn.0040f160
add esp, 8
test eax, eax
jne 0x40ad00
movzx eax, byte [0x437240]
test eax, eax
je 0x40acb7
lea ecx, [ebp - 0x158]
call fcn.00401240
jmp 0x40a9b7
mov dword [ebp - 0x348], 5
lea ecx, [ebp - 0x158]
call fcn.00401240
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x348]
jmp 0x40b31b
mov ecx, 0x437250
call fcn.00405320
movzx ecx, al
test ecx, ecx
je 0x40ad44
push str.7ZipSfx._03x
lea edx, [ebp - 0x354]
push edx
call fcn.00405080
add esp, 8
push eax
mov ecx, 0x437250
call fcn.00403550
lea ecx, [ebp - 0x354]
call fcn.00401240
mov byte [0x4371fc], 0
jmp 0x40ad98
push 0x437250
lea ecx, [ebp - 0x268]
call fcn.00403eb0
lea eax, [ebp - 0x268]
push eax
call fcn.00408c10
add esp, 4
lea ecx, [ebp - 0x268]
call fcn.00405320
movzx ecx, al
test ecx, ecx
jne 0x40ad86
lea edx, [ebp - 0x268]
push edx
mov ecx, 0x437250
call fcn.00403550
mov byte [0x4371fc], 1
lea ecx, [ebp - 0x268]
call fcn.00401240
mov ecx, 0x437250
call fcn.00412200
mov esi, eax
mov ecx, 0x437250
call fcn.00412210
movzx eax, word [esi + eax*2 - 2]
cmp eax, 0x5c
je 0x40add8
mov ecx, 0x437250
call fcn.00412200
mov esi, eax
mov ecx, 0x437250
call fcn.00412210
movzx ecx, word [esi + eax*2 - 2]
cmp ecx, 0x2f
jne 0x40adf0
mov ecx, 0x437250
call fcn.00412210
sub eax, 1
push eax
mov ecx, 0x437250
call fcn.00402190
mov ecx, 0x4372b8
call fcn.0040b490
movzx edx, al
test edx, edx
je 0x40ae0e
mov eax, dword [0x437230]
or eax, 3
mov dword [0x437230], eax
push str.PreExtract
lea ecx, [ebp - 0x10]
call fcn.00402170
mov ecx, 0x4372b8
call fcn.0040b450
movzx ecx, word [eax]
push ecx
lea ecx, [ebp - 0x10]
call fcn.00402260
push 0
lea ecx, [ebp - 0x10]
call fcn.00412200
push eax
call fcn.00406600
add esp, 8
test eax, eax
je 0x40aebc
mov ecx, 0x4372b8
call fcn.0040b4b0
movzx edx, al
test edx, edx
jne 0x40aebc
push 0
mov ecx, 0x437298
call fcn.0040b410
push eax
push str.SfxVarApiPath
call fcn.00405000
add esp, 0xc
call fcn.00408c90
push 0x42f938
push 0x42f938
lea ecx, [ebp - 0x360]
call fcn.00402170
push eax
mov ecx, 0x4372b8
call fcn.0040b450
push eax
mov ecx, 0x437298
call fcn.0040b410
push eax
push str.PreExtract
call fcn.00403570
add esp, 0x14
lea ecx, [ebp - 0x360]
call fcn.00401240
cmp dword [0x437394], 0
jne 0x40aed7
push 0x437250
call fcn.00404430
add esp, 4
mov dword [ebp - 4], eax
jmp 0x40aef0
call fcn.0040f460
test eax, eax
je 0x40aee9
mov dword [ebp - 4], 0
jmp 0x40aef0
mov dword [ebp - 4], 0x80004005
cmp dword [ebp - 4], 0
je 0x40af4c
call fcn.00409930
mov dword [ebp - 0x364], 8
lea ecx, [ebp - 0x10]
call fcn.00401240
lea ecx, [ebp - 0x158]
call fcn.00401240
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x364]
jmp 0x40b31b
call fcn.00408c90
mov ecx, 0x4372b8
call fcn.0040b4b0
movzx eax, al
test eax, eax
je 0x40af71
movzx ecx, byte [0x4371fc]
test ecx, ecx
jne 0x40b1b5
lea ecx, [ebp - 0x280]
call fcn.00401140
lea ecx, [ebp - 0x274]
call fcn.00401140
mov ecx, 0x4372b8
call fcn.0040b470
movzx edx, al
test edx, edx
jne 0x40afa7
lea eax, [ebp - 0x280]
push eax
call fcn.004029a0
add esp, 4
lea ecx, [ebp - 0x158]
call fcn.00405320
movzx ecx, al
test ecx, ecx
je 0x40b0fe
movzx edx, byte [0x4371fc]
test edx, edx
jne 0x40b0fc
mov dword [ebp - 0x24], str.setup.exe
mov eax, dword [ebp - 0x24]
push eax
push 0x42fb9c
push 0x437250
lea ecx, [ebp - 0x370]
push ecx
call fcn.0041dd60
add esp, 0xc
push eax
lea edx, [ebp - 0x37c]
push edx
call fcn.0041dd60
add esp, 0xc
mov ecx, eax
call fcn.00412200
push eax
lea ecx, [ebp - 0x274]
call fcn.00401280
lea ecx, [ebp - 0x37c]
call fcn.004125c0
lea ecx, [ebp - 0x370]
call fcn.004125c0
lea ecx, [ebp - 0x274]
call fcn.00412200
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40b0b8
call fcn.00409930
push 0xf
push 0
call fcn.0040f2d0
add esp, 8
mov dword [ebp - 0x380], 7
lea ecx, [ebp - 0x274]
call fcn.00401240
lea ecx, [ebp - 0x280]
call fcn.00401240
lea ecx, [ebp - 0x10]
call fcn.00401240
lea ecx, [ebp - 0x158]
call fcn.00401240
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x380]
jmp 0x40b31b
mov eax, dword [ebp - 0x194]
push eax
lea ecx, [ebp - 0x280]
push ecx
movzx edx, byte [ebp - 0x159]
push edx
mov ecx, 0x437250
call fcn.00412200
push eax
mov eax, dword [ebp - 0x24]
push eax
lea ecx, [ebp - 0x38c]
call fcn.00402170
push eax
call fcn.00403080
add esp, 0x14
lea ecx, [ebp - 0x38c]
call fcn.00401240
jmp 0x40b136
mov ecx, dword [ebp - 0x194]
push ecx
lea edx, [ebp - 0x280]
push edx
mov ecx, 0x4372b8
call fcn.0040b450
push eax
mov ecx, 0x437250
call fcn.00412200
push eax
lea ecx, [ebp - 0x158]
call fcn.00412200
push eax
call fcn.00403570
add esp, 0x14
cmp dword [0x437398], 0
jne 0x40b19f
call fcn.00408c90
mov eax, dword [ebp - 0x160]
push eax
mov ecx, 0x4372b8
call fcn.0040b450
push eax
push str.Shortcut
push 0x4094f0
call fcn.00409660
add esp, 0x10
mov ecx, 0x43725c
call fcn.00412200
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov ecx, dword [ebp - 0x28]
push ecx
mov ecx, 0x4372b8
call fcn.0040b450
push eax
push str.Delete
push 0x409620
call fcn.00409660
add esp, 0x10
call fcn.00409930
lea ecx, [ebp - 0x274]
call fcn.00401240
lea ecx, [ebp - 0x280]
call fcn.00401240
cmp dword [0x4363c0], 0xffffffff
jne 0x40b1d9
mov ecx, 0x4372b8
call fcn.0040b490
movzx edx, al
test edx, edx
jne 0x40b1d9
mov dword [0x4363c0], 1
cmp dword [0x4363c0], 0
jle 0x40b240
push 0
push str.FinishMessage
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40b240
cmp dword [0x4363c0], 0x3e7
jle 0x40b210
mov dword [0x4363c0], 0x3e7
lea ecx, [ebp - 0x2d0]
call fcn.0040b380
push 0
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [0x437218]
push ecx
push 0x11
lea ecx, [ebp - 0x2d0]
call fcn.0040d3c0
lea ecx, [ebp - 0x2d0]
call fcn.0040f140
mov ecx, 0x4372b8
call fcn.0040b4b0
movzx edx, al
test edx, edx
jne 0x40b2cf
cmp dword [0x437398], 0
jne 0x40b2cf
mov eax, dword [ebp - 0x164]
mov dword [ebp - 0x3a8], eax
cmp dword [ebp - 0x3a8], 0
je 0x40b27a
cmp dword [ebp - 0x3a8], 1
je 0x40b27c
jmp 0x40b295
jmp 0x40b2cf
sub esp, 0xc
mov ecx, esp
push 0x437344
call fcn.00403eb0
call fcn.0040b540
add esp, 0xc
jmp 0x40b2cf
push 0
push str.SelfDelete
call fcn.00406600
add esp, 8
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x40b2cf
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx]
cmp edx, 0x31
jne 0x40b2cf
sub esp, 0xc
mov ecx, esp
push 0x437344
call fcn.00403eb0
call fcn.0040b540
add esp, 0xc
mov dword [ebp - 0x398], 0
lea ecx, [ebp - 0x10]
call fcn.00401240
lea ecx, [ebp - 0x158]
call fcn.00401240
lea ecx, [ebp - 0x1c]
call fcn.00401240
lea ecx, [ebp - 0x178]
call fcn.00401240
lea ecx, [ebp - 0x14c]
call fcn.00401240
lea ecx, [ebp - 0x184]
call fcn.00401240
mov eax, dword [ebp - 0x398]
pop esi
mov esp, ebp
pop ebp
ret