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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x214
push esi
push 0x4080f0
call sub.api_ms_win_crt_runtime_l1_1_0.dll__set_new_handler
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x4c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0x1a2890
je 0x408157
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0x7a33
je 0x408157
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0xf4240
jne 0x408172
mov eax, dword [ebp - 0x4c]
neg eax
xor eax, dword [ebp - 0x4c]
and eax, 1
jne 0x408172
mov ecx, dword [ebp - 0x4c]
add ecx, 0x221e
mov dword [ebp - 0x4c], ecx
jmp 0x408157
mov dword [ebp - 0x98], 0xffffffff
mov dword [ebp - 0x9c], 0xffffffff
mov dword [ebp - 0xa0], 0xffffffff
lea ecx, [ebp - 0x3c]
call fcn.004012a0
lea ecx, [ebp - 0x48]
call fcn.004012a0
lea ecx, [ebp - 0x20]
call fcn.004012a0
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [ebp - 0xa8], eax
push str.FreeConsole
mov edx, dword [ebp - 0xa8]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xac], eax
call dword [ebp - 0xac]
call fcn.00407d10
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.00405e40
add esp, 8
push eax
lea ecx, [ebp - 0x20]
call fcn.00402100
lea ecx, [ebp - 0x20]
push ecx
call fcn.00406380
add esp, 4
lea ecx, [ebp - 0x20]
call fcn.00401330
mov dword [ebp - 0x14], eax
push str.sfxversion
mov edx, dword [ebp - 0x14]
push edx
call fcn.00407300
add esp, 8
test eax, eax
je 0x408256
call fcn.00407e50
mov dword [ebp - 0xb0], 0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0xb0]
jmp 0x408fa7
push 0x208
push 0x208
mov ecx, 0x429558
call fcn.00404ee0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x4082b0
push 6
push 1
call fcn.0040b610
add esp, 8
mov dword [ebp - 0xb4], 1
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0xb4]
jmp 0x408fa7
mov ecx, 0x429558
call fcn.00406350
push str.sfxtest
mov eax, dword [ebp - 0x14]
push eax
call fcn.00407300
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x408301
mov dword [ebp - 0xb8], 0x64
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0xb8]
jmp 0x408fa7
push 0x429558
mov ecx, 0x4294fc
call fcn.004020e0
push 0x429558
mov ecx, 0x429508
call fcn.004020e0
push 0x429558
call fcn.00405040
add esp, 4
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jl 0x4083e4
mov ecx, dword [ebp - 0xc]
push ecx
mov ecx, 0x4294fc
call fcn.00402020
mov ecx, 0x429558
call fcn.00401330
mov edx, dword [ebp - 0xc]
lea eax, [eax + edx*2 + 2]
push eax
mov ecx, 0x429508
call fcn.00402100
mov ecx, 0x429558
call fcn.00401330
mov ecx, dword [ebp - 0xc]
lea edx, [eax + ecx*2 + 2]
push edx
mov ecx, 0x429520
call fcn.00402100
push 0x2e
mov ecx, 0x429520
call fcn.00419660
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jle 0x4083a2
mov eax, dword [ebp - 0xc]
push eax
mov ecx, 0x429520
call fcn.00402020
push 0x429520
mov ecx, 0x429514
call fcn.004020e0
push 4
call fcn.004051d0
add esp, 4
push eax
mov ecx, 0x429514
call fcn.00418ee0
mov ecx, 0x429520
call fcn.00401330
mov dword [0x4294b8], eax
mov ecx, 0x429514
call fcn.00401330
mov dword [0x4294bc], eax
call fcn.00405560
push eax
mov ecx, 0x42952c
call fcn.00402100
mov ecx, 0x429558
call fcn.00401330
push eax
mov ecx, 0x429538
call fcn.00401440
movzx ecx, al
test ecx, ecx
jne 0x40844e
mov ecx, 0x429558
call fcn.00401330
push eax
push 7
push 1
call fcn.0040b610
add esp, 0xc
mov dword [ebp - 0x68], 2
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x68]
jmp 0x408fa7
lea ecx, [ebp - 0x58]
call fcn.00403b00
mov ecx, 0x429564
call fcn.00406f20
lea edx, [ebp - 0x58]
push edx
push 0
mov ecx, 0x429538
call fcn.004072e0
push eax
call fcn.00405d70
add esp, 0xc
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x4084b0
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x6c], eax
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x6c]
jmp 0x408fa7
push str.sfxconfig
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.00407300
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x40858d
mov edx, dword [ebp - 4]
movzx eax, word [edx]
cmp eax, 0x3a
jne 0x4084e2
mov ecx, dword [ebp - 4]
add ecx, 2
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 4]
movzx eax, word [edx]
test eax, eax
je 0x408502
mov ecx, dword [ebp - 4]
movzx edx, word [ecx]
cmp edx, 0x20
ja 0x408502
mov eax, dword [ebp - 4]
add eax, 2
mov dword [ebp - 4], eax
jmp 0x4084e2
mov ecx, dword [ebp - 4]
movzx edx, word [ecx]
test edx, edx
je 0x40855e
lea eax, [ebp - 0x58]
push eax
mov ecx, dword [ebp - 4]
push ecx
call fcn.00407820
add esp, 8
movzx edx, al
test edx, edx
jne 0x40855e
push 0xa
push 0
call fcn.0040b610
add esp, 8
mov dword [ebp - 0x70], 4
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x70]
jmp 0x408fa7
mov dword [ebp - 0x74], 0
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x74]
jmp 0x408fa7
mov dword [ebp - 0x24], 0x429090
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0
je 0x4085e2
mov ecx, dword [ebp - 0x24]
mov edx, dword [ecx]
push edx
push str.SfxString_d
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0
mov ecx, dword [ebp - 0x24]
mov edx, dword [ecx]
push edx
call fcn.004051d0
add esp, 4
push eax
lea eax, [ebp - 0x214]
push eax
call fcn.004069a0
add esp, 0xc
mov ecx, dword [ebp - 0x24]
add ecx, 0x10
mov dword [ebp - 0x24], ecx
jmp 0x408594
mov edx, dword [ebp - 0x14]
push edx
mov ecx, 0x429538
call fcn.00407990
call fcn.00401900
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jne 0x40862d
mov dword [ebp - 0x78], 0x20
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x78]
jmp 0x408fa7
call fcn.004079c0
mov ecx, 0x429538
call fcn.004014c0
mov dword [ebp - 0x5c], 0
lea eax, [ebp - 0x5c]
push eax
push str.SetEnvironment
call fcn.00405aa0
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x4086d8
mov ecx, dword [ebp - 4]
push ecx
lea ecx, [ebp - 0xc4]
call fcn.00401780
push 0x3d
lea ecx, [ebp - 0xc4]
call fcn.00404db0
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jg 0x40868f
lea ecx, [ebp - 0xc4]
call fcn.004017d0
jmp 0x4086d8
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [ebp - 0xc4]
call fcn.00402020
push 0
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
lea edx, [ecx + eax*2 + 2]
push edx
lea ecx, [ebp - 0xc4]
call fcn.00401330
push eax
call fcn.004069a0
add esp, 0xc
mov eax, dword [ebp - 0x5c]
add eax, 1
mov dword [ebp - 0x5c], eax
lea ecx, [ebp - 0xc4]
call fcn.004017d0
jmp 0x408643
call fcn.00407c60
cmp dword [0x429300], 0xffffffff
jne 0x4086f0
mov dword [0x429300], 0
mov ecx, 0x429538
call fcn.004072c0
movzx ecx, al
test ecx, ecx
je 0x408788
push 0
push str.HelpText
call fcn.00405aa0
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x40872a
push 0x18
call fcn.004051d0
add esp, 4
mov dword [ebp - 4], eax
lea ecx, [ebp - 0x1bc]
call fcn.00406d20
push 0
mov edx, dword [ebp - 4]
push edx
mov eax, dword [0x4294b8]
push eax
push 0x11
lea ecx, [ebp - 0x1bc]
call fcn.0040b7c0
mov dword [ebp - 0x7c], 0
lea ecx, [ebp - 0x1bc]
call fcn.00406e30
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x7c]
jmp 0x408fa7
mov ecx, 0x429538
call fcn.00407240
movzx ecx, al
test ecx, ecx
je 0x4087ab
mov edx, dword [0x429300]
and edx, 0xfffffeff
mov dword [0x429300], edx
push 6
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
push 0
push str.InstallPath
call fcn.00405aa0
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x4087e2
mov eax, dword [ebp - 4]
push eax
mov ecx, 0x4294f0
call fcn.00402100
mov byte [0x4294e1], 1
push 0x4294f0
call fcn.004077a0
add esp, 4
push 0
push str.BeginPrompt
call fcn.00405aa0
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x40888c
mov ecx, 0x429538
call fcn.00407240
movzx ecx, al
test ecx, ecx
jne 0x40888c
mov edx, dword [ebp - 4]
push edx
mov eax, dword [0x4294b8]
push eax
call fcn.0040b4b0
add esp, 8
test eax, eax
jne 0x408861
mov dword [ebp - 0x80], 5
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x80]
jmp 0x408fa7
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je 0x40888c
push 1
mov ecx, 0x429538
call fcn.00402060
push 1
mov ecx, 0x429538
call fcn.00402040
lea ecx, [ebp - 0x30]
call fcn.004012a0
mov ecx, 0x429538
call fcn.00407260
movzx edx, al
test edx, edx
je 0x40899f
mov ecx, 0x429538
call fcn.00407280
mov dword [ebp - 0x10], eax
push str.AutoInstall
lea ecx, [ebp - 0x30]
call fcn.00402100
mov eax, dword [ebp - 0x10]
movzx ecx, word [eax]
push ecx
lea ecx, [ebp - 0x30]
call fcn.004017f0
push 0
lea ecx, [ebp - 0x30]
call fcn.00401330
push eax
call fcn.00405aa0
add esp, 8
test eax, eax
jne 0x40893b
lea ecx, [ebp - 0x30]
call fcn.00401330
push eax
push 0xe
push 0
call fcn.0040b610
add esp, 0xc
mov dword [ebp - 0x84], 6
lea ecx, [ebp - 0x30]
call fcn.004017d0
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x84]
jmp 0x408fa7
mov edx, dword [ebp - 0x10]
add edx, 2
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x10]
movzx ecx, word [eax]
cmp ecx, 0x30
jl 0x40895e
mov edx, dword [ebp - 0x10]
movzx eax, word [edx]
cmp eax, 0x39
jle 0x4088b6
mov ecx, dword [ebp - 0x10]
movzx edx, word [ecx]
cmp edx, 0x61
jl 0x408978
mov eax, dword [ebp - 0x10]
movzx ecx, word [eax]
cmp ecx, 0x7a
jle 0x4088b6
mov edx, dword [ebp - 0x10]
movzx eax, word [edx]
cmp eax, 0x41
jl 0x408992
mov ecx, dword [ebp - 0x10]
movzx edx, word [ecx]
cmp edx, 0x5a
jle 0x4088b6
push str.AutoInstall
lea ecx, [ebp - 0x30]
call fcn.00402100
mov byte [ebp - 5], 0
lea ecx, [ebp - 0x30]
call fcn.00405c10
movzx eax, al
test eax, eax
je 0x4089d6
push 0
push str.ExecuteFile
call fcn.00405aa0
add esp, 8
test eax, eax
je 0x4089d6
push str.ExecuteFile
lea ecx, [ebp - 0x30]
call fcn.00402100
mov byte [ebp - 5], 1
lea ecx, [ebp - 0x30]
call fcn.00405c10
movzx ecx, al
test ecx, ecx
je 0x408a05
push 0
push str.RunProgram
call fcn.00405aa0
add esp, 8
test eax, eax
je 0x408a05
push str.RunProgram
lea ecx, [ebp - 0x30]
call fcn.00402100
mov ecx, 0x429538
call fcn.00407260
movzx edx, al
test edx, edx
jne 0x408ab1
mov ecx, 0x429538
call fcn.00407240
movzx eax, al
test eax, eax
jne 0x408ab1
mov ecx, dword [0x429300]
and ecx, 0xc0
cmp ecx, 0x80
jne 0x408ab1
mov edx, dword [0x4294cc]
push edx
mov eax, dword [0x4294c8]
push eax
call fcn.0040b760
add esp, 8
test eax, eax
jne 0x408ab1
movzx ecx, byte [0x4294e0]
test ecx, ecx
je 0x408a74
lea ecx, [ebp - 0x30]
call fcn.004017d0
jmp 0x4087ef
mov dword [ebp - 0x88], 5
lea ecx, [ebp - 0x30]
call fcn.004017d0
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x88]
jmp 0x408fa7
mov ecx, 0x4294f0
call fcn.00405c10
movzx edx, al
test edx, edx
je 0x408af5
push str.7ZipSfx._03x
lea eax, [ebp - 0xf4]
push eax
call fcn.004047a0
add esp, 8
push eax
mov ecx, 0x4294f0
call fcn.004020e0
lea ecx, [ebp - 0xf4]
call fcn.004017d0
mov byte [0x4294e1], 0
jmp 0x408b49
push 0x4294f0
lea ecx, [ebp - 0xdc]
call fcn.00402a60
lea ecx, [ebp - 0xdc]
push ecx
call fcn.004077a0
add esp, 4
lea ecx, [ebp - 0xdc]
call fcn.00405c10
movzx edx, al
test edx, edx
jne 0x408b37
lea eax, [ebp - 0xdc]
push eax
mov ecx, 0x4294f0
call fcn.004020e0
mov byte [0x4294e1], 1
lea ecx, [ebp - 0xdc]
call fcn.004017d0
mov ecx, 0x4294f0
call fcn.00401330
mov esi, eax
mov ecx, 0x4294f0
call fcn.004026f0
movzx ecx, word [esi + eax*2 - 2]
cmp ecx, 0x5c
je 0x408b89
mov ecx, 0x4294f0
call fcn.00401330
mov esi, eax
mov ecx, 0x4294f0
call fcn.004026f0
movzx edx, word [esi + eax*2 - 2]
cmp edx, 0x2f
jne 0x408ba1
mov ecx, 0x4294f0
call fcn.004026f0
sub eax, 1
push eax
mov ecx, 0x4294f0
call fcn.00402020
mov ecx, 0x429538
call fcn.00407240
movzx eax, al
test eax, eax
je 0x408bc1
mov ecx, dword [0x4294dc]
or ecx, 3
mov dword [0x4294dc], ecx
push 0x4294f0
call fcn.00402f30
add esp, 4
mov dword [ebp - 0x8c], eax
cmp dword [ebp - 0x8c], 0
je 0x408c1f
call fcn.00407ce0
mov dword [ebp - 0x90], 8
lea ecx, [ebp - 0x30]
call fcn.004017d0
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x90]
jmp 0x408fa7
call fcn.00407c60
mov ecx, 0x429538
call fcn.004072a0
movzx edx, al
test edx, edx
je 0x408c44
movzx eax, byte [0x4294e1]
test eax, eax
jne 0x408e5f
lea ecx, [ebp - 0xd0]
call fcn.004012a0
lea ecx, [ebp - 0xe8]
call fcn.004012a0
mov ecx, 0x429538
call fcn.00407260
movzx ecx, al
test ecx, ecx
jne 0x408c7a
lea edx, [ebp - 0xd0]
push edx
call fcn.00402660
add esp, 4
lea ecx, [ebp - 0x30]
call fcn.00405c10
movzx eax, al
test eax, eax
je 0x408db4
movzx ecx, byte [0x4294e1]
test ecx, ecx
jne 0x408db2
mov dword [ebp - 4], str.setup.exe
mov edx, dword [ebp - 4]
push edx
push 0x4248d4
push 0x4294f0
lea eax, [ebp - 0x10c]
push eax
call fcn.00418da0
add esp, 0xc
push eax
lea ecx, [ebp - 0x100]
push ecx
call fcn.00418da0
add esp, 0xc
mov ecx, eax
call fcn.00401330
push eax
lea ecx, [ebp - 0xe8]
call fcn.00402100
lea ecx, [ebp - 0x100]
call fcn.004017a0
lea ecx, [ebp - 0x10c]
call fcn.004017a0
lea ecx, [ebp - 0xe8]
call fcn.00401330
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x408d74
call fcn.00407ce0
push 0xf
push 0
call fcn.0040b610
add esp, 8
mov dword [ebp - 0x94], 7
lea ecx, [ebp - 0xe8]
call fcn.004017d0
lea ecx, [ebp - 0xd0]
call fcn.004017d0
lea ecx, [ebp - 0x30]
call fcn.004017d0
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0x94]
jmp 0x408fa7
mov edx, dword [ebp - 0x14]
push edx
lea eax, [ebp - 0xd0]
push eax
movzx ecx, byte [ebp - 5]
push ecx
mov ecx, 0x4294f0
call fcn.00401330
push eax
mov edx, dword [ebp - 4]
push edx
lea ecx, [ebp - 0x118]
call fcn.00401780
push eax
call fcn.00402280
add esp, 0x14
lea ecx, [ebp - 0x118]
call fcn.004017d0
jmp 0x408de6
mov eax, dword [ebp - 0x14]
push eax
lea ecx, [ebp - 0xd0]
push ecx
mov ecx, 0x429538
call fcn.00407280
push eax
mov ecx, 0x4294f0
call fcn.00401330
push eax
lea ecx, [ebp - 0x30]
call fcn.00401330
push eax
call fcn.00402150
add esp, 0x14
call fcn.00407c60
mov edx, dword [ebp - 0x98]
push edx
mov ecx, 0x429538
call fcn.00407280
push eax
push str.Shortcut
push 0x407460
call fcn.00407590
add esp, 0x10
mov ecx, 0x4294fc
call fcn.00401330
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, dword [ebp - 0x9c]
push eax
mov ecx, 0x429538
call fcn.00407280
push eax
push str.Delete
push 0x407420
call fcn.00407590
add esp, 0x10
call fcn.00407ce0
lea ecx, [ebp - 0xe8]
call fcn.004017d0
lea ecx, [ebp - 0xd0]
call fcn.004017d0
cmp dword [0x42930c], 0xffffffff
jne 0x408e83
mov ecx, 0x429538
call fcn.00407240
movzx ecx, al
test ecx, ecx
jne 0x408e83
mov dword [0x42930c], 1
cmp dword [0x42930c], 0
jle 0x408ee9
push 0
push str.FinishMessage
call fcn.00405aa0
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x408ee9
cmp dword [0x42930c], 0x3e7
jle 0x408eba
mov dword [0x42930c], 0x3e7
lea ecx, [ebp - 0x168]
call fcn.00406cf0
push 0
mov edx, dword [ebp - 4]
push edx
mov eax, dword [0x4294b8]
push eax
push 0x11
lea ecx, [ebp - 0x168]
call fcn.0040b7c0
lea ecx, [ebp - 0x168]
call fcn.00406e30
mov ecx, 0x429538
call fcn.004072a0
movzx ecx, al
test ecx, ecx
jne 0x408f6f
mov edx, dword [ebp - 0xa0]
mov dword [ebp - 0x64], edx
cmp dword [ebp - 0x64], 0
je 0x408f11
cmp dword [ebp - 0x64], 1
je 0x408f13
jmp 0x408f2c
jmp 0x408f6f
sub esp, 0xc
mov ecx, esp
push 0x429558
call fcn.00402a60
call fcn.00406fb0
add esp, 0xc
jmp 0x408f6f
push 0
push str.SelfDelete
call fcn.00405aa0
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x408f6f
mov eax, 2
imul ecx, eax, 0
mov edx, dword [ebp - 4]
movzx eax, word [edx + ecx]
cmp eax, 0x31
jne 0x408f6f
sub esp, 0xc
mov ecx, esp
push 0x429558
call fcn.00402a60
call fcn.00406fb0
add esp, 0xc
mov dword [ebp - 0xa4], 0
lea ecx, [ebp - 0x30]
call fcn.004017d0
lea ecx, [ebp - 0x58]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x48]
call fcn.004017d0
lea ecx, [ebp - 0x3c]
call fcn.004017d0
mov eax, dword [ebp - 0xa4]
pop esi
mov esp, ebp
pop ebp
ret