Function at 0x4057d0
Capabilities:
Accept command line arguments
Delete file
Manipulate console buffer
Set registry value

Disassembly:
sub esp, 0xc1c
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push ebp
push esi
push edi
call ebx
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov cl, byte [esp + 0x2c]
mov dword [esp + 0x1c], eax
test cl, cl
je 0x40582c
cmp byte [esp + eax + 0x2c], 0x5c
jne 0x40581f
mov byte [esp + eax + 0x2c], 0x5f
mov cl, byte [esp + eax + 0x2d]
inc eax
test cl, cl
jne 0x405813
mov dword [esp + 0x1c], eax
call ebx
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x42c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov cl, byte [esp + 0x42c]
mov dword [esp + 0x1c], eax
test cl, cl
je 0x405887
cmp byte [esp + eax + 0x42c], 0x20
jne 0x405877
mov byte [esp + eax + 0x42c], 0
mov cl, byte [esp + eax + 0x42d]
inc eax
test cl, cl
jne 0x405865
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x20]
push ecx
push str.Console
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x405bc8
mov ecx, dword [esp + 0x20]
mov ebp, dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
lea edx, [esp + 0x14]
lea eax, [esp + 0x2c]
push edx
push eax
push ecx
call ebp
test eax, eax
jne 0x405bc8
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea edx, [esp + 0x10]
push 4
push edx
push 4
push eax
mov eax, dword [esp + 0x24]
push str.FullScreen
push eax
mov dword [esp + 0x28], 1
call esi
test eax, eax
jne 0x405bc8
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push 4
push ecx
push 4
push eax
push str.ScreenColors
push edx
mov dword [esp + 0x28], 0x17
call esi
test eax, eax
jne 0x405bc8
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push 4
push eax
push 4
push 0
mov ebx, 0x320050
push str.WindowSize
push ecx
mov dword [esp + 0x28], ebx
call esi
test eax, eax
jne 0x405bc8
lea edx, [esp + 0x10]
push 4
push edx
push 4
push eax
mov eax, dword [esp + 0x24]
push str.ScreenBufferSize
push eax
mov dword [esp + 0x28], ebx
call esi
test eax, eax
jne 0x405bc8
lea edi, [esp + 0x2c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
lea edx, [esp + 0x2c]
dec ecx
sub edx, 2
cmp byte [ecx + edx], 0x2f
jne 0x405a70
lea edi, [esp + 0x2c]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
lea eax, [esp + 0x2c]
dec ecx
sub eax, 3
mov byte [ecx + eax], 0
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x14]
push ecx
push edx
push eax
call ebp
test eax, eax
jne 0x405bc8
cmp dword [0x42ba80], 4
jbe 0x4059de
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push 4
push ecx
push 4
push 0
push str.ColorTable01
push edx
mov dword [esp + 0x28], 0x640000
call esi
test eax, eax
jne 0x405bc8
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push 4
push eax
push 4
push 0
push str.FullScreen
push ecx
mov dword [esp + 0x28], 1
call esi
test eax, eax
jne 0x405bc8
lea edx, [esp + 0x10]
push 4
push edx
push 4
push eax
mov eax, dword [esp + 0x24]
push str.ScreenColors
push eax
mov dword [esp + 0x28], 0x17
call esi
test eax, eax
jne 0x405bc8
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push 4
push ecx
push 4
push eax
push str.WindowSize
push edx
mov dword [esp + 0x28], ebx
call esi
test eax, eax
jne 0x405bc8
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push 4
push eax
push 4
push 0
push str.ScreenBufferSize
push ecx
mov dword [esp + 0x28], ebx
call esi
test eax, eax
jne 0x405bc8
call dword [sym.imp.KERNEL32.dll_AllocConsole]
test eax, eax
jne 0x405a87
push str.Could_not_allocate_window
call fcn.00401430
add esp, 4
mov esi, dword [sym.imp.KERNEL32.dll_GetStdHandle]
push 3
push 0xfffffffffffffff6
call esi
push eax
call dword [sym.imp.KERNEL32.dll_SetConsoleMode]
lea edx, [esp + 0x24]
xor edi, edi
push edx
push 0xfffffffffffffff5
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], edi
call esi
push eax
call dword [sym.imp.KERNEL32.dll_SetConsoleCursorInfo]
test eax, eax
jne 0x405ac9
push str.Could_not_set_cursor
call fcn.00401430
add esp, 4
mov ebx, dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterA]
mov ebp, dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
mov word [esp + 0x18], di
mov word [esp + 0x1a], di
mov edi, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push eax
push edi
push 0xfa0
push 0x20
push 0xfffffffffffffff5
call esi
push eax
call ebx
push edi
push 0xfffffffffffffff5
call esi
push eax
call ebp
test eax, eax
jne 0x405b10
push str.could_not_set_cursor_pos
call fcn.00401430
add esp, 4
call fcn.00401460
push edi
push 0xfffffffffffffff5
call esi
push eax
call ebp
test eax, eax
jne 0x405b2e
push str.could_not_set_cursor_pos
call fcn.00401430
add esp, 4
push 0xfffffffffffffff6
call esi
push eax
call dword [sym.imp.KERNEL32.dll_FlushConsoleInputBuffer]
push 0x61a8
push 0xfffffffffffffff6
call esi
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x405ba8
xor edi, edi
lea ecx, [esp + 0x1c]
mov word [esp + 0x18], di
mov word [esp + 0x1a], di
mov edx, dword [esp + 0x18]
push ecx
push edx
push 0xfa0
push 0x20
push 0xfffffffffffffff5
call esi
push eax
call ebx
mov word [esp + 0x18], di
mov word [esp + 0x1a], di
mov edi, dword [esp + 0x18]
push edi
push 0xfffffffffffffff5
call esi
push eax
call ebp
test eax, eax
jne 0x405b9b
push str.could_not_set_cursor_pos
call fcn.00401430
add esp, 4
call fcn.00404b40
test al, al
je 0x405ae3
mov eax, dword [0x42ba84]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x82c]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
call dword [sym.imp.KERNEL32.dll_FreeConsole]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc1c
ret