Function at 0x408010
Capabilities:
Accept command line arguments

Disassembly:
sub esp, 0x21c
mov eax, dword [0x47cda4]
xor eax, esp
mov dword [esp + 0x218], eax
mov eax, dword [esp + 0x220]
lea ecx, [esp + 4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [esp + 0xc], eax
mov eax, 1
cmp dword [esp + 4], eax
mov dword [esp + 8], eax
jle 0x408655
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push esi
push edi
mov edi, edi
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + eax*4]
movzx ecx, word [eax]
cmp cx, 0x2f
je 0x40807a
cmp cx, 0x2d
jne 0x4085fa
add eax, 2
mov dword [esp + 0x10], eax
lea eax, [esp + 0x10]
push str.forceapi
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x4080f2
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x14]
push edx
call fcn.00403b20
add esp, 8
test al, al
je 0x4080f2
lea eax, [esp + 0x20]
push eax
call fcn.00417784
add esp, 4
mov esi, eax
call fcn.00403c00
cmp byte [section..data], 0
mov edi, eax
je 0x4080d3
push 0x47e5e0
call ebp
mov dword [edi + 0x31c], esi
cmp byte [section..data], 0
je 0x40863c
push 0x47e5e0
call ebx
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.adapter
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x408163
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x14]
push eax
call fcn.00403b20
add esp, 8
test al, al
je 0x408163
lea ecx, [esp + 0x20]
push ecx
call fcn.00417784
add esp, 4
mov esi, eax
call fcn.00403c00
cmp byte [section..data], 0
mov edi, eax
je 0x408144
push 0x47e5e0
call ebp
mov dword [edi + 0x320], esi
cmp byte [section..data], 0
je 0x40863c
push 0x47e5e0
call ebx
jmp 0x40863c
lea edx, [esp + 0x10]
push str.windowed
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x4081b0
call fcn.00403c00
cmp byte [section..data], 0
mov esi, eax
je 0x408190
push 0x47e5e0
call ebp
mov byte [esi + 0x324], 1
cmp byte [section..data], 0
je 0x40863c
push 0x47e5e0
call ebx
jmp 0x40863c
lea eax, [esp + 0x10]
push str.output
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x4081fb
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x14]
push edx
call fcn.00403b20
add esp, 8
test al, al
je 0x4081fb
lea eax, [esp + 0x20]
push eax
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402850
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.fullscreen
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x408248
call fcn.00403c00
cmp byte [section..data], 0
mov esi, eax
je 0x408228
push 0x47e5e0
call ebp
mov byte [esi + 0x32c], 1
cmp byte [section..data], 0
je 0x40863c
push 0x47e5e0
call ebx
jmp 0x40863c
lea edx, [esp + 0x10]
push str.forcehal
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x408271
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402a90
jmp 0x40863c
lea eax, [esp + 0x10]
push str.forceref
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x40829a
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402b10
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.forcepurehwvp
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x4082c3
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402b50
jmp 0x40863c
lea edx, [esp + 0x10]
push str.forcehwvp
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x4082ec
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402b90
jmp 0x40863c
lea eax, [esp + 0x10]
push str.forceswvp
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x408315
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402c10
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.forcevsync
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x408360
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x14]
push eax
call fcn.00403b20
add esp, 8
test al, al
je 0x408360
lea ecx, [esp + 0x20]
push ecx
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402d90
jmp 0x40863c
lea edx, [esp + 0x10]
push str.width
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x4083ab
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x14]
push ecx
call fcn.00403b20
add esp, 8
test al, al
je 0x4083ab
lea edx, [esp + 0x20]
push edx
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402990
jmp 0x40863c
lea eax, [esp + 0x10]
push str.height
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x4083f6
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x14]
push edx
call fcn.00403b20
add esp, 8
test al, al
je 0x4083f6
lea eax, [esp + 0x20]
push eax
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402a10
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.startx
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x408441
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x14]
push eax
call fcn.00403b20
add esp, 8
test al, al
je 0x408441
lea ecx, [esp + 0x20]
push ecx
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402890
jmp 0x40863c
lea edx, [esp + 0x10]
push str.starty
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x40848c
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x14]
push ecx
call fcn.00403b20
add esp, 8
test al, al
je 0x40848c
lea edx, [esp + 0x20]
push edx
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402910
jmp 0x40863c
lea eax, [esp + 0x10]
push 0x42b6e4
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x40850d
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x14]
push edx
call fcn.00403b20
add esp, 8
test al, al
je 0x4084cd
lea eax, [esp + 0x20]
push 0
push eax
call fcn.00417760
fstp dword [esp + 0x18]
add esp, 8
jmp 0x4084d7
fld dword [0x42b6e0]
fstp dword [esp + 0x10]
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402c90
fld dword [esp + 0x10]
push ecx
fstp dword [esp]
call fcn.00403c00
mov ecx, eax
call fcn.00402cd0
fld dword [esp + 0x10]
push ecx
fstp dword [esp]
push 1
call fcn.00407db0
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.quitafterframe
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x408558
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x14]
push eax
call fcn.00403b20
add esp, 8
test al, al
je 0x408558
lea ecx, [esp + 0x20]
push ecx
call fcn.00417784
add esp, 4
push eax
call fcn.00403c00
mov ecx, eax
call fcn.00402d10
jmp 0x40863c
lea edx, [esp + 0x10]
push str.noerrormsgboxes
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x408581
push 0
call fcn.00403c00
mov ecx, eax
call fcn.00402010
jmp 0x40863c
lea eax, [esp + 0x10]
push str.nostats
push eax
call fcn.00403420
add esp, 8
test al, al
je 0x4085aa
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402050
jmp 0x40863c
lea ecx, [esp + 0x10]
push str.relaunchmce
push ecx
call fcn.00403420
add esp, 8
test al, al
je 0x4085d0
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402e10
jmp 0x40863c
lea edx, [esp + 0x10]
push str.automation
push edx
call fcn.00403420
add esp, 8
test al, al
je 0x4085f6
push 1
call fcn.00403c00
mov ecx, eax
call fcn.00402710
jmp 0x40863c
mov eax, dword [esp + 0x10]
push eax
push 0x100
lea eax, [esp + 0x28]
push eax
call fcn.00401000
cmp word [esp + 0x20], 0
lea eax, [esp + 0x20]
je 0x408625
cmp word [eax], 0x20
jbe 0x408625
add eax, 2
cmp word [eax], 0
jne 0x408616
lea ecx, [esp + 0x20]
push ecx
push str.Unrecognized_flag:__s
mov word [eax], 0
call fcn.00413300
add esp, 8
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
jl 0x408060
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x218]
xor ecx, esp
call fcn.00417060
add esp, 0x21c
ret