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

Disassembly:
sub esp, 0x70
push ebx
push ebp
push esi
push edi
push 1
xor ebp, ebp
pop ebx
push ebp
call dword [sym.imp.ole32.dll_CoInitialize]
push str.RegDeleteKeyExW
push str.advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x405a14], eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ecx, eax
call fcn.004015d5
mov esi, eax
mov dword [esp + 0x18], esi
mov ax, word [esi]
cmp ax, bp
je 0x4010ec
cmp ax, 0x20
jne 0x401058
inc esi
inc esi
jmp 0x401042
mov ecx, esi
call fcn.004015d5
cmp word [esi], 0x2f
mov edi, eax
mov dword [esp + 0x14], edi
jne 0x4010e3
mov cx, word [esi + 2]
cmp cx, 0x53
jne 0x401090
mov ax, word [esi + 4]
cmp ax, bp
je 0x401084
cmp ax, 0x20
jne 0x401090
mov dword [0x4057f4], 1
jmp 0x4010e3
cmp cx, 0x4e
jne 0x4010a5
mov ax, word [esi + 4]
cmp ax, bp
je 0x4010e1
cmp ax, 0x20
je 0x4010e1
cmp cx, 0x44
jne 0x4010e3
cmp word [esi + 4], 0x3d
jne 0x4010e3
add esi, 6
sub edi, esi
sar edi, 1
cmp edi, 0x104
ja 0x4010e3
push edi
push esi
mov esi, 0x4055d8
push esi
call dword [sym.imp.MSVCRT.dll_wcsncpy]
add esp, 0xc
mov ecx, esi
mov word [edi*2 + 0x4055d8], bp
call fcn.00401603
xor ebx, ebx
mov esi, dword [esp + 0x14]
jmp 0x401042
mov edi, 0x104
mov esi, 0x40448c
push edi
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, ebp
je 0x40150e
cmp eax, edi
ja 0x40150e
push esi
mov esi, 0x4057f8
push esi
xor edi, edi
call dword [sym.imp.MSVCRT.dll_wcscpy]
mov eax, dword [0x4057f8]
pop ecx
pop ecx
cmp ax, bp
mov ecx, 0x4057fa
je 0x40150e
cmp ax, 0x5c
jne 0x40113b
mov edi, ecx
mov ax, word [ecx]
inc ecx
inc ecx
cmp ax, bp
jne 0x401133
cmp edi, ebp
je 0x40150e
mov edx, dword [str.Uninstall.exe]
mov ecx, edi
call fcn.0040151b
test eax, eax
jne 0x401160
xor ebx, ebx
mov word [edi], bp
cmp ebx, ebp
mov edi, 0x404b08
je 0x40137a
push edi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, ebp
je 0x40137a
cmp eax, 0x105
ja 0x40137a
mov edx, edi
mov ecx, esi
call fcn.00401568
test eax, eax
jne 0x40137a
push edi
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
mov ebx, 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
lea eax, [ebx*2 + 0x404b08]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x1c], eax
jmp 0x4011db
xor ebp, ebp
push 0x40373c
push dword [esp + 0x20]
call dword [sym.imp.MSVCRT.dll_wcscpy]
push edi
call dword [sym.imp.MSVCRT.dll_wcslen]
lea eax, [eax*2 + 0x404b08]
add esp, 0xc
mov ebx, esi
mov dword [esp + 0x14], 8
lea ecx, [eax + 0xe]
mov edx, ebx
and edx, 0xf
shr ebx, 4
cmp edx, 0xa
jae 0x40121a
add edx, 0x30
jmp 0x40121d
add edx, 0x37
mov word [ecx], dx
dec ecx
dec ecx
dec dword [esp + 0x14]
jne 0x401208
mov word [eax + 0x10], bp
call fcn.0040161b
mov ebp, dword [sym.imp.MSVCRT.dll_wcscat]
mov ebx, 0x404024
test eax, eax
jne 0x40125a
push 0
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x401273
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401286
inc dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
add esi, eax
cmp dword [esp + 0x10], 0x64
jb 0x4011d9
jmp 0x401286
push 0x403738
push edi
call ebp
push edi
push ebx
call dword [sym.imp.MSVCRT.dll_wcscpy]
add esp, 0x10
cmp word [0x404024], 0
je 0x401373
mov esi, 0x4046a8
push ebx
push esi
call dword [sym.imp.MSVCRT.dll_wcscpy]
push str.Uninst.exe
push esi
call ebp
add esp, 0x10
push 1
push esi
push 0x40448c
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x401373
mov ecx, esi
call fcn.00401631
mov ecx, ebx
call fcn.00401631
and word [0x404f70], 0
mov edx, esi
mov esi, 0x404f70
mov ecx, esi
call fcn.0040163d
push str.__N__D
push esi
call ebp
pop ecx
mov edx, 0x4057f8
pop ecx
mov ecx, esi
call fcn.0040163d
mov eax, dword [esp + 0x18]
cmp word [eax], 0
je 0x40131e
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
cmp eax, 0x212
pop ecx
jae 0x40131e
push dword [esp + 0x18]
push esi
call ebp
pop ecx
pop ecx
push 0x44
lea eax, [esp + 0x40]
pop ebp
push ebp
push 0
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
lea eax, [esp + 0x20]
mov dword [esp + 0x3c], ebp
push eax
lea eax, [esp + 0x40]
push eax
xor eax, eax
push ebx
push eax
push eax
push eax
push eax
push eax
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x401373
push dword [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
cmp dword [esp + 0x20], 0
je 0x401373
push dword [esp + 0x20]
call esi
xor eax, eax
jmp 0x401511
mov esi, 0x4057f8
xor ebp, ebp
push esi
mov esi, dword [sym.imp.MSVCRT.dll_wcscpy]
push edi
call esi
cmp word [0x4055d8], bp
pop ecx
pop ecx
je 0x4013a0
push 0x4055d8
push edi
call esi
pop ecx
pop ecx
mov ecx, edi
call fcn.004015b0
cmp dword [0x4057f4], ebp
je 0x4013b2
call fcn.00401694
jmp 0x401511
push 1
pop esi
push ebp
push 0x401df4
push ebp
push 0x64
push dword [esp + 0x94]
mov dword [esp + 0x24], esi
call dword [sym.imp.USER32.dll_CreateDialogParamW]
cmp eax, ebp
mov dword [0x405a18], eax
jne 0x4013df
mov eax, esi
jmp 0x401511
push esi
push dword [esp + 0x88]
call dword [sym.imp.USER32.dll_LoadIconW]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push eax
push esi
push 0x80
push dword [0x405a18]
call ebx
push ebp
push ebp
lea eax, [esp + 0x28]
push ebp
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
cmp eax, ebp
je 0x4014f2
mov edi, dword [sym.imp.USER32.dll_EnableWindow]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
cmp eax, 0xffffffff
je 0x401508
mov eax, dword [0x405a18]
cmp eax, ebp
je 0x401508
lea ecx, [esp + 0x20]
push ecx
push eax
call dword [sym.imp.USER32.dll_IsDialogMessageW]
test eax, eax
jne 0x401460
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
cmp dword [0x405a18], ebp
je 0x401508
cmp dword [0x404484], ebp
je 0x4014dc
cmp dword [0x404f6c], ebp
jne 0x4014dc
call fcn.00401694
push 1
cmp eax, ebp
pop ecx
mov dword [esp + 0x10], eax
mov dword [0x404f6c], ecx
jne 0x4014f2
mov eax, dword [0x405a18]
cmp eax, ebp
je 0x401508
push str.Close
push ecx
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
push 1
push 1
push dword [0x405a18]
call esi
push eax
call edi
push ebp
push 2
push dword [0x405a18]
call esi
push eax
call edi
push 1
push 1
push dword [0x405a18]
call esi
push eax
push 0x28
push dword [0x405a18]
call ebx
push ebp
push ebp
lea eax, [esp + 0x28]
push ebp
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
cmp eax, ebp
jne 0x401424
mov eax, dword [0x405a18]
cmp eax, ebp
je 0x401508
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov dword [0x405a18], ebp
mov eax, dword [esp + 0x10]
jmp 0x401511
push 1
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret 0x10