Function at 0x401000
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Create directory
Create process on windows
Get common file path
Set current directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1408
call fcn.00407c50
push ebx
push esi
push edi
push 1
xor edi, edi
pop ebx
mov dword [ebp - 4], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x2c], edi
call fcn.00405668
push ebx
push 0x40186d
call dword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
call fcn.00403cf5
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x24], 0x401aee
mov dword [ebp - 0x20], 0x401afe
mov dword [ebp - 0x5c], 0x401aee
mov dword [ebp - 0x58], 0x401afe
call fcn.0040401e
xor edx, edx
lea ecx, [ebp - 0xa8]
call fcn.00404a7d
mov esi, 0x104
lea eax, [ebp - 0xba8]
push esi
push eax
push edi
mov dword [ebp - 0x8c], edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, edi
je 0x4017bc
cmp eax, esi
ja 0x4017bc
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [ebp - 0x14], eax
xor ecx, ecx
mov eax, dword [ebp - 0x14]
mov ax, word [eax]
cmp ax, 0x22
jne 0x4010b7
xor eax, eax
cmp ecx, edi
sete al
mov ecx, eax
jmp 0x4010c6
cmp ax, di
je 0x4010cc
cmp ax, 0x20
jne 0x4010c6
cmp ecx, edi
je 0x4010cc
add dword [ebp - 0x14], 2
jmp 0x4010a0
lea eax, [ebp - 0x790]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, edi
je 0x4017bc
cmp eax, esi
ja 0x4017bc
lea eax, [ebp - 0x790]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [ebp - 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
shl esi, 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor esi, eax
shl esi, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
xor esi, eax
mov dword [ebp - 8], edi
mov eax, dword [ebp - 0x1c]
push 0x408288
lea eax, [ebp + eax*2 - 0x790]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea eax, [ebp - 0x790]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [ebp + eax*2 - 0x790]
mov ebx, esi
mov dword [ebp - 0x18], 8
lea ecx, [eax + 0xe]
mov edx, ebx
and edx, 0xf
shr ebx, 4
cmp edx, 0xa
jae 0x401163
add edx, 0x30
jmp 0x401166
add edx, 0x37
mov word [ecx], dx
dec ecx
dec ecx
dec dword [ebp - 0x18]
jne 0x401151
lea ecx, [ebp - 0x790]
mov word [eax + 0x10], di
call fcn.004019b1
push 0xb
test eax, eax
pop ebx
jne 0x4011a5
lea eax, [ebp - 0x790]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x4011ef
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4011ba
inc dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
add esi, eax
cmp dword [ebp - 8], 0x64
jb 0x40111b
mov dword [ebp - 4], ebx
lea eax, [ebp - 0x790]
push eax
lea eax, [ebp - 0xdf0]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
cmp dword [ebp - 4], edi
je 0x401213
mov eax, str.Cant_create_temp_folder
test eax, eax
mov ecx, eax
jne 0x4017b2
mov ecx, str.Error
jmp 0x4017b2
lea eax, [ebp - 0x790]
push 0x408260
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [ebp - 0x790]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [ebp - 0x1c], eax
jmp 0x4011bd
lea edx, [ebp - 0xba8]
lea ecx, [ebp - 0x7c]
call fcn.00403e6b
test eax, eax
je 0x401231
mov dword [ebp - 0xc], str.can_not_open_input_file
mov dword [ebp - 4], ebx
jmp 0x4012a0
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x7c]
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], edi
call fcn.004018bc
test eax, eax
je 0x401256
push edi
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x7c]
call fcn.00403faa
test eax, eax
je 0x401262
mov dword [ebp - 4], ebx
mov dword [ebp - 0xc], str.Cant_find_7z_archive
jmp 0x4012a0
mov esi, 0x40000
lea ecx, [ebp - 0x24]
mov edx, esi
call dword [ebp - 0x24]
cmp eax, edi
mov dword [ebp - 0x8c], eax
jne 0x401282
mov dword [ebp - 4], 2
jmp 0x4012a0
lea eax, [ebp - 0x84]
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x90], edi
mov dword [ebp - 0x94], edi
lea ecx, [ebp - 0x174]
call fcn.00401b07
cmp dword [ebp - 4], edi
jne 0x4015be
lea eax, [ebp - 0x5c]
lea edx, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp - 0x174]
call fcn.004020e6
cmp eax, edi
mov dword [ebp - 4], eax
jne 0x4015be
or dword [ebp - 0x34], 0xffffffff
or dword [ebp - 0x60], 0xffffffff
cmp dword [ebp - 0x12c], edi
mov dword [ebp - 0x54], 0x40000000
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x64], edi
mov dword [ebp - 8], edi
jbe 0x40156a
mov edx, dword [ebp - 8]
xor esi, esi
push esi
lea ecx, [ebp - 0x174]
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x30], esi
call fcn.00403c4e
cmp eax, 0x104
jae 0x401551
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
lea ecx, [ebp - 0x174]
lea edi, [ebp + eax*2 - 0x790]
push edi
call fcn.00403c4e
lea eax, [ebp - 0x5c]
lea edx, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x60]
push eax
lea ecx, [ebp - 0x174]
push dword [ebp - 8]
call fcn.00403ae4
cmp eax, esi
mov dword [ebp - 4], eax
jne 0x4015b3
cmp word [edi], si
je 0x4013ac
mov eax, edi
mov dword [ebp - 0x10], 1
mov ebx, edi
cmp word [eax], 0x2f
jne 0x40139f
and word [ebx], 0
lea ecx, [ebp - 0x790]
call fcn.004018a5
mov esi, dword [ebp - 0x10]
mov word [ebx], 0x5c
inc dword [ebp - 0x10]
inc ebx
inc ebx
mov eax, ebx
cmp word [ebx], 0
jne 0x401382
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x124]
and ecx, 7
mov eax, 0x80
sar eax, cl
mov ecx, dword [ebp - 8]
shr ecx, 3
mov dword [ebp - 0x10], ecx
test byte [ecx + edx], al
mov dword [ebp - 0x44], eax
je 0x4013e0
lea ecx, [ebp - 0x790]
call fcn.004018a5
jmp 0x40152d
lea ebx, [edi + esi*2]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea edx, [ebp - 0x38]
mov ecx, ebx
mov edi, eax
call fcn.004017c3
sub edi, dword [ebp - 0x38]
push dword [ebp - 0x38]
mov dword [ebp - 0x48], eax
mov ecx, 0x4080f8
lea eax, [ebx + edi*2]
push eax
push 7
pop edx
call fcn.004017f6
push dword [ebp - 0x48]
mov ecx, 0x408114
mov edi, eax
push ebx
push 4
pop edx
call fcn.004017f6
neg esi
sbb esi, esi
mov ecx, edi
and esi, 0x1000
add eax, esi
shl ecx, 6
add eax, ecx
cmp dword [ebp - 0x54], eax
jbe 0x40144f
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x34], eax
xor eax, eax
cmp edi, 2
setne al
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x790]
call fcn.004019b1
test eax, eax
jne 0x401541
lea edx, [ebp - 0x790]
lea ecx, [ebp - 0x28]
call fcn.00403eba
test eax, eax
jne 0x40154a
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [ecx + eax]
lea ecx, [ebp - 0x28]
call fcn.00403f48
test eax, eax
jne 0x40149f
mov eax, dword [ebp - 0x50]
cmp eax, dword [ebp - 0x30]
je 0x4014ad
mov dword [ebp - 0xc], str.Cant_write_output_file
mov dword [ebp - 4], 0xb
mov eax, dword [ebp - 0x110]
xor esi, esi
cmp eax, esi
je 0x4014ea
mov ecx, dword [ebp - 0x10]
mov dl, byte [ebp - 0x44]
test byte [ecx + eax], dl
je 0x4014ea
mov eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 8]
lea eax, [eax + ecx*8]
mov ecx, dword [eax]
mov dword [ebp - 0x6c], ecx
mov eax, dword [eax + 4]
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x6c]
push eax
push esi
push esi
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.dll_SetFileTime]
lea ecx, [ebp - 0x28]
call fcn.00403ec2
cmp dword [ebp - 4], esi
jne 0x4015b3
test eax, eax
jne 0x40155a
mov eax, dword [ebp - 0x118]
test eax, eax
je 0x40152d
mov ecx, dword [ebp - 0x10]
mov dl, byte [ebp - 0x44]
test byte [ecx + eax], dl
je 0x40152d
mov eax, dword [ebp - 0x114]
mov ecx, dword [ebp - 8]
push dword [eax + ecx*4]
lea eax, [ebp - 0x790]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x12c]
jb 0x4012fc
jmp 0x40156f
mov dword [ebp - 0xc], str.Duplicate_file
jmp 0x401551
mov dword [ebp - 0xc], str.Cant_open_output_file
mov dword [ebp - 4], 0xb
jmp 0x4015b3
mov dword [ebp - 0xc], str.Cant_close_output_file
mov dword [ebp - 4], 0xb
xor edi, edi
cmp dword [ebp - 4], edi
jne 0x4015b3
mov edx, dword [ebp - 0x34]
cmp edx, 0xffffffff
jne 0x401580
mov dword [ebp - 0xc], str.There_is_no_file_to_execute
jmp 0x401551
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x174]
lea esi, [ebp + eax*2 - 0x790]
push esi
call fcn.00403c4e
cmp word [esi], 0
je 0x4015b3
mov eax, esi
cmp word [eax], 0x2f
jne 0x4015a9
mov word [esi], 0x5c
inc esi
inc esi
mov eax, esi
cmp word [esi], 0
jne 0x40159e
mov edx, dword [ebp - 0x18]
lea ecx, [ebp - 0x24]
call dword [ebp - 0x20]
xor edi, edi
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0x174]
call fcn.00401b72
mov edx, dword [ebp - 0x8c]
lea ecx, [ebp - 0x24]
call dword [ebp - 0x20]
lea ecx, [ebp - 0x7c]
call fcn.00403ec2
cmp dword [ebp - 4], edi
jne 0x40175c
lea eax, [ebp - 0x99c]
xor ebx, ebx
push eax
push 0x105
mov word [ebp - 0x99c], di
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp eax, edi
je 0x40160f
cmp eax, 0x104
jbe 0x401616
mov word [ebp - 0x99c], di
lea eax, [ebp - 0xdf0]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmp dword [ebp - 0x40], edi
je 0x4016af
push 0x3c
lea eax, [ebp - 0xe4]
pop esi
push esi
push edi
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
lea eax, [ebp - 0x790]
mov dword [ebp - 0xe4], esi
mov dword [ebp - 0xd4], eax
push dword [ebp - 0x14]
mov dword [ebp - 0xe0], 0x140
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x401672
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0xd0], eax
lea eax, [ebp - 0xe4]
mov dword [ebp - 0xc8], 1
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
cmp eax, edi
je 0x4016a6
cmp dword [ebp - 0xc4], 0x20
ja 0x40169e
cmp dword [ebp - 0xc4], edi
jne 0x4016a6
mov ebx, dword [ebp - 0xac]
jmp 0x401725
mov dword [ebp - 4], 0xb
jmp 0x401725
lea eax, [ebp - 0x790]
push eax
lea eax, [ebp - 0x1408]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push dword [ebp - 0x14]
lea eax, [ebp - 0x1408]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x44
lea eax, [ebp - 0xec]
pop esi
push esi
push edi
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
lea eax, [ebp - 0x74]
mov dword [ebp - 0xec], esi
push eax
lea eax, [ebp - 0xec]
push eax
push edi
push edi
push edi
push edi
push edi
lea eax, [ebp - 0x1408]
push edi
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x401719
mov dword [ebp - 4], 0xb
jmp 0x40174f
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [ebp - 0x74]
cmp ebx, edi
je 0x40174f
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x2c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
jne 0x401748
mov dword [ebp - 0x2c], 1
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x99c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x790]
mov word [ebp + eax*2 - 0x790], di
call fcn.004019dd
mov eax, dword [ebp - 4]
cmp eax, edi
jne 0x40177e
mov eax, dword [ebp - 0x2c]
jmp 0x4017be
cmp eax, 4
jne 0x40178a
mov ecx, str.Decoder_doesnt_support_this_archive
jmp 0x4017ae
cmp eax, 2
jne 0x401796
mov ecx, str.Cant_allocate_required_memory
jmp 0x4017ae
cmp eax, 3
jne 0x4017a2
mov ecx, str.CRC_error
jmp 0x4017ae
mov ecx, dword [ebp - 0xc]
cmp ecx, edi
jne 0x4017b2
mov ecx, str.ERROR
cmp ecx, edi
je 0x4017b7
call fcn.00401873
push 1
pop eax
jmp 0x4017be
mov eax, ebx
pop edi
pop esi
pop ebx
leave
ret