Function at 0x1209ffd0
Capabilities:
Get common file path

Disassembly:
sub esp, 0x514
lea eax, [esp + 0x104]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push ebp
push esi
push edi
push 0x104
push eax
call ebx
mov edi, str.ddraw.dll
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x114]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x104
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x320]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebx
mov edi, str.dinput.dll
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x31c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x104
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebx
mov edi, str.dsound.dll
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x104
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x21c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebx
lea edx, [esp + 0x218]
mov edi, str.dplayx.dll
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x104
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x424]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebx
mov edi, str.d3drm.dll
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x420]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push str.DirectDrawCreateClipper
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]
push 0x120f46d8
push str.DirectDrawEnumerateExA
push 0x120f46e8
push str.DirectDrawCreateEx
push 0x120f46dc
mov ecx, ebx
push str.DirectDrawCreate
push 0x120f46f0
lea eax, [esp + 0x134]
and ecx, 3
push 4
push eax
rep movsb byte es:[edi], byte [esi]
push 0x120f46f8
call fcn.120a0250
add esp, 0x2c
test al, al
je 0x120a01d0
push str.DirectInputCreateA
push 0x120f46e4
lea ecx, [esp + 0x324]
push 1
push ecx
push 0x120f46fc
call fcn.120a0250
add esp, 0x14
test al, al
je 0x120a01d0
push str.DirectSoundCreate
push 0x120f46f4
lea edx, [esp + 0x18]
push 1
push edx
push 0x120f4700
call fcn.120a0250
add esp, 0x14
test al, al
je 0x120a01d0
push str.DirectPlayLobbyCreateA
push 0x120f46e0
lea eax, [esp + 0x220]
push 1
push eax
push 0x120f4704
call fcn.120a0250
add esp, 0x14
test al, al
je 0x120a01d0
mov esi, 1
jmp 0x120a01d2
xor esi, esi
push str.Direct3DRMCreate
push 0x120f46ec
lea ecx, [esp + 0x428]
push 1
push ecx
push 0x120f4708
mov dword [0x120f46ec], 0
call fcn.120a0250
add esp, 0x14
test esi, esi
pop edi
pop esi
pop ebp
pop ebx
jne 0x120a021b
push 0x120e37a4
call fcn.120a0230
add esp, 4
xor eax, eax
add esp, 0x514
ret
mov eax, 1
add esp, 0x514
ret