Function at 0x4051dd
Capabilities:
Accept command line arguments
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, 0x284
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetVersion]
push 6
pop ecx
cmp cx, ax
sbb esi, esi
neg esi
push 0
pop ebx
je 0x40522c
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.SetDefaultDllDirectories
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x405222
push 0xc00
call eax
jmp 0x405224
mov esi, ebx
test esi, esi
jne 0x40539f
push str.UXTHEME
call fcn.0040426f
mov dword [esp], str.USERENV
call fcn.0040426f
mov dword [esp], str.SETUPAPI
call fcn.0040426f
mov dword [esp], str.msvcrt
call fcn.0040426f
mov dword [esp], str.combase
call fcn.0040426f
mov dword [esp], str.sspicli
call fcn.0040426f
mov dword [esp], str.ucrtbase
call fcn.0040426f
mov dword [esp], str.cryptbase
call fcn.0040426f
mov dword [esp], str.bcryptprimitives
call fcn.0040426f
mov dword [esp], str.imm32
call fcn.0040426f
mov dword [esp], str.msctf
call fcn.0040426f
mov dword [esp], str.dwmapi
call fcn.0040426f
mov dword [esp], str.SHCore
call fcn.0040426f
mov dword [esp], str.profapi
call fcn.0040426f
mov dword [esp], str.ExplorerFrame
call fcn.0040426f
mov dword [esp], str.duser
call fcn.0040426f
mov dword [esp], str.dui70
call fcn.0040426f
mov dword [esp], str.propsys
call fcn.0040426f
mov dword [esp], str.cfgmgr32
call fcn.0040426f
mov dword [esp], str.cryptsp
call fcn.0040426f
mov dword [esp], str.msasn1
call fcn.0040426f
mov dword [esp], str.crypt32
call fcn.0040426f
mov dword [esp], str.rsaenh
call fcn.0040426f
mov dword [esp], str.bcrypt
call fcn.0040426f
mov dword [esp], str.urlmon
call fcn.0040426f
mov dword [esp], str.iertutil
call fcn.0040426f
mov dword [esp], str.wininet
call fcn.0040426f
mov dword [esp], str.secur32
call fcn.0040426f
mov dword [esp], str.comres
call fcn.0040426f
mov dword [esp], str.clbcatq
call fcn.0040426f
mov dword [esp], str.riched20
call fcn.0040426f
pop ecx
push 0x4051c6
call fcn.0041c0ab
pop ecx
call fcn.00401df9
lea eax, [ebp - 0x284]
push eax
mov dword [ebp - 0x284], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x406a41
cmp dword [ebp - 0x274], 2
jne 0x406a41
cmp dword [ebp - 0x280], 5
jb 0x406a41
or eax, 0xffffffff
mov dword [ebp - 0x80], eax
or eax, eax
mov esi, 0x426764
lea ecx, [ebp - 0xb4]
mov byte [str.___InstallEnd__], 0x3b
mov byte [str.___Install__UTF_8_], 0x3b
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x20], esi
mov byte [ebp - 1], bl
mov byte [ebp - 8], bl
mov byte [ebp - 9], bl
mov byte [ebp - 3], bl
call fcn.0041045f
lea ecx, [ebp - 0xfc]
call fcn.0041045f
push 0x4269a4
lea ecx, [ebp - 0xe4]
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], ebx
call fcn.00410428
lea eax, [ebp - 0xb4]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.004041f5
pop ecx
pop ecx
push eax
lea ecx, [ebp - 0xe4]
call fcn.0041071e
lea eax, [ebp - 0xe4]
push eax
call fcn.00403554
mov edi, dword [ebp - 0xe4]
add edi, 2
mov dword [esp], 0x4269a8
push edi
call fcn.00404150
pop ecx
pop ecx
push 0x3a
pop ecx
push 0x20
pop esi
test eax, eax
je 0x4054de
cmp word [eax], cx
jne 0x4054de
add eax, 2
push eax
call fcn.0041bcde
movzx edx, word [0x42f49c]
pop ecx
lea ecx, [eax - 1]
movzx eax, ax
cmp ecx, 0xfffe
cmovbe edx, eax
mov word [0x42f49c], dx
jmp 0x4054c7
add edi, 2
cmp word [edi], si
ja 0x4054c4
jmp 0x4054d6
cmp ax, si
ja 0x4054de
add edi, 2
movzx eax, word [edi]
test ax, ax
jne 0x4054ce
call fcn.00404e65
push str.sfxversion
push edi
call fcn.00404150
pop ecx
pop ecx
test eax, eax
je 0x4054fe
call fcn.00404fb0
jmp 0x406a11
push str.sfxwaitall
push edi
call fcn.00404150
pop ecx
pop ecx
test eax, eax
je 0x40551d
push eax
call fcn.00403e1a
pop ecx
mov ebx, eax
jmp 0x406a11
push str.sfxelevation
push edi
mov byte [ebp - 2], bl
call fcn.00404150
pop ecx
pop ecx
xor ecx, ecx
inc ecx
test eax, eax
je 0x40554b
mov byte [ebp - 2], cl
jmp 0x405541
cmp cx, si
ja 0x405549
add eax, 2
movzx ecx, word [eax]
test cx, cx
jne 0x405539
mov edi, eax
mov eax, 0x208
push eax
push eax
mov ecx, 0x42f548
call fcn.0040263b
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x40557a
xor ebx, ebx
inc ebx
push 6
push ebx
call fcn.00408882
pop ecx
pop ecx
jmp 0x406a11
mov esi, dword [0x42f548]
push esi
call fcn.0040329a
xor ecx, ecx
mov dword [0x42f54c], eax
mov dword [esp], str.sfxtest
push edi
mov word [esi + eax*2], cx
call fcn.00404150
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x405768
push 0x3a
pop edx
cmp word [esi], dx
jne 0x405678
movzx ecx, word [esi + 2]
push 0x20
mov eax, ecx
pop edi
or eax, edi
sub eax, 0x61
je 0x4056cb
dec eax
dec eax
je 0x4056bc
dec eax
je 0x405636
sub eax, 0xb
je 0x4055ed
sub eax, 7
jne 0x405678
mov ebx, 0x4eeb
jmp 0x406a11
cmp word [esi + 4], dx
jne 0x406a11
movzx eax, word [esi + 6]
sub eax, 0x31
je 0x40562c
dec eax
je 0x405622
dec eax
je 0x40561e
dec eax
je 0x405614
dec eax
jne 0x406a11
push 7
jmp 0x40567a
mov ebx, 0xff
jmp 0x406a11
push 0x1f
jmp 0x40567a
mov ebx, 0xfe
jmp 0x406a11
xor eax, eax
lea ebx, [eax + 1]
jmp 0x406a11
cmp ecx, 0x44
jne 0x405680
cmp word [esi + 4], dx
jne 0x405678
add esi, 6
movzx eax, word [esi]
cmp ax, di
jbe 0x40566f
push 0x3a
pop ebx
cmp ax, bx
je 0x40566a
push eax
mov ecx, 0x42f594
call fcn.004010a2
add esi, 2
movzx eax, word [esi]
cmp ax, di
ja 0x40564f
push 0x3a
xor ebx, ebx
pop edx
cmp dword [0x42f598], 0
jne 0x405683
push 0x64
pop ebx
jmp 0x406a11
add esi, 4
mov dword [0x42f58c], ebx
cmp word [esi], dx
jne 0x4056a8
lea eax, [esi + 2]
push eax
call fcn.0041bcde
pop ecx
mov dword [0x42f58c], eax
cmp eax, 0xe10
ja 0x4056a8
test eax, eax
jne 0x4056b2
mov dword [0x42f58c], 0xa
xor eax, eax
inc eax
mov dword [0x42f590], eax
jmp 0x4056da
xor eax, eax
cmp word [esi + 4], 0x63
sete al
add eax, 3
jmp 0x4056b5
mov dword [0x42f590], 2
jmp 0x4056da
add esi, 2
cmp word [esi], di
ja 0x4056d7
jmp 0x4056e9
cmp ax, di
ja 0x4056f1
add esi, 2
movzx eax, word [esi]
test ax, ax
jne 0x4056e1
push str.sfxconfig
push esi
mov edi, esi
call fcn.00404150
pop ecx
pop ecx
mov ecx, eax
test ecx, ecx
je 0x405768
push 0x3a
pop eax
cmp word [ecx], ax
jne 0x405711
add ecx, 2
movzx eax, word [ecx]
test ax, ax
je 0x40572c
push 0x20
pop edx
cmp ax, dx
ja 0x40572c
add ecx, 2
movzx eax, word [ecx]
test ax, ax
jne 0x40571c
mov eax, dword [ebp - 0xb4]
xor edx, edx
mov dword [ebp - 0xb0], ebx
mov word [eax], dx
lea eax, [ebp - 0xb4]
push eax
push ecx
call fcn.004041f5
cmp dword [0x42f590], 2
pop ecx
pop ecx
mov edi, eax
je 0x405768
lea eax, [ebp - 0xb4]
push eax
mov ecx, 0x42f548
call fcn.00410523
push 0x42f548
mov ecx, 0x42f50c
call fcn.00410523
push 0x42f548
mov ecx, 0x42f518
call fcn.00410523
push 0x42f548
call fcn.004026ff
mov esi, eax
pop ecx
test esi, esi
js 0x405832
mov edx, dword [0x42f50c]
xor eax, eax
mov dword [0x42f510], esi
mov word [edx + esi*2], ax
mov eax, dword [0x42f548]
mov ecx, 0x42f518
lea eax, [eax + esi*2]
add eax, 2
push eax
call fcn.00410584
mov eax, dword [0x42f548]
lea eax, [eax + esi*2]
add eax, 2
mov esi, 0x42f530
push eax
mov ecx, esi
call fcn.00410584
push 0x2e
mov ecx, esi
call fcn.00410b2b
test eax, eax
jle 0x4057f9
mov ecx, dword [0x42f530]
xor edx, edx
mov dword [0x42f534], eax
mov word [ecx + eax*2], dx
push esi
mov esi, 0x42f524
mov ecx, esi
call fcn.00410523
push 4
call fcn.004027e0
pop ecx
push eax
mov ecx, esi
call fcn.0041071e
mov ecx, dword [0x42f530]
mov eax, dword [0x42f524]
mov dword [0x42f4b4], ecx
mov dword [0x42f4b8], eax
mov dword [0x42f4e0], ecx
call fcn.00402a3e
push eax
mov ecx, 0x42f53c
call fcn.00410584
push 0x24
call fcn.0041965c
pop ecx
test eax, eax
je 0x40585c
mov ecx, eax
call fcn.0040f104
mov esi, eax
mov dword [ebp - 0x58], esi
jmp 0x405861
mov esi, ebx
mov dword [ebp - 0x58], ebx
test esi, esi
je 0x40586b
mov eax, dword [esi]
push esi
call dword [eax + 4]
push dword [0x42f548]
lea ecx, [esi + 0x14]
call fcn.0040eeb7
test al, al
jne 0x405899
push dword [0x42f548]
xor eax, eax
inc eax
push 7
push eax
call fcn.00408882
add esp, 0xc
push 2
pop ebx
jmp 0x406a07
lea ecx, [ebp - 0xcc]
call fcn.00410345
lea eax, [ebp - 0xcc]
push eax
push esi
call fcn.00402ea0
pop ecx
pop ecx
test al, al
jne 0x4058c8
push 9
push ebx
call fcn.00408882
pop ecx
pop ecx
push 3
jmp 0x406226
cmp dword [0x42f590], 0
jne 0x405938
push str.sfxconfig
push edi
call fcn.00404150
pop ecx
pop ecx
test eax, eax
je 0x405938
push 0x3a
pop ecx
cmp word [eax], cx
jne 0x4058ed
add eax, 2
movzx ecx, word [eax]
test cx, cx
je 0x4069f8
push 0x20
pop edx
cmp cx, dx
ja 0x40590c
add eax, 2
movzx ecx, word [eax]
test cx, cx
jne 0x4058fc
cmp word [eax], bx
je 0x4069f8
lea ecx, [ebp - 0xcc]
push ecx
push eax
call fcn.00404976
pop ecx
pop ecx
test al, al
jne 0x4069f8
push 0xa
push ebx
call fcn.00408882
pop ecx
pop ecx
jmp 0x405961
lea ecx, [ebp - 0x18]
call fcn.00403e7d
cmp dword [ebp - 0xc8], 0
je 0x405968
push ebx
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0xcc]
push eax
call fcn.00402a56
add esp, 0xc
test al, al
jne 0x405968
push 4
jmp 0x406226
cmp dword [0x42f590], 4
je 0x4069f8
mov eax, dword [0x42e030]
mov esi, 0x42e030
jmp 0x405a04
push eax
lea eax, [ebp - 0x170]
push str.7zSfxString_d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x9c]
call fcn.0041045f
lea ecx, [ebp - 0x90]
call fcn.0041045f
lea eax, [ebp - 0x170]
push eax
lea ecx, [ebp - 0x9c]
call fcn.00410584
push dword [esi]
call fcn.004027e0
pop ecx
push eax
lea ecx, [ebp - 0x90]
call fcn.00410584
lea eax, [ebp - 0x9c]
push eax
mov ecx, 0x42f554
call fcn.00401ba8
push dword [ebp - 0x90]
lea esi, [esi + 0x10]
call fcn.004196d0
push dword [ebp - 0x9c]
call fcn.004196d0
mov eax, dword [esi]
pop ecx
pop ecx
test eax, eax
jne 0x405984
lea eax, [ebp - 0x18]
push eax
call fcn.00404a86
pop ecx
push 0x2f
pop edx
sub edi, 2
push 0x20
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x3c], edx
pop ecx
cmp word [edi], cx
jbe 0x405a35
add edi, 2
cmp word [edi], cx
ja 0x405a2a
mov dword [ebp - 0x1c], edi
movzx eax, word [edi]
test ax, ax
je 0x405a50
cmp ax, cx
ja 0x405a4d
add edi, 2
movzx eax, word [edi]
test ax, ax
jne 0x405a3d
mov dword [ebp - 0x1c], edi
movzx eax, word [edi]
cmp ax, dx
je 0x405a61
cmp eax, 0x2d
jne 0x405d31
lea esi, [edi + 2]
cmp word [esi], 0x21
je 0x405d2b
push 0x426a10
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405aea
lea ecx, [edi + 6]
push 0x30
movzx eax, word [ecx]
pop edx
cmp ax, dx
jb 0x405a95
push 0x39
pop edx
cmp ax, dx
jbe 0x405ab5
push 0x61
pop edx
cmp ax, dx
jb 0x405aa5
push 0x7a
pop edx
cmp ax, dx
jbe 0x405ab5
push 0x41
pop edx
cmp ax, dx
jb 0x405acc
push 0x5a
pop edx
cmp ax, dx
ja 0x405acc
xor eax, eax
inc eax
mov dword [ebp - 0x20], ecx
mov byte [ebp - 1], al
mov byte [ebp - 8], al
push 0x20
pop ecx
push 0x2f
pop edx
jmp 0x405a25
push 0x20
pop ecx
cmp ax, cx
ja 0x405d31
xor eax, eax
inc eax
mov dword [ebp - 0x20], 0x426764
mov byte [ebp - 1], al
mov byte [ebp - 8], al
jmp 0x405ac4
push 0x426a18
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405b0d
lea eax, [ebp - 0x18]
push eax
lea eax, [edi + 6]
push eax
push str.OverwriteMode
jmp 0x405c69
push 0x426a20
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405b55
lea ecx, [edi + 6]
push 0x30
movzx eax, word [ecx]
pop edx
push 0x20
pop esi
cmp ax, dx
jb 0x405d34
cmp eax, 0x32
ja 0x405d34
cmp word [edi + 8], si
ja 0x405d34
lea eax, [ebp - 0x18]
push eax
push ecx
push str.GUIMode
jmp 0x405c69
push 0x426a28
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405b78
lea eax, [ebp - 0x18]
push eax
lea eax, [edi + 6]
push eax
push 0x4255ac
jmp 0x405c69
push 0x426a30
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405b9b
lea eax, [ebp - 0x18]
push eax
lea eax, [edi + 6]
push eax
push str.MiscFlags
jmp 0x405c69
push 0x426a38
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405be2
lea ecx, [edi + 6]
push 0x30
movzx eax, word [ecx]
pop edx
cmp ax, dx
je 0x405bc6
push 0x31
pop edx
cmp ax, dx
jne 0x405d31
push 0x20
pop esi
cmp word [edi + 8], si
ja 0x405d34
lea eax, [ebp - 0x18]
push eax
push ecx
push str.SelfDelete
jmp 0x405c69
push 0x426a40
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405c0b
push 0x20
pop ecx
cmp word [edi + 6], cx
ja 0x405d31
xor eax, eax
inc eax
mov byte [ebp - 9], al
jmp 0x405ac4
push 0x426a48
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405c4b
lea ecx, [edi + 6]
push 0x30
movzx eax, word [ecx]
pop edx
cmp ax, dx
jb 0x405d31
push 0x39
pop edx
cmp ax, dx
ja 0x405d31
push ecx
call fcn.0041bcde
pop ecx
mov dword [0x42e348], eax
jmp 0x405ac1
push 0x426a50
push esi
call fcn.004041bb
pop ecx
pop ecx
test eax, eax
je 0x405c76
lea eax, [ebp - 0x18]
push eax
lea eax, [edi + 8]
push eax
push str.BeginPromptTimeout
call fcn.004042fa
add esp, 0xc
jmp 0x405ac1
movzx eax, word [esi]
cmp eax, 0x70
je 0x405ce3
cmp eax, 0x50
je 0x405ce3
cmp eax, 0x79
je 0x405c8d
cmp eax, 0x59
jne 0x405ca1
push 0x20
pop ecx
cmp word [edi + 4], cx
ja 0x405ca4
xor eax, eax
inc eax
mov byte [ebp - 1], al
jmp 0x405ac4
push 0x20
pop ecx
cmp eax, 0x3f
je 0x405cb3
cmp eax, 0x68
je 0x405cb3
cmp eax, 0x48
jne 0x405cc4
cmp word [edi + 4], cx
ja 0x405cc4
xor eax, eax
inc eax
mov byte [ebp - 3], al
jmp 0x405ac4
lea eax, [ebp - 0x18]
push eax
push esi
call fcn.004045cb
pop ecx
pop ecx
test eax, eax
je 0x405d31
cmp eax, 1
je 0x405d21
mov edi, eax
mov dword [ebp - 0x1c], edi
jmp 0x405ac1
lea ecx, [ebp - 0xa8]
call fcn.0041045f
lea eax, [ebp - 0xa8]
push eax
lea eax, [edi + 4]
push eax
call fcn.004041f5
push dword [ebp - 0xa8]
mov edi, eax
mov dword [ebp - 0x1c], edi
call fcn.00401972
push dword [ebp - 0xa8]
call fcn.004196d0
add esp, 0x10
jmp 0x405ac1
push 0x20
pop eax
mov ebx, eax
jmp 0x4069f8
add edi, 4
mov dword [ebp - 0x1c], edi
push 0x20
pop esi
lea eax, [ebp - 0x18]
push eax
call fcn.00404a86
cmp byte [ebp - 2], 0
pop ecx
jne 0x405e7c
test byte [0x42f4d8], 4
je 0x405e7c
call fcn.00402e4a
test eax, eax
jne 0x405e7c
lea ecx, [ebp - 0x54]
call fcn.0041045f
lea ecx, [ebp - 0xa8]
call fcn.0041045f
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.004041f5
pop ecx
pop ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.00410428
push str.sfxelevation
push 0x4267e4
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0xd8]
push 0x426760
push eax
call fcn.00410650
add esp, 0xc
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0041062b
add esp, 0xc
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.0041062b
add esp, 0xc
lea ecx, [ebp - 0xc0]
push esi
push eax
call fcn.00410367
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0xc0]
push eax
lea eax, [ebp - 0x7c]
push eax
call fcn.0041060b
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0xa8]
call fcn.00410584
push dword [ebp - 0x7c]
call fcn.004196d0
push dword [ebp - 0xc0]
call fcn.004196d0
push dword [ebp - 0x70]
call fcn.004196d0
push dword [ebp - 0x2c]
call fcn.004196d0
push dword [ebp - 0xd8]
call fcn.004196d0
add esp, 0x14
push 0xffffffffffffffff
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_SetProcessWorkingSetSize]
push ebx
push 2
push dword [ebp - 0xa8]
call fcn.00404d97
push dword [ebp - 0x38]
mov ebx, eax
neg ebx
sbb ebx, ebx
and ebx, 0xfffffff5
add ebx, 0xb
call fcn.004196d0
push dword [ebp - 0xa8]
call fcn.004196d0
push dword [ebp - 0x54]
call fcn.004196d0
add esp, 0x18
jmp 0x4069f8
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x18]
push str.SetEnvironment
push eax
mov dword [ebp - 0x5c], ebx
call fcn.00402d47
add esp, 0xc
jmp 0x405f44
push esi
lea ecx, [ebp - 0x38]
call fcn.00410428
push 0x3d
push dword [ebp - 0x38]
call fcn.00410808
pop ecx
pop ecx
mov dword [ebp - 0x60], eax
test eax, eax
jle 0x405f50
mov ecx, dword [ebp - 0x38]
xor edx, edx
mov dword [ebp - 0x34], eax
mov word [ecx + eax*2], dx
lea ecx, [ebp - 0x9c]
call fcn.0041045f
lea ecx, [ebp - 0x90]
call fcn.0041045f
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x9c]
call fcn.00410523
mov ecx, dword [ebp - 0x60]
inc ecx
lea eax, [esi + ecx*2]
push eax
lea ecx, [ebp - 0x90]
call fcn.00410584
lea eax, [ebp - 0x9c]
push eax
mov ecx, 0x42f554
call fcn.00401ba8
push dword [ebp - 0x90]
inc dword [ebp - 0x5c]
call fcn.004196d0
push dword [ebp - 0x9c]
call fcn.004196d0
push dword [ebp - 0x38]
call fcn.004196d0
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x18]
push str.SetEnvironment
push eax
call fcn.00402d47
add esp, 0x18
mov esi, eax
test esi, esi
jne 0x405e99
jmp 0x405f59
push dword [ebp - 0x38]
call fcn.004196d0
pop ecx
call fcn.00404d2a
mov eax, dword [0x42e33c]
xor ecx, ecx
cmp eax, 0xffffffff
cmove eax, ecx
mov cl, byte [ebp - 3]
mov dword [0x42e33c], eax
test cl, cl
je 0x405fdd
push ebx
lea eax, [ebp - 0x18]
push str.HelpText
push eax
call fcn.00402d47
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405f99
push 0x18
call fcn.004027e0
pop ecx
mov esi, eax
lea ecx, [ebp - 0x168]
call fcn.00406b89
push ebx
push esi
push dword [0x42f4b4]
lea ecx, [ebp - 0x168]
push 0x11
mov dword [ebp - 0x168], 0x426460
mov dword [ebp - 0x130], 0x7d6
call fcn.004089cb
lea ecx, [ebp - 0x168]
call fcn.00406bea
jmp 0x4069f8
cmp byte [ebp - 1], 0
je 0x405fed
and eax, 0xfffffeff
mov dword [0x42e33c], eax
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
push ebx
lea eax, [ebp - 0x18]
push str.InstallPath
push eax
call fcn.00402d47
add esp, 0xc
mov esi, 0x42f500
test eax, eax
je 0x406017
push eax
mov ecx, esi
call fcn.00410584
push esi
call fcn.0040491d
push ebx
lea eax, [ebp - 0x18]
push str.BeginPromptTimeout
push eax
call fcn.00402d47
add esp, 0x10
test eax, eax
je 0x40603f
push eax
call fcn.0041bcde
pop ecx
mov dword [0x42f4dc], eax
cmp dword [0x42f598], 0
je 0x406058
lea eax, [ebp - 0x18]
push eax
call fcn.00408cf5
mov ebx, eax
jmp 0x4069f7
cmp dword [0x42f590], 3
jne 0x40606c
lea eax, [ebp - 0x18]
push eax
call fcn.00408fd2
jmp 0x406051
test byte [0x42f4d8], 8
jne 0x406086
push dword [ebp - 0x58]
call fcn.00401198
pop ecx
test eax, eax
je 0x406224
push ebx
lea eax, [ebp - 0x18]
push str.BeginPrompt
push eax
call fcn.00402d47
add esp, 0xc
test eax, eax
je 0x4060ea
cmp byte [ebp - 1], 0
jne 0x4060ea
push eax
push dword [0x42f4b4]
call fcn.00408789
pop ecx
pop ecx
test eax, eax
je 0x406224
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
mov eax, dword [ebp - 8]
movzx eax, al
push 1
pop ecx
cmovne eax, ecx
cmp dword [0x42f56c], 0
mov dword [ebp - 8], eax
je 0x4060ea
and dword [0x42e33c], 0xffffff7f
lea ecx, [ebp - 0x48]
call fcn.0041045f
cmp byte [ebp - 8], 0
mov esi, dword [ebp - 0x20]
je 0x406182
push str.AutoInstall
lea ecx, [ebp - 0x48]
call fcn.00410584
movzx eax, word [esi]
push eax
lea ecx, [ebp - 0x48]
call fcn.004010a2
lea eax, [ebp - 0x18]
push ebx
push dword [ebp - 0x48]
push eax
call fcn.00402d47
add esp, 0xc
test eax, eax
je 0x40622c
add esi, 2
push 0x30
movzx eax, word [esi]
pop ecx
cmp ax, cx
jb 0x406146
push 0x39
pop ecx
cmp ax, cx
jbe 0x4060ff
push 0x61
pop ecx
cmp ax, cx
jb 0x406156
push 0x7a
pop ecx
cmp ax, cx
jbe 0x4060ff
push 0x41
pop ecx
cmp ax, cx
jb 0x406166
push 0x5a
pop ecx
cmp ax, cx
jbe 0x4060ff
push str.AutoInstall
lea ecx, [ebp - 0x48]
call fcn.00410584
mov esi, dword [ebp - 0x20]
lea ecx, [ebp - 0x48]
movzx eax, word [esi]
push eax
call fcn.004010a2
cmp dword [ebp - 0x44], 0
mov byte [ebp - 2], bl
jne 0x4061dd
push ebx
lea eax, [ebp - 0x18]
push str.ExecuteFile
push eax
call fcn.00402d47
add esp, 0xc
test eax, eax
je 0x4061b4
push str.ExecuteFile
lea ecx, [ebp - 0x48]
call fcn.00410584
xor eax, eax
inc eax
mov byte [ebp - 2], al
cmp dword [ebp - 0x44], 0
jne 0x4061dd
push ebx
lea eax, [ebp - 0x18]
push str.RunProgram
push eax
call fcn.00402d47
add esp, 0xc
test eax, eax
je 0x4061dd
push str.RunProgram
lea ecx, [ebp - 0x48]
call fcn.00410584
cmp byte [ebp - 8], 0
jne 0x406248
cmp byte [ebp - 1], 0
jne 0x406248
mov eax, dword [0x42e33c]
and eax, 0xc0
cmp al, 0x80
jne 0x406248
push dword [0x42f4c8]
push dword [0x42f4c4]
call fcn.0040897b
pop ecx
pop ecx
test eax, eax
jne 0x406248
cmp byte [0x42f4b1], al
je 0x406241
push dword [ebp - 0x48]
call fcn.004196d0
pop ecx
jmp 0x406086
push 5
pop ebx
jmp 0x4069f8
push dword [ebp - 0x48]
push 0xe
push ebx
call fcn.00408882
add esp, 0xc
push 6
jmp 0x406335
push 5
jmp 0x406335
cmp dword [0x42f504], 0
jne 0x406282
lea eax, [ebp - 0xd8]
push str.7ZipSfx._03x
push eax
call fcn.00403ea1
pop ecx
pop ecx
push eax
mov ecx, 0x42f500
call fcn.00410523
push dword [ebp - 0xd8]
call fcn.004196d0
mov byte [0x42f4b0], bl
jmp 0x4062bd
push 0x42f500
lea ecx, [ebp - 0x54]
call fcn.004103f7
lea eax, [ebp - 0x54]
push eax
call fcn.0040491d
cmp dword [ebp - 0x50], 0
pop ecx
je 0x4062ad
lea eax, [ebp - 0x54]
push eax
mov ecx, 0x42f500
call fcn.00410523
push dword [ebp - 0x54]
xor eax, eax
inc eax
mov byte [0x42f4b0], al
call fcn.004196d0
mov edx, dword [0x42f504]
pop ecx
mov ecx, dword [0x42f500]
movzx eax, word [ecx + edx*2 - 2]
cmp eax, 0x5c
je 0x4062da
cmp ax, word [ebp - 0x3c]
jne 0x4062ee
lea eax, [edx - 1]
xor edx, edx
mov dword [0x42f504], eax
mov word [ecx + eax*2], dx
mov ecx, dword [0x42f500]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmp byte [ebp - 1], 0
je 0x406302
or dword [0x42f4d8], 3
cmp dword [0x42f58c], 0
jne 0x40631c
push 0x42f500
push dword [ebp - 0x58]
call fcn.0040137c
pop ecx
pop ecx
jmp 0x40632a
call fcn.004072de
test eax, eax
jne 0x40633b
mov eax, 0x80004005
test eax, eax
je 0x40633b
call fcn.00404d81
push 8
pop ebx
jmp 0x4069ef
call fcn.00404d2a
cmp byte [ebp - 9], 0
je 0x406353
cmp byte [0x42f4b0], 0
jne 0x406922
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x64], ebx
call fcn.0041045f
cmp byte [ebp - 8], 0
jne 0x406373
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.004040f8
pop ecx
pop ecx
mov byte [ebp - 0xa], bl
mov dword [ebp - 0x60], esi
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 3], bl
call fcn.0041045f
lea ecx, [ebp - 0x70]
call fcn.0041045f
cmp dword [ebp - 0x44], 0
mov dword [ebp - 8], ebx
jne 0x40644c
cmp byte [0x42f4b0], 0
jne 0x406832
mov esi, str.setup.exe
push esi
push 0x425688
lea eax, [ebp - 0x108]
push 0x42f500
push eax
call fcn.0041062b
add esp, 0xc
push eax
lea eax, [ebp - 0xd8]
push eax
call fcn.0041062b
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0x2c]
call fcn.00410584
push dword [ebp - 0xd8]
call fcn.004196d0
push dword [ebp - 0x108]
call fcn.004196d0
pop ecx
pop ecx
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40681e
xor eax, eax
inc eax
mov byte [ebp - 0xa], al
push esi
lea ecx, [ebp - 0x70]
call fcn.00410584
lea eax, [ebp - 0x70]
push eax
call fcn.00404954
mov esi, dword [ebp - 0x70]
mov edi, dword [ebp - 8]
pop ecx
push ebx
push str.waitall
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x4064dc
mov esi, eax
xor eax, eax
inc eax
mov byte [ebp - 3], al
jmp 0x40642b
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0x48]
lea eax, [ebp - 0x18]
push eax
call fcn.00402d47
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x406412
mov esi, dword [ebp - 0x60]
add esi, 2
push 0x30
movzx eax, word [esi]
pop ecx
mov dword [ebp - 0x60], esi
cmp ax, cx
jb 0x406481
push 0x39
pop ecx
cmp ax, cx
jbe 0x4064a9
push 0x61
pop ecx
cmp ax, cx
jb 0x406491
push 0x7a
pop ecx
cmp ax, cx
jbe 0x4064a9
push 0x41
pop ecx
cmp ax, cx
jb 0x406832
push 0x5a
pop ecx
cmp ax, cx
ja 0x406832
push str.AutoInstall
lea ecx, [ebp - 0x48]
call fcn.00410584
movzx eax, word [esi]
push eax
lea ecx, [ebp - 0x48]
call fcn.004010a2
mov dword [ebp - 0x64], ebx
push dword [ebp - 0x70]
call fcn.004196d0
push dword [ebp - 0x2c]
call fcn.004196d0
pop ecx
pop ecx
jmp 0x406379
push ebx
push str.hidcon
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x4064fb
mov esi, eax
xor eax, eax
inc eax
or edi, eax
jmp 0x40642b
push ebx
push str.nowait
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x40651f
cmp byte [0x42f4b0], 0
mov esi, eax
je 0x40642b
jmp 0x406534
push ebx
push str.forcenowait
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x40653f
mov esi, eax
or edi, 0x10000
jmp 0x40642b
push 2
push 0x426a48
push esi
call fcn.00403d83
add esp, 0xc
mov dword [ebp - 8], eax
test eax, eax
je 0x406573
cmp dword [0x42e348], 0xffffffff
jne 0x4065b8
lea ecx, [esi + 4]
push ecx
call fcn.0041bcde
mov dword [0x42e348], eax
mov eax, dword [ebp - 8]
pop ecx
jmp 0x4065b8
push 3
push 0x426ad0
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x406595
movzx ecx, word [esi + 6]
push 0x30
pop edx
sub ecx, edx
mov dword [ebp - 0x80], ecx
jmp 0x4065b8
push 3
push 0x426ad8
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x4065bf
movzx ecx, word [esi + 6]
push 0x30
pop edx
sub ecx, edx
mov dword [ebp - 0x84], ecx
mov esi, eax
jmp 0x40642b
push ebx
push 0x4257f8
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
jne 0x406618
push ebx
push str.i386
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
jne 0x406618
push ebx
push str.amd64
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
jne 0x40660b
push ebx
push 0x4257f0
push esi
call fcn.00403d83
add esp, 0xc
test eax, eax
je 0x40661f
push 2
mov esi, eax
pop eax
mov dword [ebp - 0x3c], eax
jmp 0x40642b
mov esi, eax
xor eax, eax
inc eax
jmp 0x406610
cmp byte [ebp - 2], 0
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0x1c]
lea ecx, [ebp - 0x2c]
je 0x406683
cmp word [esi], 0x22
je 0x406656
push 0x426760
call fcn.00410584
push esi
lea ecx, [ebp - 0x2c]
call fcn.0041071e
push 0x426760
lea ecx, [ebp - 0x2c]
call fcn.0041071e
jmp 0x40665c
push esi
call fcn.00410584
push ebx
lea eax, [ebp - 0x18]
push str.ExecuteParameters
push eax
call fcn.00402d47
mov esi, eax
add esp, 0xc
test esi, esi
je 0x406695
push 0x4269a4
lea ecx, [ebp - 0x2c]
call fcn.0041071e
jmp 0x40668c
lea eax, [ebp - 0x54]
push eax
call fcn.00410523
push esi
lea ecx, [ebp - 0x2c]
call fcn.0041071e
lea ecx, [ebp - 0x38]
call fcn.0041045f
lea eax, [ebp - 0x38]
push eax
push dword [ebp - 0x2c]
call fcn.004041f5
pop ecx
pop ecx
push eax
lea ecx, [ebp - 0x7c]
call fcn.00410428
lea eax, [ebp - 0x38]
push eax
call fcn.00404954
cmp dword [0x42f590], 0
pop ecx
jne 0x4067d4
mov eax, dword [ebp - 0x3c]
push eax
call fcn.00403c31
pop ecx
test eax, eax
je 0x4067d4
cmp word [edi], bx
je 0x4066fb
push edi
lea ecx, [ebp - 0x7c]
call fcn.0041071e
cmp word [edi], bx
je 0x4066fb
add edi, 2
cmp word [edi], bx
jne 0x4066f0
mov dword [ebp - 0x1c], edi
lea eax, [ebp - 0x7c]
push eax
call fcn.00404954
mov al, byte [ebp - 3]
pop ecx
test al, al
jne 0x4067b9
push dword [0x42f500]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea eax, [ebp - 0x7c]
push eax
push 0x4267c4
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x90]
push 0x426760
push eax
call fcn.00410650
add esp, 0xc
push eax
lea eax, [ebp - 0xf0]
push eax
call fcn.0041062b
add esp, 0xc
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.0041060b
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0xc0]
call fcn.00410428
push dword [ebp - 0x114]
call fcn.004196d0
push dword [ebp - 0xf0]
call fcn.004196d0
push dword [ebp - 0x90]
call fcn.004196d0
push dword [0x42f500]
mov eax, dword [ebp - 8]
push eax
push dword [ebp - 0xc0]
call fcn.00404d97
add esp, 0x18
push dword [ebp - 0xc0]
test eax, eax
je 0x406846
call fcn.004196d0
pop ecx
jmp 0x4067cf
mov eax, dword [ebp - 8]
push eax
push dword [ebp - 0x7c]
push dword [ebp - 0x38]
call fcn.0040435a
add esp, 0xc
test eax, eax
jne 0x40684e
call fcn.00403bb5
cmp byte [ebp - 2], 0
jne 0x40689b
cmp byte [ebp - 0xa], 0
jne 0x40689b
mov eax, dword [ebp - 0x54]
xor ecx, ecx
mov dword [ebp - 0x50], ebx
mov word [eax], cx
push dword [ebp - 0x7c]
inc dword [ebp - 0x64]
call fcn.004196d0
push dword [ebp - 0x38]
call fcn.004196d0
push dword [ebp - 0x70]
call fcn.004196d0
push dword [ebp - 0x2c]
call fcn.004196d0
add esp, 0x10
jmp 0x406379
call fcn.00404d81
push 0xf
push ebx
call fcn.00408882
pop ecx
pop ecx
push 7
pop ebx
jmp 0x40687e
push dword [ebp - 0x70]
call fcn.004196d0
push dword [ebp - 0x2c]
call fcn.004196d0
pop ecx
pop ecx
jmp 0x4068be
call fcn.004196d0
pop ecx
jmp 0x406855
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
push dword [ebp - 0x2c]
xor eax, eax
inc eax
push 0x10
push eax
call fcn.00408882
call fcn.00404d81
push 9
pop ebx
push dword [ebp - 0x7c]
call fcn.004196d0
push dword [ebp - 0x38]
call fcn.004196d0
add esp, 0x14
push dword [ebp - 0x70]
call fcn.004196d0
push dword [ebp - 0x2c]
call fcn.004196d0
push dword [ebp - 0x54]
call fcn.004196d0
jmp 0x4069ec
push dword [ebp - 0x7c]
call fcn.004196d0
push dword [ebp - 0x38]
call fcn.004196d0
push dword [ebp - 0x70]
call fcn.004196d0
push dword [ebp - 0x2c]
call fcn.004196d0
add esp, 0x10
cmp dword [0x42f590], 0
jne 0x406919
call fcn.00404d2a
mov eax, dword [ebp - 0x80]
mov esi, dword [ebp - 0x20]
push eax
push esi
push str.Shortcut
lea eax, [ebp - 0x18]
push eax
push 0x4046e1
call fcn.004047be
add esp, 0x14
push dword [0x42f50c]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, dword [ebp - 0x84]
push eax
push esi
push str.Delete
lea eax, [ebp - 0x18]
push eax
push 0x4046b2
call fcn.004047be
add esp, 0x14
call fcn.00404d81
push dword [ebp - 0x54]
call fcn.004196d0
pop ecx
mov eax, dword [0x42e348]
cmp eax, 0xffffffff
jne 0x40693a
cmp byte [ebp - 1], 0
jne 0x4069ab
xor eax, eax
inc eax
mov dword [0x42e348], eax
test eax, eax
jle 0x4069ab
push ebx
lea eax, [ebp - 0x18]
push str.FinishMessage
push eax
call fcn.00402d47
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4069ab
mov ecx, dword [0x42e348]
mov eax, 0x3e7
cmp ecx, eax
cmovg ecx, eax
mov dword [0x42e348], ecx
lea ecx, [ebp - 0x164]
call fcn.00406b89
push ebx
push esi
push dword [0x42f4b4]
lea ecx, [ebp - 0x164]
push 0x11
mov dword [ebp - 0x164], 0x426430
mov dword [ebp - 0x12c], 0x7d5
call fcn.004089cb
lea ecx, [ebp - 0x164]
call fcn.00406bea
cmp byte [ebp - 9], 0
jne 0x4069ef
cmp dword [0x42f590], 0
jne 0x4069ef
push ebx
lea eax, [ebp - 0x18]
push str.SelfDelete
push eax
call fcn.00402d47
add esp, 0xc
test eax, eax
je 0x4069ef
push 0x31
pop ecx
cmp word [eax], cx
jne 0x4069ef
sub esp, 0xc
mov ecx, esp
push 0x42f548
call fcn.004103f7
call fcn.00403f4e
add esp, 0xc
push dword [ebp - 0x48]
call fcn.004196d0
pop ecx
push dword [ebp - 0xcc]
call fcn.004196d0
mov esi, dword [ebp - 0x58]
pop ecx
test esi, esi
je 0x406a11
mov eax, dword [esi]
push esi
call dword [eax + 8]
push dword [ebp - 0xe4]
call fcn.004196d0
pop ecx
lea ecx, [ebp - 0x18]
call fcn.00403d5a
push dword [ebp - 0xfc]
call fcn.004196d0
push dword [ebp - 0xb4]
call fcn.004196d0
pop ecx
pop ecx
mov eax, ebx
jmp 0x406a57
push 0x10
push str.7_Zip_SFX
push str.Sorry__this_program_requires_Microsoft_Windows_2000_or_later.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x14
pop eax
pop edi
pop esi
pop ebx
leave
ret 0x10