Function at 0x402669
Capabilities:
Create process on windows
Get common file path
Terminate process

Disassembly:
mov eax, 0x44da0c
call fcn.00429800
sub esp, 0x64c
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
cmp esi, ebx
push edi
je 0x402699
push ebx
push 0x3e9
push esi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
mov edi, 0x4704d8
mov ecx, edi
call fcn.004047d6
test al, al
je 0x4026de
push esi
call fcn.004020cf
test al, al
pop ecx
jne 0x4026de
mov eax, dword [0x470718]
cmp eax, ebx
je 0x4026ca
push str.Password_is_incorrect._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
push ebx
push esi
call dword [sym.imp.USER32.dll_EndDialog]
push ebx
call dword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x402ae9
mov eax, dword [0x470718]
mov esi, 0x3e8
cmp eax, ebx
je 0x402731
push str.Password_verified..._r_n
push eax
call fcn.00429875
cmp dword [0x470718], ebx
pop ecx
pop ecx
je 0x402731
push esi
call fcn.004298da
pop ecx
mov dword [ebp - 0x14], eax
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push dword [ebp - 0x14]
push str.Current_working_directory:__s_r_n
push dword [0x470718]
call fcn.00429875
push dword [ebp - 0x14]
call fcn.0042941f
add esp, 0x10
lea ecx, [ebp - 0x40]
call fcn.00405dd0
lea ecx, [ebp - 0x3b0]
mov dword [ebp - 4], ebx
call fcn.00408850
lea eax, [ebp - 0x3b0]
mov ecx, edi
push eax
mov byte [ebp - 4], 1
call fcn.004047f8
lea ecx, [ebp - 0x3b0]
call fcn.00408990
test eax, eax
je 0x40292b
lea ecx, [ebp - 0x3b0]
call fcn.00409260
push eax
lea ecx, [ebp - 0x40]
call fcn.00405970
lea ecx, [ebp - 0xe0]
call fcn.00405dd0
lea eax, [ebp - 0x40]
lea ecx, [ebp - 0xe0]
push eax
mov byte [ebp - 4], 2
call fcn.004065b0
lea ecx, [ebp - 0x40]
call fcn.00405860
lea eax, [ebp - 0x40]
lea ecx, [ebp - 0xe0]
push eax
call fcn.00406aa0
test al, al
mov esi, 0x45d894
jne 0x4027dc
push esi
lea ecx, [ebp - 0xe0]
call fcn.00406890
test al, al
jne 0x4027dc
push 0x45d890
push esi
lea ecx, [ebp - 0x40]
call fcn.004063d0
push 0x2f
push 0x5c
lea ecx, [ebp - 0x40]
call fcn.00405380
push 0x5c
push 0x2f
lea ecx, [ebp - 0x40]
call fcn.00405380
mov dword [ebp - 0x14], ebx
push esi
lea ecx, [ebp - 0x40]
call fcn.00406890
test al, al
je 0x40281e
push 0x45d890
push esi
lea ecx, [ebp - 0x40]
call fcn.004063d0
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0x3e8
jle 0x4027f7
cmp dword [0x470718], ebx
je 0x402842
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
push str.unzipDir____s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
push str.Debug
mov ecx, edi
call fcn.004046ce
test eax, eax
setne al
cmp al, bl
jne 0x40291a
push ebx
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
call fcn.0040f100
pop ecx
cmp al, bl
pop ecx
jne 0x40291a
cmp dword [0x470718], ebx
je 0x402898
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
push str.failed_to_ensure_dir_exists:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
lea ecx, [ebp - 0x218]
call fcn.00408850
push str.Failed_to_ensure_dir_exists:
lea ecx, [ebp - 0x218]
mov byte [ebp - 4], 3
call fcn.00409230
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x218]
call fcn.00409230
push ebx
push 0x45d4d0
lea ecx, [ebp - 0x218]
call fcn.00408bf0
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxW]
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_EndDialog]
push ebx
call dword [sym.imp.USER32.dll_PostQuitMessage]
lea ecx, [ebp - 0x218]
mov byte [ebp - 4], 2
call fcn.00408920
lea ecx, [ebp - 0xe0]
mov byte [ebp - 4], 1
call fcn.004060c0
jmp 0x402acf
lea ecx, [ebp - 0xe0]
mov byte [ebp - 4], 1
call fcn.004060c0
jmp 0x402957
mov eax, dword [0x470718]
cmp eax, ebx
je 0x402941
push str.Selecting_temp_dir_for_unzipping..._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
lea eax, [ebp - 0x40]
push eax
push dword [ebp + 8]
call fcn.00402308
pop ecx
test al, al
pop ecx
je 0x402acf
mov esi, 0x45d84c
lea ecx, [ebp - 0x40]
push esi
call fcn.00405b00
test al, al
je 0x402977
push 0x470748
push esi
lea ecx, [ebp - 0x40]
call fcn.004062b0
cmp dword [0x470718], ebx
je 0x40299b
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
push str.Final_unzip_dir:___s_..._r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
push str.Debug
mov ecx, edi
call fcn.004046ce
test eax, eax
lea ecx, [ebp - 0x40]
setne byte [ebp - 0xd]
call fcn.0040cf30
test eax, eax
je 0x402aff
lea ecx, [ebp - 0x218]
call fcn.00408850
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 4
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x218]
call fcn.00409230
cmp dword [0x470718], ebx
je 0x402a07
lea ecx, [ebp - 0x218]
call fcn.00409260
push eax
push str.Setting_CWD___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
cmp byte [ebp - 0xd], bl
jne 0x402af0
lea eax, [ebp - 0x218]
push 0x1bbe
push eax
call fcn.0040b140
movzx eax, al
pop ecx
cmp eax, ebx
pop ecx
jne 0x402af0
cmp dword [0x470718], ebx
je 0x402a52
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
push str.failed_to_set_current_dir:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
lea ecx, [ebp - 0x328]
call fcn.00408850
push str.Failed_to_set_current_dir:
lea ecx, [ebp - 0x328]
mov byte [ebp - 4], 5
call fcn.00409230
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x328]
call fcn.00409230
push ebx
push 0x45d4d0
lea ecx, [ebp - 0x328]
call fcn.00408bf0
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxW]
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_EndDialog]
push ebx
call dword [sym.imp.USER32.dll_PostQuitMessage]
lea ecx, [ebp - 0x328]
mov byte [ebp - 4], 4
call fcn.00408920
lea ecx, [ebp - 0x218]
mov byte [ebp - 4], 1
call fcn.00408920
lea ecx, [ebp - 0x3b0]
mov byte [ebp - 4], bl
call fcn.00408920
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.004060c0
xor al, al
jmp 0x4032dd
lea ecx, [ebp - 0x218]
mov byte [ebp - 4], 1
call fcn.00408920
lea ecx, [ebp - 0x54]
call fcn.0040cc50
push str.Cleanup
mov ecx, edi
mov byte [ebp - 4], 6
call fcn.004046ce
test eax, eax
setne byte [ebp - 0x14]
cmp byte [ebp - 0x14], bl
je 0x402b38
mov eax, dword [0x470718]
cmp eax, ebx
je 0x402b38
push str.cleanup_is_requested..._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
mov ecx, edi
call fcn.00404934
test al, al
jne 0x402b5c
mov eax, dword [0x470718]
cmp eax, ebx
je 0x402b59
push str.WaitForSetup_if_false__therefore_cannot_cleanup_files._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
mov byte [ebp - 0x14], bl
push str.AutoExit
mov ecx, edi
call fcn.004046ce
test eax, eax
setne al
cmp al, bl
je 0x402b8a
mov eax, dword [0x470718]
cmp eax, ebx
je 0x402b87
push str.AutoExit_if_true__therefore_cannot_cleanup_files._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
mov byte [ebp - 0x14], bl
lea ecx, [ebp - 0x190]
call fcn.00405dd0
push dword [ebp - 0x14]
lea eax, [ebp - 0x54]
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x190]
push eax
call fcn.0040f5f0
push eax
push dword [ebp + 8]
call fcn.00401ec9
mov byte [ebp - 0x15], al
mov eax, dword [0x470740]
add esp, 0x14
cmp eax, ebx
mov esi, 0x3f0
je 0x402c02
cmp byte [ebp - 0x15], bl
je 0x403280
push str.Finished_unzipping.
push 0x3f8
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push esi
push dword [0x470740]
call dword [sym.imp.USER32.dll_GetDlgItem]
push ebx
push 0x64
push 0x402
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
cmp byte [ebp - 0x15], bl
je 0x403280
push str.Debug
mov ecx, edi
call fcn.004046ce
test eax, eax
mov eax, dword [0x470718]
setne byte [ebp - 0xd]
cmp eax, ebx
je 0x402c33
push str.Unzip_complete..._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
lea ecx, [ebp - 0x438]
call fcn.00408850
lea eax, [ebp - 0x438]
mov ecx, edi
push eax
mov byte [ebp - 4], 8
call fcn.004048ce
lea ecx, [ebp - 0x438]
call fcn.00408990
test eax, eax
je 0x402c86
cmp dword [0x470718], ebx
je 0x402c86
lea ecx, [ebp - 0x438]
call fcn.00409260
push eax
push str.setup_filename:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
cmp byte [ebp - 0xd], bl
jne 0x403265
lea ecx, [ebp - 0x438]
call fcn.00408990
test eax, eax
je 0x403265
lea ecx, [ebp - 0x7c]
call fcn.00405dd0
lea ecx, [ebp - 0x438]
mov byte [ebp - 4], 9
call fcn.00409260
push eax
lea ecx, [ebp - 0x7c]
call fcn.00405970
lea ecx, [ebp - 0x5d0]
call fcn.00408850
lea eax, [ebp - 0x5d0]
mov ecx, edi
push eax
mov byte [ebp - 4], 0xa
call fcn.004048e8
lea ecx, [ebp - 0x5d0]
mov dword [ebp - 0x14], ebx
call fcn.00408990
test eax, eax
je 0x402d19
lea ecx, [ebp - 0x5d0]
call fcn.00408f70
mov dword [ebp - 0x14], eax
mov eax, dword [0x470718]
cmp eax, ebx
je 0x402d19
push dword [ebp - 0x14]
push str.setup_args:___s__r_n
push eax
call fcn.00429875
add esp, 0xc
push 0x2f
push 0x5c
lea ecx, [ebp - 0x7c]
call fcn.00405380
push 0x45d6ec
push 0x45d6e8
lea ecx, [ebp - 0x7c]
call fcn.004063d0
push 0x5c
push 0x2f
lea ecx, [ebp - 0x7c]
call fcn.00405380
cmp dword [0x470718], ebx
je 0x402d83
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
push str.working_dir:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
lea ecx, [ebp - 0x7c]
call fcn.0040f5f0
push eax
push str.running_exe:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
push esi
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetDlgItem]
cmp eax, ebx
je 0x402da0
push ebx
push 0x64
push 0x402
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [ebp - 0x548]
call fcn.00408850
push dword [ebp - 0x14]
lea ecx, [ebp - 0x548]
mov byte [ebp - 4], 0xb
call fcn.00409230
push str.shell
lea ecx, [ebp - 0x7c]
call fcn.00406b40
test al, al
je 0x402f11
mov ecx, edi
call fcn.00404934
test al, al
lea ecx, [ebp - 0x548]
je 0x402dec
call fcn.00408f70
push eax
push ebx
jmp 0x402df4
call fcn.00408f70
push eax
push 1
call fcn.00402420
pop ecx
mov byte [ebp - 0xd], al
pop ecx
lea ecx, [ebp - 0x2a0]
call fcn.00408850
lea eax, [ebp - 0x2a0]
mov ecx, edi
push eax
push str.AutoExit
mov byte [ebp - 4], 0xc
call fcn.004046b5
push 0x45d230
lea ecx, [ebp - 0x2a0]
call fcn.004094f0
test al, al
je 0x402e3a
push ebx
call fcn.004299aa
lea eax, [ebp - 0x54]
push eax
call fcn.004024b4
cmp byte [ebp - 0xd], bl
pop ecx
jne 0x402f02
cmp dword [0x470718], ebx
je 0x402e71
lea ecx, [ebp - 0x7c]
call fcn.0040f5f0
push eax
push str.failed_to_run:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
lea ecx, [ebp - 0x168]
call fcn.00408850
push str.Failed_to_run
lea ecx, [ebp - 0x168]
mov byte [ebp - 4], 0xd
call fcn.00409230
lea ecx, [ebp - 0x7c]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x168]
call fcn.00409230
push str.__working_dir_
lea ecx, [ebp - 0x168]
call fcn.00409230
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x168]
call fcn.00409230
push str.__check_to_see_if_this_file_is_in_the_EXE_
lea ecx, [ebp - 0x168]
call fcn.00409230
push ebx
push 0x45d4d0
lea ecx, [ebp - 0x168]
call fcn.00408bf0
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x168]
mov byte [ebp - 4], 0xc
call fcn.00408920
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x2a0]
jmp 0x403234
lea ecx, [ebp - 0x658]
call fcn.00408850
lea ecx, [ebp - 0x4c0]
mov byte [ebp - 4], 0xe
call fcn.00408850
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 0xf
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x658]
call fcn.00409230
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x4c0]
call fcn.00409230
lea ecx, [ebp - 0x2a0]
call fcn.00408850
lea eax, [ebp - 0x2a0]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp - 0x658]
push eax
lea eax, [ebp - 0x4c0]
push eax
call fcn.0040bbd0
add esp, 0xc
cmp dword [0x470718], ebx
je 0x402ffc
push 0x3e8
call fcn.004298da
pop ecx
mov esi, eax
push esi
push 0x3e8
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push esi
push str.Current_working_directory:__s_r_n
push dword [0x470718]
call fcn.00429875
push esi
call fcn.0042941f
add esp, 0x10
lea ecx, [ebp - 0x2a0]
call fcn.00409260
push eax
push str.full_path_to_auto_run_EXE:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
lea ecx, [ebp - 0x4c0]
call fcn.00409260
push eax
push str.unzipDir:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
push 0x3c
lea eax, [ebp - 0xb8]
pop esi
push esi
push ebx
push eax
call fcn.004292a0
add esp, 0xc
lea ecx, [ebp - 0x2a0]
mov dword [ebp - 0xb8], esi
mov dword [ebp - 0xb4], 0x40
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xac], ebx
call fcn.00408bf0
lea ecx, [ebp - 0x548]
mov dword [ebp - 0xa8], eax
call fcn.00408bf0
lea ecx, [ebp - 0x4c0]
mov dword [ebp - 0xa4], eax
call fcn.00408bf0
mov dword [ebp - 0xa0], eax
lea eax, [ebp - 0xb8]
push eax
mov dword [ebp - 0x9c], 5
mov dword [ebp - 0x98], ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
cmp eax, ebx
je 0x40314d
lea ecx, [ebp - 0x328]
call fcn.00408850
lea eax, [ebp - 0x328]
mov ecx, edi
push eax
push str.AutoExit
mov byte [ebp - 4], 0x11
call fcn.004046b5
push 0x45d230
lea ecx, [ebp - 0x328]
call fcn.004094f0
test al, al
je 0x4030c0
push ebx
call fcn.004299aa
mov ecx, edi
call fcn.00404934
test al, al
mov eax, dword [0x470718]
je 0x40312d
cmp eax, ebx
je 0x4030e1
push str.waiting_for_setup_EXE_to_complete..._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
push 0xffffffffffffffff
push dword [ebp - 0x80]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp + 8]
mov dword [ebp + 8], ebx
push eax
push dword [ebp - 0x80]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
je 0x403122
mov eax, dword [0x470718]
cmp eax, ebx
je 0x40311a
push dword [ebp + 8]
push str.GetExitCodeProcess:_exitCode___d_r_n
push eax
call fcn.00429875
add esp, 0xc
mov eax, dword [ebp + 8]
mov dword [0x470724], eax
lea eax, [ebp - 0x54]
push eax
call fcn.004024b4
jmp 0x40313d
cmp eax, ebx
je 0x40313e
push str.NOT_waiting_for_setup_EXE_to_complete..._r_n
push eax
call fcn.00429875
pop ecx
pop ecx
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x328]
jmp 0x403207
lea eax, [ebp - 0x54]
push eax
call fcn.004024b4
cmp dword [0x470718], ebx
pop ecx
je 0x40317b
lea ecx, [ebp - 0x7c]
call fcn.0040f5f0
push eax
push str.failed_to_run:___s__r_n
push dword [0x470718]
call fcn.00429875
add esp, 0xc
lea ecx, [ebp - 0x168]
call fcn.00408850
push str.Failed_to_run
lea ecx, [ebp - 0x168]
mov byte [ebp - 4], 0x12
call fcn.00409230
lea ecx, [ebp - 0x7c]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x168]
call fcn.00409230
push str.__working_dir_
lea ecx, [ebp - 0x168]
call fcn.00409230
lea ecx, [ebp - 0x40]
call fcn.0040f5f0
push eax
lea ecx, [ebp - 0x168]
call fcn.00409230
push str.__check_to_see_if_this_file_is_in_the_EXE_
lea ecx, [ebp - 0x168]
call fcn.00409230
push ebx
push 0x45d4d0
lea ecx, [ebp - 0x168]
call fcn.00408bf0
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxW]
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x168]
call fcn.00408920
lea ecx, [ebp - 0x2a0]
mov byte [ebp - 4], 0xf
call fcn.00408920
lea ecx, [ebp - 0x4c0]
mov byte [ebp - 4], 0xe
call fcn.00408920
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x658]
call fcn.00408920
lea ecx, [ebp - 0x548]
mov byte [ebp - 4], 0xa
call fcn.00408920
lea ecx, [ebp - 0x5d0]
mov byte [ebp - 4], 9
call fcn.00408920
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 8
call fcn.004060c0
jmp 0x40326f
lea eax, [ebp - 0x54]
push eax
call fcn.004024b4
pop ecx
lea ecx, [ebp - 0x438]
mov byte [ebp - 4], 7
call fcn.00408920
jmp 0x4032a5
lea eax, [ebp - 0x54]
push eax
call fcn.004024b4
pop ecx
push ebx
push str.Error
lea ecx, [ebp - 0x190]
call fcn.0040f5f0
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [ebp - 0x190]
mov byte [ebp - 4], 6
call fcn.004060c0
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 1
call fcn.0040cc70
lea ecx, [ebp - 0x3b0]
mov byte [ebp - 4], bl
call fcn.00408920
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.004060c0
mov al, byte [ebp - 0x15]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret