Function at 0x404320
Capabilities:
Accept command line arguments
Check if file exists
Create process on windows
Create thread
Delete file
Get common file path
Resolve function by parsing pe exports
Self delete

Disassembly:
sub esp, 0x228
push ebx
push ebp
push esi
push edi
mov byte [esp + 0x13], 0
call fcn.004012f0
cmp dword [eax + 0x10c], 2
jne 0x404360
push 0
push str.Information
push str.Win_NT_not_supported.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x228
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov esi, eax
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00402800
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push esi
lea ecx, [esp + 0x2c]
call fcn.00402b60
mov edi, 0x42c474
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push 0x42c474
lea ecx, [esp + 0x30]
call fcn.00405910
test eax, eax
jle 0x404653
lea ecx, [eax + 2]
lea edx, [esp + 0x14]
push ecx
push eax
push edx
lea ecx, [esp + 0x30]
call fcn.00405780
mov ecx, dword [0x42622c]
push ecx
push 0
push eax
lea ecx, [esp + 0x30]
call fcn.004038a0
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
push 1
lea edx, [esp + 0x18]
push 1
push edx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c470
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c470
push eax
push 0
mov ecx, edx
call fcn.00405e60
push 1
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.00402800
test esi, esi
jne 0x404671
push 2
lea ecx, [esp + 0x48]
push 1
push ecx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c46c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c46c
push eax
push esi
mov ecx, edx
call fcn.00405e60
test eax, eax
je 0x4044b8
push 2
lea ecx, [esp + 0x18]
push 1
push ecx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c468
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c468
push eax
push esi
mov ecx, edx
call fcn.00405e60
push 1
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.00402800
test esi, esi
je 0x4044b8
xor bl, bl
jmp 0x4044ba
mov bl, 1
push 1
lea ecx, [esp + 0x48]
call fcn.00402800
test bl, bl
je 0x4044dc
call fcn.004012f0
mov byte [eax + 0x27], 1
mov byte [esp + 0x13], 1
jmp 0x404671
push 2
lea ecx, [esp + 0x48]
push 1
push ecx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c464
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c464
push eax
push 0
mov ecx, edx
call fcn.00405e60
test eax, eax
je 0x404561
push 2
lea ecx, [esp + 0x18]
push 1
push ecx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c460
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c460
push eax
push 0
mov ecx, edx
call fcn.00405e60
push 1
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.00402800
test esi, esi
je 0x404561
xor bl, bl
jmp 0x404563
mov bl, 1
push 1
lea ecx, [esp + 0x48]
call fcn.00402800
test bl, bl
je 0x404580
call fcn.004012f0
mov byte [eax + 0x27], 1
jmp 0x404671
push 2
lea ecx, [esp + 0x48]
push 1
push ecx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c45c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c45c
push eax
push 0
mov ecx, edx
call fcn.00405e60
test eax, eax
je 0x404605
push 2
lea ecx, [esp + 0x18]
push 1
push ecx
lea ecx, [esp + 0x30]
call fcn.00405780
mov edx, eax
mov edi, 0x42c458
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
push ecx
push 0x42c458
push eax
push 0
mov ecx, edx
call fcn.00405e60
push 1
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.00402800
test esi, esi
je 0x404605
xor bl, bl
jmp 0x404607
mov bl, 1
push 1
lea ecx, [esp + 0x48]
call fcn.00402800
test bl, bl
je 0x404653
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x14]
push ecx
push 1
push edx
lea ecx, [esp + 0x30]
call fcn.00405780
mov esi, eax
call fcn.004012f0
mov ecx, dword [0x42622c]
add eax, 0x48
push ecx
push 0
push esi
mov ecx, eax
call fcn.004038a0
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
jmp 0x404671
mov edi, 0x42e93c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x42e93c
lea ecx, [esp + 0x2c]
call fcn.00402b60
mov dl, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], dl
call fcn.00402800
mov edi, str.__Start_log_setup_process__
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.__Start_log_setup_process__
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
call fcn.00403d70
mov ebp, dword [esp + 0x23c]
lea ecx, [esp + 0x38]
mov dword [eax], ebp
call fcn.00403e30
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
call fcn.00402800
mov edi, str.Do_nckCDlgProg::Create__.
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Do_nckCDlgProg::Create__.
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea edx, [esp + 0x14]
push edx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
lea ecx, [esp + 0x38]
call fcn.00403e80
test al, al
jne 0x404787
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], al
call fcn.00402800
mov edi, str.Error:_Cant_create_progress_window_
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Error:_Cant_create_progress_window_
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea ecx, [esp + 0x14]
push ecx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
jmp 0x404807
mov bl, byte [esp + 0x13]
test bl, bl
jne 0x40482a
push 0x18
call fcn.00419194
add esp, 4
test eax, eax
je 0x404807
mov ecx, eax
call fcn.00407510
mov esi, eax
test esi, esi
je 0x404807
mov dl, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], dl
call fcn.00402800
mov edi, str.Do_pMainWnd__Create__.
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Do_pMainWnd__Create__.
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
push ebp
mov ecx, esi
call fcn.00407530
test al, al
jne 0x40482a
lea ecx, [esp + 0x38]
call fcn.00403e40
push 1
lea ecx, [esp + 0x28]
call fcn.00402800
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x228
ret 0x10
mov dl, byte [esp + 0x13]
lea ecx, [esp + 0x38]
mov dword [0x42e960], ecx
push 0
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], dl
call fcn.00402800
mov edi, str._Do_nckCDlgProg::MoveWindowToCorner__.
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str._Do_nckCDlgProg::MoveWindowToCorner__.
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
lea ecx, [esp + 0x38]
call fcn.00403ff0
test bl, bl
jne 0x404899
push 1
lea ecx, [esp + 0x3c]
call fcn.00404080
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
call fcn.00402800
mov edi, str._Create_extractor_thead__and_begin_to_exactor_package.
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str._Create_extractor_thead__and_begin_to_exactor_package.
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea edx, [esp + 0x14]
push edx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x38]
push eax
push 0
push ecx
push 0x405190
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, eax
test esi, esi
jne 0x40491d
push 0x10
push str.test
push str.Cannt_create_thread
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edi, dword [sym.imp.USER32.dll_GetMessageA]
push 0
push 0
lea edx, [esp + 0xbc]
push 0
push edx
call edi
test eax, eax
je 0x4049a0
mov ebp, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageA]
cmp eax, 0xffffffff
je 0x40498c
lea ecx, [esp + 0x38]
call fcn.00403fc0
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x404978
lea eax, [esp + 0xb4]
lea ecx, [esp + 0x38]
push eax
call fcn.00403fc0
push eax
call dword [sym.imp.USER32.dll_IsDialogMessageA]
test eax, eax
jne 0x40498c
lea ecx, [esp + 0xb4]
push ecx
call ebp
lea edx, [esp + 0xb4]
push edx
call ebx
push 0
push 0
lea eax, [esp + 0xbc]
push 0
push eax
call edi
test eax, eax
jne 0x404943
mov cl, byte [esp + 0x13]
xor ebx, ebx
mov byte [esp + 0x14], cl
push ebx
lea ecx, [esp + 0x18]
call fcn.00402800
mov edi, str.Extractor_thread_finish_and_begin_to_start_real_setup_applicatin:
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Extractor_thread_finish_and_begin_to_start_real_setup_applicatin:
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea edx, [esp + 0x14]
push edx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
lea ecx, [esp + 0x18]
mov al, byte [esp + 0x17]
mov byte [esp + 0x18], al
call fcn.00402800
mov edi, str.Clear_start_bitmap:
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Clear_start_bitmap:
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea ecx, [esp + 0x14]
push ecx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
lea ecx, [esp + 0x84]
call fcn.00403de0
mov dl, byte [0x42e950]
push ebx
lea ecx, [esp + 0x58]
mov byte [esp + 0x58], dl
call fcn.00402800
mov eax, dword [0x42622c]
lea ecx, [esp + 0x54]
push eax
push ebx
push 0x42e950
call fcn.004038a0
lea ecx, [esp + 0x54]
push ecx
call fcn.0040c470
mov edi, str.setup_setup.ini
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.setup_setup.ini
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea edx, [esp + 0x54]
lea ecx, [esp + 0x84]
push edx
call fcn.00408e00
test al, al
je 0x404df8
mov al, byte [esp + 0x13]
push ebx
lea ecx, [esp + 0x48]
mov byte [esp + 0x48], al
call fcn.00402800
mov edi, str.startup
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x48]
push ebp
call fcn.00402ca0
test al, al
je 0x404b12
mov edi, dword [esp + 0x48]
mov ecx, ebp
mov edx, ecx
mov esi, str.startup
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x48]
call fcn.00402c00
lea eax, [esp + 0x44]
lea ecx, [esp + 0x84]
push eax
call fcn.00409170
mov esi, eax
push 1
lea ecx, [esp + 0x48]
mov dword [esp + 0x90], esi
call fcn.00402800
cmp esi, ebx
je 0x404e2a
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
mov dword [esp + 0x34], eax
mov ecx, dword [esi + 4]
cmp eax, ecx
je 0x404e9c
mov bl, byte [esp + 0x13]
xor esi, esi
xor edx, edx
mov ecx, 0x11
mov dword [esp + 0x90], edx
xor eax, eax
lea edi, [esp + 0xf0]
mov dword [esp + 0x94], edx
rep stosd dword es:[edi], eax
mov dword [esp + 0x98], edx
push esi
lea ecx, [esp + 0x68]
mov dword [esp + 0xf4], 0x44
mov dword [esp + 0xa0], edx
mov byte [esp + 0x68], bl
call fcn.00402800
lea ecx, [esp + 0xe0]
mov eax, dword [esp + 0x34]
add eax, 0x1c
push eax
push str.setup_
push 0x42e950
push ecx
call fcn.00405c00
add esp, 0xc
lea edx, [esp + 0xd4]
push eax
push edx
call fcn.00405d30
mov ecx, dword [0x42622c]
add esp, 0xc
push ecx
push esi
push eax
lea ecx, [esp + 0x70]
call fcn.004038a0
push 1
lea ecx, [esp + 0xd4]
call fcn.00402800
push 1
lea ecx, [esp + 0xe4]
call fcn.00402800
mov edx, dword [0x42622c]
lea eax, [esp + 0x24]
push edx
push esi
push eax
lea ecx, [esp + 0x70]
call fcn.00405a60
push esi
mov cl, byte [esp + 0x17]
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
call fcn.00402800
mov edi, str.Call_real_setup_application.
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00402ca0
test al, al
je 0x404c6f
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov edx, ecx
mov esi, str.Call_real_setup_application.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00402c00
xor esi, esi
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
mov eax, dword [esp + 0x68]
cmp eax, esi
jne 0x404c98
mov eax, 0x426230
lea ecx, [esp + 0x90]
lea edx, [esp + 0xf0]
push ecx
push edx
push esi
push esi
push esi
push esi
push esi
push esi
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x404d02
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0xa4]
add eax, 0x1c
push eax
push str.Error_:_Create_installer_process_failed:
push ecx
call fcn.00403740
add esp, 0xc
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0xa8]
call fcn.00402800
push 1
lea ecx, [esp + 0x68]
call fcn.00402800
jmp 0x404dd2
mov dl, byte [esp + 0x13]
push esi
lea ecx, [esp + 0x78]
mov byte [esp + 0x78], dl
call fcn.00402800
mov edi, str.The_real_setup_application_process_finished.
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x78]
push ebp
call fcn.00402ca0
test al, al
je 0x404d5c
mov edi, dword [esp + 0x78]
mov ecx, ebp
mov eax, ecx
mov esi, str.The_real_setup_application_process_finished.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x7c], ebp
xor esi, esi
mov byte [ecx + ebp], 0
lea edx, [esp + 0x74]
push edx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x78]
call fcn.00402800
push 0xffffffffffffffff
mov eax, dword [esp + 0x94]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x90]
push ecx
call edi
mov edx, dword [esp + 0x94]
push edx
call edi
mov ecx, dword [esp + 0x68]
cmp ecx, esi
je 0x404dc6
mov al, byte [ecx - 1]
test al, al
je 0x404dbc
cmp al, 0xff
je 0x404dbc
dec al
mov byte [ecx - 1], al
jmp 0x404dc6
dec ecx
push ecx
call fcn.0040c880
add esp, 4
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], esi
lea ecx, [esp + 0x34]
call fcn.00405a10
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x34]
mov eax, dword [eax + 4]
cmp ecx, eax
jne 0x404b59
xor ebx, ebx
jmp 0x404e9c
lea ecx, [esp + 0x54]
lea edx, [esp + 0xa4]
push ecx
push 0x42c218
push edx
call fcn.00403740
add esp, 0xc
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0xa8]
jmp 0x404e97
mov al, byte [esp + 0x13]
push ebx
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], al
call fcn.00402800
mov edi, str.Cant_get_startup_section.
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00402ca0
test al, al
je 0x404e80
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov edx, ecx
mov esi, str.Cant_get_startup_section.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00402c00
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
push 1
lea ecx, [esp + 0x18]
call fcn.00402800
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x135]
mov byte [esp + 0x134], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x134]
push ecx
push 0x104
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea edx, [esp + 0x134]
push str.setup.exe
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x134]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x404efd
lea ecx, [esp + 0x134]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov edi, str.Delete_the_setup_in_Temp_folder.
or ecx, 0xffffffff
xor eax, eax
mov dl, byte [esp + 0x13]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + 0x14], dl
push ecx
push str.Delete_the_setup_in_Temp_folder.
lea ecx, [esp + 0x1c]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call fcn.00402b60
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x404f65
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x404f5c
cmp al, 0xff
je 0x404f5c
dec al
mov byte [ecx], al
jmp 0x404f65
push ecx
call fcn.0040c880
add esp, 4
mov edx, dword [0x42e954]
cmp edx, ebx
jne 0x404f74
mov edx, 0x426230
mov cl, byte [esp + 0x13]
mov edi, edx
mov byte [esp + 0x14], cl
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x1c]
call fcn.00402b60
lea edx, [esp + 0x14]
push edx
call fcn.0040be50
mov eax, dword [esp + 0x1c]
add esp, 4
cmp eax, ebx
je 0x404fd1
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x404fc8
cmp al, 0xff
je 0x404fc8
dec al
mov byte [ecx], al
jmp 0x404fd1
push ecx
call fcn.0040c880
add esp, 4
mov al, byte [esp + 0x13]
mov edi, str.Delete_Temp_folder.
mov byte [esp + 0x14], al
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x18], ebx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x1c], ebx
push ecx
push str.Delete_Temp_folder.
lea ecx, [esp + 0x1c]
mov dword [esp + 0x28], ebx
call fcn.00402b60
lea ecx, [esp + 0x14]
push ecx
call fcn.004012f0
mov ecx, eax
call fcn.00401360
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x405039
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x405030
cmp al, 0xff
je 0x405030
dec al
mov byte [ecx], al
jmp 0x405039
push ecx
call fcn.0040c880
add esp, 4
call fcn.00403d70
mov esi, eax
cmp esi, ebx
je 0x405054
mov ecx, esi
call fcn.00403df0
push esi
call fcn.0040c880
add esp, 4
mov edi, str.__Finish_all_log__
or ecx, 0xffffffff
xor eax, eax
mov dl, byte [esp + 0x13]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + 0x14], dl
push ecx
push str.__Finish_all_log__
lea ecx, [esp + 0x1c]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call fcn.00402b60
lea eax, [esp + 0x14]
push eax
call fcn.004012f0
mov ecx, eax
call fcn.00401360
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x4050bc
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x4050b3
cmp al, 0xff
je 0x4050b3
dec al
mov byte [ecx], al
jmp 0x4050bc
push ecx
call fcn.0040c880
add esp, 4
mov ecx, dword [esp + 0x58]
cmp ecx, ebx
je 0x4050e0
mov al, byte [ecx - 1]
test al, al
je 0x4050d6
cmp al, 0xff
je 0x4050d6
dec al
mov byte [ecx - 1], al
jmp 0x4050e0
dec ecx
push ecx
call fcn.0040c880
add esp, 4
lea ecx, [esp + 0x84]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
call fcn.00408d40
lea ecx, [esp + 0x38]
call fcn.00403e40
mov ecx, dword [esp + 0x28]
cmp ecx, ebx
je 0x405132
mov al, byte [ecx - 1]
test al, al
je 0x405128
cmp al, 0xff
je 0x405128
dec al
pop edi
pop esi
mov byte [ecx - 1], al
pop ebp
xor eax, eax
pop ebx
add esp, 0x228
ret 0x10
dec ecx
push ecx
call fcn.0040c880
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x228
ret 0x10