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, 0x53f4
call fcn.00407c40
push ebx
push esi
push edi
push 1
xor ebx, ebx
pop edi
mov dword [ebp - 4], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x24], ebx
call fcn.004055cb
call fcn.00403c2a
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x30], 0x401a92
mov dword [ebp - 0x2c], 0x401aa2
mov dword [ebp - 0x5c], 0x401a92
mov dword [ebp - 0x58], 0x401aa2
call fcn.0040401a
xor edx, edx
lea ecx, [ebp - 0x53f4]
call fcn.00404a08
mov esi, 0x104
lea eax, [ebp - 0xdc0]
push esi
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, ebx
je 0x40177c
cmp eax, esi
ja 0x40177c
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 0x4010a2
xor eax, eax
cmp ecx, ebx
sete al
mov ecx, eax
jmp 0x4010b1
cmp ax, bx
je 0x4010b7
cmp ax, 0x20
jne 0x4010b1
cmp ecx, ebx
je 0x4010b7
add dword [ebp - 0x18], 2
jmp 0x40108b
lea eax, [ebp - 0x760]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, ebx
je 0x40177c
cmp eax, esi
ja 0x40177c
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
mov dword [ebp - 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
shl esi, 2
call edi
xor esi, eax
shl esi, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
xor esi, eax
mov dword [ebp - 8], ebx
mov eax, dword [ebp - 0x1c]
push 0x408278
lea eax, [ebp + eax*2 - 0x760]
push eax
call dword [sym.imp.MSVCRT.dll_wcscpy]
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
lea eax, [ebp + eax*2 - 0x760]
add esp, 0xc
mov ebx, esi
mov dword [ebp - 0x14], 8
lea ecx, [eax + 0xe]
mov edx, ebx
and edx, 0xf
shr ebx, 4
cmp edx, 0xa
jae 0x401154
add edx, 0x30
jmp 0x401157
add edx, 0x37
mov word [ecx], dx
dec ecx
dec ecx
dec dword [ebp - 0x14]
jne 0x401142
xor ebx, ebx
lea ecx, [ebp - 0x760]
mov word [eax + 0x10], bx
call fcn.0040194d
test eax, eax
jne 0x401195
lea eax, [ebp - 0x760]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x4011ae
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4011d5
inc dword [ebp - 8]
call edi
add esi, eax
cmp dword [ebp - 8], 0x64
jb 0x401109
push 0xb
pop esi
mov dword [ebp - 4], esi
jmp 0x4011df
lea eax, [ebp - 0x760]
push 0x408274
push eax
call dword [sym.imp.MSVCRT.dll_wcscat]
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 0xc
mov dword [ebp - 0x1c], eax
jmp 0x4011dc
mov dword [ebp - 4], 0xb
push 0xb
pop esi
lea eax, [ebp - 0x760]
push eax
lea eax, [ebp - 0xbb4]
push eax
call dword [sym.imp.MSVCRT.dll_wcscpy]
cmp dword [ebp - 4], ebx
pop ecx
pop ecx
je 0x401213
mov eax, str.Cant_create_temp_folder
test eax, eax
mov ecx, eax
jne 0x401772
mov ecx, str.Error
jmp 0x401772
lea edx, [ebp - 0xdc0]
lea ecx, [ebp - 0x64]
call fcn.00403e61
test eax, eax
je 0x401231
mov dword [ebp - 0xc], str.can_not_open_input_file
mov dword [ebp - 4], esi
jmp 0x401276
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], ebx
call fcn.00401858
test eax, eax
je 0x401256
push ebx
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x64]
call fcn.00403fa0
test eax, eax
je 0x401262
mov dword [ebp - 4], esi
mov dword [ebp - 0xc], str.Cant_find_7z_archive
jmp 0x401276
lea eax, [ebp - 0x6c]
lea ecx, [ebp - 0x53f4]
mov dword [ebp - 0x53e4], eax
call fcn.00404b22
lea ecx, [ebp - 0x144]
call fcn.00401aca
cmp dword [ebp - 4], ebx
jne 0x40158a
lea eax, [ebp - 0x5c]
lea edx, [ebp - 0x53f4]
push eax
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x144]
call fcn.0040207e
cmp eax, ebx
mov dword [ebp - 4], eax
jne 0x40158a
or dword [ebp - 0x34], 0xffffffff
or dword [ebp - 0x70], 0xffffffff
cmp dword [ebp - 0x104], ebx
mov dword [ebp - 0x54], 0x40000000
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 8], ebx
jbe 0x401536
mov edx, dword [ebp - 8]
xor esi, esi
push esi
lea ecx, [ebp - 0x144]
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x28], esi
call fcn.00403b91
cmp eax, 0x104
jae 0x401528
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
lea ecx, [ebp - 0x144]
lea edi, [ebp + eax*2 - 0x760]
push edi
call fcn.00403b91
lea eax, [ebp - 0x5c]
lea edx, [ebp - 0x53f4]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x144]
push dword [ebp - 8]
call fcn.00403a27
cmp eax, esi
mov dword [ebp - 4], eax
jne 0x40157f
cmp word [edi], si
je 0x401382
mov eax, edi
mov dword [ebp - 0x10], 1
mov ebx, edi
cmp word [eax], 0x2f
jne 0x401375
and word [ebx], 0
lea ecx, [ebp - 0x760]
call fcn.00401841
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 0x401358
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0xfc]
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 0x4013b6
lea ecx, [ebp - 0x760]
call fcn.00401841
jmp 0x401504
lea ebx, [edi + esi*2]
push ebx
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
lea edx, [ebp - 0x38]
mov ecx, ebx
mov edi, eax
call fcn.00401785
sub edi, dword [ebp - 0x38]
push dword [ebp - 0x38]
mov dword [ebp - 0x48], eax
mov ecx, 0x408100
lea eax, [ebx + edi*2]
push eax
push 7
pop edx
call fcn.004017b9
push dword [ebp - 0x48]
mov ecx, 0x40811c
mov edi, eax
push ebx
push 4
pop edx
call fcn.004017b9
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 0x401426
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 - 0x760]
call fcn.0040194d
test eax, eax
jne 0x401518
lea edx, [ebp - 0x760]
lea ecx, [ebp - 0x20]
call fcn.00403eb0
test eax, eax
jne 0x401521
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x14]
lea edx, [ecx + eax]
lea ecx, [ebp - 0x20]
call fcn.00403f3e
test eax, eax
jne 0x401476
mov eax, dword [ebp - 0x50]
cmp eax, dword [ebp - 0x28]
je 0x401484
mov dword [ebp - 0xc], str.Cant_write_output_file
mov dword [ebp - 4], 0xb
mov eax, dword [ebp - 0xe8]
xor esi, esi
cmp eax, esi
je 0x4014c1
mov ecx, dword [ebp - 0x10]
mov dl, byte [ebp - 0x44]
test byte [ecx + eax], dl
je 0x4014c1
mov eax, dword [ebp - 0xe4]
mov ecx, dword [ebp - 8]
lea eax, [eax + ecx*8]
mov ecx, dword [eax]
mov dword [ebp - 0x78], ecx
mov eax, dword [eax + 4]
mov dword [ebp - 0x74], eax
lea eax, [ebp - 0x78]
push eax
push esi
push esi
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_SetFileTime]
lea ecx, [ebp - 0x20]
call fcn.00403eb8
cmp dword [ebp - 4], esi
jne 0x40157f
test eax, eax
jne 0x401531
mov eax, dword [ebp - 0xf0]
test eax, eax
je 0x401504
mov ecx, dword [ebp - 0x10]
mov dl, byte [ebp - 0x44]
test byte [ecx + eax], dl
je 0x401504
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 8]
push dword [eax + ecx*4]
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x104]
jb 0x4012d2
jmp 0x40153b
mov dword [ebp - 0xc], str.Duplicate_file
jmp 0x401528
mov dword [ebp - 0xc], str.Cant_open_output_file
mov dword [ebp - 4], 0xb
jmp 0x40157f
mov dword [ebp - 4], eax
xor ebx, ebx
cmp dword [ebp - 4], ebx
jne 0x40157f
mov edx, dword [ebp - 0x34]
cmp edx, 0xffffffff
jne 0x40154c
mov dword [ebp - 0xc], str.There_is_no_file_to_execute
jmp 0x401528
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x144]
lea esi, [ebp + eax*2 - 0x760]
push esi
call fcn.00403b91
cmp word [esi], 0
je 0x40157f
mov eax, esi
cmp word [eax], 0x2f
jne 0x401575
mov word [esi], 0x5c
inc esi
inc esi
mov eax, esi
cmp word [esi], 0
jne 0x40156a
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x30]
call dword [ebp - 0x2c]
xor ebx, ebx
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x144]
call fcn.00401b2c
lea ecx, [ebp - 0x64]
call fcn.00403eb8
cmp dword [ebp - 4], ebx
jne 0x40171c
lea eax, [ebp - 0x96c]
xor edi, edi
push eax
push 0x105
mov word [ebp - 0x96c], bx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp eax, ebx
je 0x4015cf
cmp eax, 0x104
jbe 0x4015d6
mov word [ebp - 0x96c], bx
lea eax, [ebp - 0xbb4]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmp dword [ebp - 0x40], ebx
je 0x40166f
push 0x3c
lea eax, [ebp - 0xbc]
pop esi
push esi
push ebx
push eax
call sub.MSVCRT.dll_memset
push dword [ebp - 0x18]
lea eax, [ebp - 0x760]
mov dword [ebp - 0xbc], esi
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xb8], 0x140
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 0x10
test eax, eax
je 0x401632
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0xa8], eax
lea eax, [ebp - 0xbc]
mov dword [ebp - 0xa0], 1
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
cmp eax, ebx
je 0x401666
cmp dword [ebp - 0x9c], 0x20
ja 0x40165e
cmp dword [ebp - 0x9c], ebx
jne 0x401666
mov edi, dword [ebp - 0x84]
jmp 0x4016e5
mov dword [ebp - 4], 0xb
jmp 0x4016e5
lea eax, [ebp - 0x760]
push eax
lea eax, [ebp - 0x13d8]
push eax
call dword [sym.imp.MSVCRT.dll_wcscpy]
push dword [ebp - 0x18]
lea eax, [ebp - 0x13d8]
push eax
call dword [sym.imp.MSVCRT.dll_wcscat]
push 0x44
lea eax, [ebp - 0xc4]
pop esi
push esi
push ebx
push eax
call sub.MSVCRT.dll_memset
add esp, 0x1c
lea eax, [ebp - 0x80]
mov dword [ebp - 0xc4], esi
push eax
lea eax, [ebp - 0xc4]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x13d8]
push ebx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x4016d9
mov dword [ebp - 4], 0xb
jmp 0x40170f
push dword [ebp - 0x7c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x80]
cmp edi, ebx
je 0x40170f
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x24]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
jne 0x401708
mov dword [ebp - 0x24], 1
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x96c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x760]
mov word [ebp + eax*2 - 0x760], bx
call fcn.00401979
mov eax, dword [ebp - 4]
cmp eax, ebx
jne 0x40173e
mov eax, dword [ebp - 0x24]
jmp 0x40177e
cmp eax, 4
jne 0x40174a
mov ecx, str.Decoder_doesnt_support_this_archive
jmp 0x40176e
cmp eax, 2
jne 0x401756
mov ecx, str.Cant_allocate_required_memory
jmp 0x40176e
cmp eax, 3
jne 0x401762
mov ecx, str.CRC_error
jmp 0x40176e
mov ecx, dword [ebp - 0xc]
cmp ecx, ebx
jne 0x401772
mov ecx, str.ERROR
cmp ecx, ebx
je 0x401777
call fcn.00401830
push 1
pop eax
jmp 0x40177e
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 0x10