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 file attributes

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x4f6c
call fcn.00406380
push ebx
push esi
push edi
push 1
pop ebx
xor edi, edi
push ebx
push 0x401776
mov dword [ebp - 4], edi
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x40], ebx
call dword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
call fcn.00401a5a
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x38], 0x4019df
mov dword [ebp - 0x34], 0x4019ef
mov dword [ebp - 0x60], 0x4019df
mov dword [ebp - 0x5c], 0x4019ef
call fcn.00401d5e
xor edx, edx
lea ecx, [ebp - 0x4f6c]
call fcn.00404198
mov esi, 0x104
lea eax, [ebp - 0x938]
push esi
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, edi
je 0x4016c4
cmp eax, esi
ja 0x4016c4
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [ebp - 0x18], eax
xor ecx, ecx
mov eax, dword [ebp - 0x18]
mov ax, word [eax]
cmp ax, 0x22
jne 0x4010a6
xor eax, eax
cmp ecx, edi
sete al
mov ecx, eax
jmp 0x4010b5
cmp ax, di
je 0x4010bb
cmp ax, 0x20
jne 0x4010b5
cmp ecx, edi
je 0x4010bb
add dword [ebp - 0x18], 2
jmp 0x40108f
lea eax, [ebp - 0x72c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, edi
je 0x4016c4
cmp eax, esi
ja 0x4016c4
lea eax, [ebp - 0x72c]
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
shl esi, 2
call ebx
xor esi, eax
shl esi, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
xor esi, eax
and dword [ebp - 8], 0
lea eax, [ebp + edi*2 - 0x72c]
mov dword [ebp - 0x20], eax
push 0x408180
push dword [ebp - 0x20]
call dword [sym.imp.MSVCRT.dll_wcscpy]
lea eax, [ebp - 0x72c]
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
lea eax, [ebp + eax*2 - 0x72c]
add esp, 0xc
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x14], 8
lea ecx, [eax + 0xe]
mov edi, dword [ebp - 0xc]
shr dword [ebp - 0xc], 4
and edi, 0xf
cmp edi, 0xa
lea edx, [edi + 0x30]
jb 0x40115e
lea edx, [edi + 0x37]
movsx dx, dl
mov word [ecx], dx
dec ecx
dec ecx
dec dword [ebp - 0x14]
jne 0x401149
xor edi, edi
lea ecx, [ebp - 0x72c]
mov word [eax + 0x10], di
call fcn.0040189a
test eax, eax
jne 0x4011a0
lea eax, [ebp - 0x72c]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x4011ca
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4011b1
inc dword [ebp - 8]
call ebx
add esi, eax
cmp dword [ebp - 8], 0x64
jb 0x401117
mov eax, str.Cant_create_temp_folder
test eax, eax
mov ecx, eax
jne 0x4016ba
mov ecx, str.Error
jmp 0x4016ba
lea eax, [ebp - 0x72c]
push 0x408158
push eax
call dword [sym.imp.MSVCRT.dll_wcscat]
lea eax, [ebp - 0x72c]
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 0xc
lea edx, [ebp - 0x938]
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x14], eax
call fcn.00401ba5
push 0xb
test eax, eax
pop esi
je 0x401210
mov dword [ebp - 0x10], str.can_not_open_input_file
mov dword [ebp - 4], esi
jmp 0x401255
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], edi
call fcn.004017a2
test eax, eax
je 0x401235
push edi
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x64]
call fcn.00401ce4
test eax, eax
je 0x401241
mov dword [ebp - 4], esi
mov dword [ebp - 0x10], str.Cant_find_7z_archive
jmp 0x401255
lea eax, [ebp - 0x6c]
lea ecx, [ebp - 0x4f6c]
mov dword [ebp - 0x4f5c], eax
call fcn.004042b2
lea ecx, [ebp - 0x110]
call fcn.00402695
cmp dword [ebp - 4], edi
jne 0x401537
lea eax, [ebp - 0x60]
lea edx, [ebp - 0x4f6c]
push eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x110]
call fcn.00402757
cmp eax, edi
mov dword [ebp - 4], eax
jne 0x401537
or dword [ebp - 0x20], 0xffffffff
or dword [ebp - 0x48], 0xffffffff
cmp dword [ebp - 0xf4], edi
mov dword [ebp - 0x50], 0x40000000
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x58], edi
mov dword [ebp - 8], edi
jbe 0x4014e3
mov dword [ebp - 0x2c], edi
mov eax, dword [ebp - 0x100]
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 8]
add ecx, eax
xor esi, esi
mov dword [ebp - 0xc], ecx
push esi
lea ecx, [ebp - 0x110]
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x24], esi
call fcn.00402720
cmp eax, 0x104
jae 0x4014d5
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 8]
lea ecx, [ebp - 0x110]
lea ebx, [ebp + eax*2 - 0x72c]
push ebx
call fcn.00402720
lea eax, [ebp - 0x60]
lea edx, [ebp - 0x4f6c]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0x110]
push dword [ebp - 8]
call fcn.00403f73
cmp eax, esi
mov dword [ebp - 4], eax
jne 0x40152c
cmp word [ebx], si
je 0x401372
mov eax, ebx
mov dword [ebp - 0x1c], 1
mov edi, ebx
cmp word [eax], 0x2f
jne 0x401365
and word [edi], 0
lea ecx, [ebp - 0x72c]
call fcn.0040178b
mov esi, dword [ebp - 0x1c]
mov word [edi], 0x5c
inc dword [ebp - 0x1c]
inc edi
inc edi
mov eax, edi
cmp word [edi], 0
jne 0x401348
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x19], 0
je 0x40138b
lea ecx, [ebp - 0x72c]
call fcn.0040178b
jmp 0x4014ad
lea ebx, [ebx + esi*2]
push ebx
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
lea edx, [ebp - 0x44]
mov ecx, ebx
mov edi, eax
call fcn.004016cb
sub edi, dword [ebp - 0x44]
push dword [ebp - 0x44]
mov dword [ebp - 0x1c], eax
mov ecx, 0x408010
lea eax, [ebx + edi*2]
push eax
push 6
pop edx
call fcn.004016ff
push dword [ebp - 0x1c]
mov ecx, 0x408028
mov edi, eax
push ebx
push 4
pop edx
call fcn.004016ff
neg esi
sbb esi, esi
mov ecx, edi
and esi, 0x1000
add eax, esi
shl ecx, 6
add eax, ecx
cmp dword [ebp - 0x50], eax
jbe 0x4013fb
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x20], eax
xor eax, eax
cmp edi, 1
setne al
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x72c]
call fcn.0040189a
test eax, eax
jne 0x4014c5
lea edx, [ebp - 0x72c]
lea ecx, [ebp - 0x30]
call fcn.00401bf4
test eax, eax
jne 0x4014ce
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x28]
lea edx, [ecx + eax]
lea ecx, [ebp - 0x30]
call fcn.00401c82
test eax, eax
jne 0x40144b
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x24]
je 0x401459
mov dword [ebp - 0x10], str.Cant_write_output_file
mov dword [ebp - 4], 0xb
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1c], 0
je 0x40147e
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x74]
push eax
push 0
push 0
mov dword [ebp - 0x74], ecx
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_SetFileTime]
lea ecx, [ebp - 0x30]
call fcn.00401bfc
cmp dword [ebp - 4], 0
jne 0x40152c
test eax, eax
jne 0x4014de
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1d], 0
je 0x4014ad
push dword [eax + 0x14]
lea eax, [ebp - 0x72c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
inc dword [ebp - 8]
add dword [ebp - 0x2c], 0x20
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0xf4]
jb 0x4012b4
jmp 0x4014e8
mov dword [ebp - 0x10], str.Duplicate_file
jmp 0x4014d5
mov dword [ebp - 0x10], str.Cant_open_output_file
mov dword [ebp - 4], 0xb
jmp 0x40152c
mov dword [ebp - 4], eax
xor edi, edi
cmp dword [ebp - 4], edi
jne 0x40152c
mov edx, dword [ebp - 0x20]
cmp edx, 0xffffffff
jne 0x4014f9
mov dword [ebp - 0x10], str.There_is_no_file_to_execute
jmp 0x4014d5
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x110]
lea esi, [ebp + eax*2 - 0x72c]
push esi
call fcn.00402720
cmp word [esi], 0
je 0x40152c
mov eax, esi
cmp word [eax], 0x2f
jne 0x401522
mov word [esi], 0x5c
inc esi
inc esi
mov eax, esi
cmp word [esi], 0
jne 0x401517
mov edx, dword [ebp - 0x28]
lea ecx, [ebp - 0x38]
call dword [ebp - 0x34]
xor edi, edi
lea edx, [ebp - 0x38]
lea ecx, [ebp - 0x110]
call fcn.004026b7
lea ecx, [ebp - 0x64]
call fcn.00401bfc
cmp dword [ebp - 4], edi
jne 0x401665
xor ebx, ebx
cmp dword [ebp - 0x40], edi
je 0x4015db
push 0x3c
lea eax, [ebp - 0xb8]
pop esi
push esi
push edi
push eax
call sub.MSVCRT.dll_memset
mov dword [ebp - 0xb8], esi
mov esi, dword [ebp - 0x18]
lea eax, [ebp - 0x72c]
push esi
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xb4], 0x140
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 0x10
test eax, eax
je 0x4015a1
mov dword [ebp - 0xa4], esi
lea eax, [ebp - 0xb8]
mov dword [ebp - 0x9c], 1
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
cmp eax, edi
je 0x4015d2
cmp dword [ebp - 0x98], 0x20
ja 0x4015cd
cmp dword [ebp - 0x98], edi
jne 0x4015d2
mov ebx, dword [ebp - 0x80]
jmp 0x401651
mov dword [ebp - 4], 0xb
jmp 0x401651
lea eax, [ebp - 0x72c]
push eax
lea eax, [ebp - 0xf50]
push eax
call dword [sym.imp.MSVCRT.dll_wcscpy]
push dword [ebp - 0x18]
lea eax, [ebp - 0xf50]
push eax
call dword [sym.imp.MSVCRT.dll_wcscat]
push 0x44
lea eax, [ebp - 0xc0]
pop esi
push esi
push edi
push eax
call sub.MSVCRT.dll_memset
add esp, 0x1c
lea eax, [ebp - 0x7c]
mov dword [ebp - 0xc0], esi
push eax
lea eax, [ebp - 0xc0]
push eax
push edi
push edi
push edi
push edi
push edi
lea eax, [ebp - 0xf50]
push edi
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x401645
mov dword [ebp - 4], 0xb
jmp 0x401665
push dword [ebp - 0x78]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [ebp - 0x7c]
cmp ebx, edi
je 0x401665
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x72c]
mov word [ebp + eax*2 - 0x72c], di
call fcn.004018c6
mov eax, dword [ebp - 4]
cmp eax, edi
jne 0x401686
xor eax, eax
jmp 0x4016c6
cmp eax, 4
jne 0x401692
mov ecx, str.Decoder_doesnt_support_this_archive
jmp 0x4016b6
cmp eax, 2
jne 0x40169e
mov ecx, str.Cant_allocate_required_memory
jmp 0x4016b6
cmp eax, 3
jne 0x4016aa
mov ecx, str.CRC_error
jmp 0x4016b6
mov ecx, dword [ebp - 0x10]
cmp ecx, edi
jne 0x4016ba
mov ecx, str.ERROR
cmp ecx, edi
je 0x4016bf
call fcn.0040177c
push 1
pop eax
jmp 0x4016c6
mov eax, ebx
pop edi
pop esi
pop ebx
leave
ret