Function at 0x403108
Capabilities:
Execute command
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x228
nop
mov eax, 0
mov dword [ebp - 0xc], eax
mov eax, 0
mov byte [ebp - 0x111], al
mov eax, 0x104
push eax
mov eax, 0
push eax
lea eax, [ebp - 0x110]
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, 0
mov dword [ebp - 0x21c], eax
mov eax, 0xfffffff5
push eax
call sub.kernel32.dll_GetStdHandle
mov dword [0x40c688], eax
mov eax, 0
push eax
call sub.msvcrt.dll_time
add esp, 4
mov dword [ebp - 0x220], eax
call sub.msvcrt.dll__getpid
mov ecx, dword [ebp - 0x220]
imul ecx, eax
push ecx
call sub.msvcrt.dll_srand
add esp, 4
mov eax, 7
push eax
mov eax, dword [0x40c688]
push eax
call sub.kernel32.dll_SetConsoleTextAttribute
mov eax, dword [ebp + 8]
cmp eax, 1
jle 0x4033db
mov eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 8]
cmp eax, ecx
jge 0x4033db
jmp 0x4031cb
mov eax, dword [ebp - 8]
mov ecx, eax
inc eax
mov dword [ebp - 8], eax
jmp 0x4031ad
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, 0x2e
push eax
mov eax, dword [ecx]
push eax
call sub.msvcrt.dll_strchr
add esp, 8
cmp eax, 0
je 0x403212
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ecx]
push eax
lea eax, [ebp - 0x111]
push eax
call sub.msvcrt.dll_strcpy
add esp, 8
jmp 0x4033d6
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ecx]
movsx ecx, byte [eax]
cmp ecx, 0x2f
je 0x403249
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ecx]
movsx ecx, byte [eax]
cmp ecx, 0x2d
je 0x403249
jmp 0x40326c
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ecx]
inc eax
push eax
lea eax, [ebp - 0x216]
push eax
call sub.msvcrt.dll_strcpy
add esp, 8
jmp 0x403289
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ecx]
push eax
lea eax, [ebp - 0x216]
push eax
call sub.msvcrt.dll_strcpy
add esp, 8
lea eax, [ebp - 0x216]
push eax
call sub.msvcrt.dll__strlwr
add esp, 4
mov eax, str.nonointro
push eax
lea eax, [ebp - 0x216]
push eax
call fcn.00402b58
add esp, 8
cmp eax, 0
je 0x4032c6
mov eax, 0
mov dword [0x4095b4], eax
jmp 0x4033d6
mov eax, str.vanillaorigoriginal
push eax
lea eax, [ebp - 0x216]
push eax
call fcn.00402b58
add esp, 8
cmp eax, 0
je 0x4032f4
mov eax, 1
mov dword [0x4095b8], eax
jmp 0x4033d6
mov eax, str.noautosave
push eax
lea eax, [ebp - 0x216]
push eax
call sub.msvcrt.dll_strcmp
add esp, 8
cmp eax, 0
jne 0x403322
mov eax, 0
mov dword [0x4095bc], eax
jmp 0x4033d6
mov eax, str._hhelp
push eax
lea eax, [ebp - 0x216]
push eax
call fcn.00402b58
add esp, 8
cmp eax, 0
je 0x403353
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
call fcn.00402ec6
add esp, 4
jmp 0x4033d6
mov eax, str.loadlast
push eax
lea eax, [ebp - 0x216]
push eax
call sub.msvcrt.dll_strcmp
add esp, 8
cmp eax, 0
jne 0x40337e
mov eax, 1
mov dword [ebp - 0xc], eax
jmp 0x4033d6
mov eax, str.newnewgame
push eax
lea eax, [ebp - 0x216]
push eax
call fcn.00402b58
add esp, 8
cmp eax, 0
je 0x4033ac
mov eax, 1
mov dword [ebp - 0x21c], eax
jmp 0x4033d6
mov eax, dword [ebp - 8]
shl eax, 2
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ecx]
push eax
mov eax, 0x409bf2
push eax
call sub.msvcrt.dll_printf
add esp, 8
mov eax, 1
push eax
call sub.msvcrt.dll_exit
add esp, 4
jmp 0x4031c0
mov eax, dword [ebp - 0xc]
cmp eax, 0
je 0x4033ec
call fcn.00402aaa
lea eax, [ebp - 0x111]
push eax
call sub.msvcrt.dll_strlen
add esp, 4
cmp eax, 0
jbe 0x403413
lea eax, [ebp - 0x111]
push eax
call fcn.0040263f
add esp, 4
mov eax, dword [ebp - 0x21c]
cmp eax, 0
je 0x40343b
mov eax, 0
mov dword [0x4095b4], eax
mov eax, 1
push eax
call fcn.0040653c
add esp, 4
mov eax, dword [0x4095b4]
cmp eax, 0
je 0x403454
call fcn.004011e2
call fcn.00401000
mov eax, 0x409c1d
push eax
call sub.msvcrt.dll_system
add esp, 4
mov eax, 0x30
mov word [ebp - 0x224], ax
mov eax, 0xb
mov word [ebp - 0x222], ax
sub esp, 4
mov eax, esp
mov ecx, 4
push ecx
lea ecx, [ebp - 0x224]
push ecx
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
mov eax, dword [0x40c688]
push eax
call sub.kernel32.dll_SetConsoleCursorPosition
mov eax, dword [0x4095b8]
cmp eax, 0
je 0x4034c6
mov eax, 0x409c22
push eax
call sub.msvcrt.dll_printf
add esp, 4
jmp 0x4034d9
mov eax, 0x409c26
push eax
call sub.msvcrt.dll_printf
add esp, 4
jmp 0x4034d9
mov eax, 0x27
mov word [ebp - 0x228], ax
mov eax, 0xc
mov word [ebp - 0x226], ax
sub esp, 4
mov eax, esp
mov ecx, 4
push ecx
lea ecx, [ebp - 0x228]
push ecx
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
mov eax, dword [0x40c688]
push eax
call sub.kernel32.dll_SetConsoleCursorPosition
mov eax, dword [0x4095bc]
cmp eax, 0
je 0x40353d
mov eax, 0x409c2a
push eax
call sub.msvcrt.dll_printf
add esp, 4
jmp 0x403550
mov eax, 0x409c2e
push eax
call sub.msvcrt.dll_printf
add esp, 4
jmp 0x403550
mov eax, 0xa
push eax
mov eax, 0x15
push eax
mov eax, 0x409c32
push eax
mov eax, 6
push eax
call fcn.00402d14
add esp, 0x10
mov dword [ebp - 4], eax
jmp 0x4035f0
mov eax, 1
push eax
call fcn.0040653c
add esp, 4
jmp 0x403622
call fcn.0040212b
jmp 0x403622
mov eax, dword [0x4095b8]
cmp eax, 0
je 0x4035ab
mov eax, 0
jmp 0x4035b0
mov eax, 1
mov dword [0x4095b8], eax
jmp 0x403622
mov eax, dword [0x4095bc]
cmp eax, 0
je 0x4035d1
mov eax, 0
jmp 0x4035d6
mov eax, 1
mov dword [0x4095bc], eax
jmp 0x403622
call fcn.00402aaa
jmp 0x403622
mov eax, dword [ebp - 4]
cmp eax, 3
jg 0x403618
cmp eax, 3
jge 0x403595
cmp eax, 1
je 0x403578
cmp eax, 2
je 0x40358b
jmp 0x403622
cmp eax, 4
je 0x4035bb
cmp eax, 5
je 0x4035e1
mov eax, dword [ebp - 4]
cmp eax, 6
jne 0x403454
mov eax, 0x409ca0
push eax
call sub.msvcrt.dll_system
add esp, 4
leave
ret