Function at 0x4ac010
Capabilities:
Get common file path

Disassembly:
sub esp, 0x418
mov eax, dword [0x4efd34]
xor eax, esp
mov dword [esp + 0x414], eax
mov eax, dword [esp + 0x420]
mov ecx, dword [esp + 0x424]
push ebx
mov ebx, dword [esp + 0x420]
push ebp
push esi
push edi
push 0x104
lea edx, [esp + 0x228]
push edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
xor ebp, ebp
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x4aca7f
lea eax, [esp + 0x224]
push eax
push 0x200
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x333], 0
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
mov edi, edi
cmp byte [eax], 0
je 0x4ac09f
add eax, 1
sub ecx, 1
jne 0x4ac090
jmp 0x4ac0c1
test ecx, ecx
je 0x4ac0c1
mov eax, 0x200
sub eax, ecx
push str.ddraw.dll
mov edx, 0x200
sub edx, eax
push edx
lea eax, [esp + eax + 0x2c]
push eax
call fcn.004abbb0
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac1b1
push 0x5f
push 0
push 2
push 4
call fcn.004abf90
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac124
test ebx, ebx
je 0x4ac10a
mov dword [ebx], 1
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac114
mov dword [eax], ebp
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac11f
mov byte [eax], 0x20
mov ebp, 1
push 0x448
push 0
push 3
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac16c
test ebx, ebx
je 0x4ac14e
mov dword [ebx], 2
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac15c
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac167
mov byte [eax], 0x20
mov ebp, 1
push 0x44
push 0
push 4
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac1b1
test ebx, ebx
je 0x4ac193
mov dword [ebx], 3
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac1a1
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac1ac
mov byte [eax], 0x20
mov ebp, 1
lea eax, [esp + 0x224]
push eax
push 0x200
lea ecx, [esp + 0x2c]
push ecx
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac1e0
add eax, 1
sub ecx, 1
jne 0x4ac1d1
jmp 0x4ac202
test ecx, ecx
je 0x4ac202
mov eax, 0x200
sub eax, ecx
push str.d3drg8x.dll
mov edx, 0x200
sub edx, eax
push edx
lea eax, [esp + eax + 0x2c]
push eax
call fcn.004abbb0
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac267
push 0x46
push 0
push 4
push 4
call fcn.004abf90
mov ecx, dword [esp + 0x28]
push edx
push eax
mov eax, dword [esp + 0x34]
push eax
push ecx
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac267
test ebx, ebx
je 0x4ac247
mov dword [ebx], 3
mov esi, dword [esp + 0x14]
test esi, esi
je 0x4ac255
mov dword [esi], 0
mov edi, dword [esp + 0x10]
test edi, edi
je 0x4ac260
mov byte [edi], 0x61
mov ebp, 1
jmp 0x4ac26f
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
nop
cmp byte [eax], 0
je 0x4ac29f
add eax, 1
sub ecx, 1
jne 0x4ac290
jmp 0x4ac2c1
test ecx, ecx
je 0x4ac2c1
mov eax, 0x200
sub eax, ecx
push str.ddraw.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac3c7
push 0x9b
push 0
push 5
push 4
call fcn.004abf90
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac32b
test ebx, ebx
je 0x4ac30d
mov dword [ebx], 5
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac31b
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac326
mov byte [eax], 0x20
mov ebp, 1
push 0x13e
push 0
push 6
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac373
test ebx, ebx
je 0x4ac355
mov dword [ebx], 6
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac363
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac36e
mov byte [eax], 0x20
mov ebp, 1
push 0x1b4
push 0
push 6
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac3bf
test ebx, ebx
je 0x4ac39d
mov dword [ebx], 6
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac3ab
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac3b6
mov byte [eax], 0x20
mov ebp, 1
mov edi, eax
jmp 0x4ac3c3
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac3f6
add eax, 1
sub ecx, 1
jne 0x4ac3e7
jmp 0x4ac418
test ecx, ecx
je 0x4ac418
mov eax, 0x200
sub eax, ecx
push str.dplayx.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac476
push 0x206
push 3
push 6
push 4
call fcn.004abf90
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac476
test ebx, ebx
je 0x4ac460
mov dword [ebx], 6
test esi, esi
je 0x4ac46a
mov dword [esi], 1
test edi, edi
je 0x4ac471
mov byte [edi], 0x61
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac4a5
add eax, 1
sub ecx, 1
jne 0x4ac496
jmp 0x4ac4c7
test ecx, ecx
je 0x4ac4c7
mov eax, 0x200
sub eax, ecx
push str.ddraw.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac525
push 0x2bc
push 0
push 7
push 4
call fcn.004abf90
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac525
test ebx, ebx
je 0x4ac50f
mov dword [ebx], 7
test esi, esi
je 0x4ac519
mov dword [esi], 0
test edi, edi
je 0x4ac520
mov byte [edi], 0x20
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac554
add eax, 1
sub ecx, 1
jne 0x4ac545
jmp 0x4ac576
test ecx, ecx
je 0x4ac576
mov eax, 0x200
sub eax, ecx
push str.dinput.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac5d4
push 0x2cc
push 0
push 7
push 4
call fcn.004abf90
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac5d4
test ebx, ebx
je 0x4ac5be
mov dword [ebx], 7
test esi, esi
je 0x4ac5c8
mov dword [esi], 0
test edi, edi
je 0x4ac5cf
mov byte [edi], 0x61
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac603
add eax, 1
sub ecx, 1
jne 0x4ac5f4
jmp 0x4ac625
test ecx, ecx
je 0x4ac625
mov eax, 0x200
sub eax, ecx
push str.ddraw.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac6c7
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4ac672
push 0x190
push 0
push 8
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jge 0x4ac69b
cmp bx, 5
jne 0x4ac6c7
push 0x190
push 0x8d2
push 1
push 5
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac6c7
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4ac6a9
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac6b7
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac6c2
mov byte [eax], 0x20
mov ebp, 1
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac6f6
add eax, 1
sub ecx, 1
jne 0x4ac6e7
jmp 0x4ac718
test ecx, ecx
je 0x4ac718
mov eax, 0x200
sub eax, ecx
push str.d3d8.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac835
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4ac765
push 0x371
push 1
push 8
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jge 0x4ac78e
cmp bx, 5
jne 0x4ac7ba
push 0x371
push 0xa28
push 1
push 5
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac7ba
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4ac79c
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac7aa
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac7b5
mov byte [eax], 0x20
mov ebp, 1
cmp bx, 4
jne 0x4ac7e0
push 0x385
push 1
push 8
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jge 0x4ac809
cmp bx, 5
jne 0x4ac835
push 0x385
push 0xa28
push 1
push 5
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac835
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4ac817
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac825
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac830
mov byte [eax], 0x61
mov ebp, 1
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac864
add eax, 1
sub ecx, 1
jne 0x4ac855
jmp 0x4ac886
test ecx, ecx
je 0x4ac886
mov eax, 0x200
sub eax, ecx
push str.mpg2splt.ax
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac8f0
push 0x375
push 1
push 3
push 6
call fcn.004abf90
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac8f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4ac8d2
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4ac8e0
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4ac8eb
mov byte [eax], 0x62
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4ac91f
add eax, 1
sub ecx, 1
jne 0x4ac910
jmp 0x4ac941
test ecx, ecx
je 0x4ac941
mov eax, 0x200
sub eax, ecx
push str.dpnet.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4ac9e5
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4ac98e
push 0x86
push 0
push 9
push 4
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jge 0x4ac9b7
cmp bx, 5
jne 0x4ac9e5
push 0x86
push 0xe5d
push 2
push 5
call fcn.004abf90
push edx
push eax
push esi
push edi
call fcn.004abfb0
add esp, 0x20
test eax, eax
jl 0x4ac9e5
mov edi, dword [esp + 0x20]
test edi, edi
je 0x4ac9c5
mov dword [edi], 8
mov esi, dword [esp + 0x14]
test esi, esi
je 0x4ac9d3
mov dword [esi], 2
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x4ac9de
mov byte [ebx], 0x20
mov ebp, 1
jmp 0x4ac9f1
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004abbb0
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4aca20
add eax, 1
sub ecx, 1
jne 0x4aca11
jmp 0x4aca42
test ecx, ecx
je 0x4aca42
mov eax, 0x200
sub eax, ecx
push str.d3d9.dll
mov ecx, 0x200
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x2c]
push edx
call fcn.004abbb0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004abec0
add esp, 8
test eax, eax
jl 0x4aca77
test edi, edi
je 0x4aca62
mov dword [edi], 9
test esi, esi
je 0x4aca6c
mov dword [esi], 0
xor eax, eax
test ebx, ebx
je 0x4acaa4
mov byte [ebx], 0x20
jmp 0x4acaa4
test ebp, ebp
jne 0x4acaa2
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x4aca89
mov dword [ebx], 0
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4aca97
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4acaa2
mov byte [eax], 0x20
xor eax, eax
mov ecx, dword [esp + 0x424]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004972eb
add esp, 0x418
ret