Function at 0x401bf0
Capabilities:
Create directory
Query environment variable

Disassembly:
sub esp, 0x280
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x80]
push ebx
push ebp
push esi
push edi
mov edi, 0x410f64
mov ebp, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x94]
push ecx
call ebp
mov edi, str.Scripts_
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x90]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push eax
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x94]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebp
lea ecx, [esp + 0x90]
push str.config.s
push ecx
lea edx, [esp + 0x18]
push str._s_s
push edx
call fcn.00405075
lea eax, [esp + 0x20]
push 0x410368
push eax
call fcn.00404f58
mov esi, eax
add esp, 0x18
test esi, esi
je 0x401ec1
mov cl, byte [0x40f619]
neg cl
sbb ecx, ecx
and ecx, 0x10
add ecx, 0x10
push ecx
push str.string_RENDER_MODE____dbit___n
push esi
call fcn.004050fb
mov edx, dword [0x410ff0]
mov eax, dword [edx*4 + 0x40f604]
push eax
push str.int_RENDER_WIDTH___d__n
push esi
call fcn.004050fb
mov ecx, dword [0x410ff0]
mov edx, dword [ecx*4 + 0x40f60c]
push edx
push str.int_RENDER_HEIGHT___d__n
push esi
call fcn.004050fb
mov al, byte [0x40f61a]
add esp, 0x24
test al, al
mov eax, 0x410310
jne 0x401d0d
mov eax, 0x41030c
push eax
push str.int_RENDER_32BIT_TEXTURES___s__n
push esi
call fcn.004050fb
mov al, byte [0x410ff4]
add esp, 0xc
test al, al
mov eax, 0x410310
jne 0x401d2f
mov eax, 0x41030c
push eax
push str.int_RENDER_32BIT_ZBUFFER___s__n
push esi
call fcn.004050fb
mov al, byte [0x410ff5]
add esp, 0xc
test al, al
mov eax, str._hardware_
jne 0x401d51
mov eax, str._software_
push eax
push str.string_RENDER_HARDWARE_TNL___s__n
push esi
call fcn.004050fb
push esi
call fcn.00404dfa
push 0x410f64
lea eax, [esp + 0xa4]
push str._sScripts_tpl_
push eax
call fcn.00405075
add esp, 0x1c
lea ecx, [esp + 0x90]
push 0
push ecx
call ebp
lea edx, [esp + 0x90]
push str.game_keys.s
push edx
lea eax, [esp + 0x18]
push str._s_s
push eax
call fcn.00405075
lea ecx, [esp + 0x20]
push 0x410368
push ecx
call fcn.00404f58
mov ebx, eax
add esp, 0x18
test ebx, ebx
je 0x401ec1
mov edi, str.GAME_KEY_THROTTLE
mov esi, 0x410dc4
push esi
push edi
push str.string__s____s___n
push ebx
call fcn.004050fb
add esi, 0x20
add esp, 0x10
add edi, 0x80
cmp esi, 0x410f64
jl 0x401dcb
push ebx
call fcn.00404dfa
push str.Launch
push 0x410ff8
call fcn.0040ae90
add esp, 0xc
test eax, eax
jne 0x401ebc
mov dl, byte [0x411078]
mov ecx, 0x3f
lea edi, [esp + 0x191]
mov byte [esp + 0x190], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x190]
push 0xff
push eax
push str.LocationMap
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
test eax, eax
je 0x401ebc
push 0x410f64
lea ecx, [esp + 0x94]
push str._sui_
push ecx
call fcn.00405075
add esp, 0xc
lea edx, [esp + 0x90]
push 0
push edx
call ebp
lea eax, [esp + 0x90]
push str.area.s
push eax
lea ecx, [esp + 0x18]
push str._s_s
push ecx
call fcn.00405075
lea edx, [esp + 0x20]
push 0x410368
push edx
call fcn.00404f58
mov esi, eax
add esp, 0x18
test esi, esi
je 0x401ec1
lea eax, [esp + 0x190]
push eax
push str.string_MAP_NAME____s___n
push esi
call fcn.004050fb
push esi
call fcn.00404dfa
add esp, 0x10
call fcn.00401a90
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x280
ret