Function at 0x4a3590
Capabilities:
Get common file path

Disassembly:
sub esp, 0x418
mov eax, dword [0x4e3e9c]
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 0x4a3fff
lea eax, [esp + 0x224]
push eax
push 0x200
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x333], 0
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
mov edi, edi
cmp byte [eax], 0
je 0x4a361f
add eax, 1
sub ecx, 1
jne 0x4a3610
jmp 0x4a3641
test ecx, ecx
je 0x4a3641
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.004a3130
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3731
push 0x5f
push 0
push 2
push 4
call fcn.004a3510
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a36a4
test ebx, ebx
je 0x4a368a
mov dword [ebx], 1
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a3694
mov dword [eax], ebp
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a369f
mov byte [eax], 0x20
mov ebp, 1
push 0x448
push 0
push 3
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a36ec
test ebx, ebx
je 0x4a36ce
mov dword [ebx], 2
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a36dc
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a36e7
mov byte [eax], 0x20
mov ebp, 1
push 0x44
push 0
push 4
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3731
test ebx, ebx
je 0x4a3713
mov dword [ebx], 3
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a3721
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a372c
mov byte [eax], 0x20
mov ebp, 1
lea eax, [esp + 0x224]
push eax
push 0x200
lea ecx, [esp + 0x2c]
push ecx
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3760
add eax, 1
sub ecx, 1
jne 0x4a3751
jmp 0x4a3782
test ecx, ecx
je 0x4a3782
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.004a3130
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a37e7
push 0x46
push 0
push 4
push 4
call fcn.004a3510
mov ecx, dword [esp + 0x28]
push edx
push eax
mov eax, dword [esp + 0x34]
push eax
push ecx
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a37e7
test ebx, ebx
je 0x4a37c7
mov dword [ebx], 3
mov esi, dword [esp + 0x14]
test esi, esi
je 0x4a37d5
mov dword [esi], 0
mov edi, dword [esp + 0x10]
test edi, edi
je 0x4a37e0
mov byte [edi], 0x61
mov ebp, 1
jmp 0x4a37ef
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.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
nop
cmp byte [eax], 0
je 0x4a381f
add eax, 1
sub ecx, 1
jne 0x4a3810
jmp 0x4a3841
test ecx, ecx
je 0x4a3841
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3947
push 0x9b
push 0
push 5
push 4
call fcn.004a3510
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a38ab
test ebx, ebx
je 0x4a388d
mov dword [ebx], 5
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a389b
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a38a6
mov byte [eax], 0x20
mov ebp, 1
push 0x13e
push 0
push 6
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a38f3
test ebx, ebx
je 0x4a38d5
mov dword [ebx], 6
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a38e3
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a38ee
mov byte [eax], 0x20
mov ebp, 1
push 0x1b4
push 0
push 6
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a393f
test ebx, ebx
je 0x4a391d
mov dword [ebx], 6
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a392b
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a3936
mov byte [eax], 0x20
mov ebp, 1
mov edi, eax
jmp 0x4a3943
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.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3976
add eax, 1
sub ecx, 1
jne 0x4a3967
jmp 0x4a3998
test ecx, ecx
je 0x4a3998
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a39f6
push 0x206
push 3
push 6
push 4
call fcn.004a3510
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a39f6
test ebx, ebx
je 0x4a39e0
mov dword [ebx], 6
test esi, esi
je 0x4a39ea
mov dword [esi], 1
test edi, edi
je 0x4a39f1
mov byte [edi], 0x61
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3a25
add eax, 1
sub ecx, 1
jne 0x4a3a16
jmp 0x4a3a47
test ecx, ecx
je 0x4a3a47
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3aa5
push 0x2bc
push 0
push 7
push 4
call fcn.004a3510
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3aa5
test ebx, ebx
je 0x4a3a8f
mov dword [ebx], 7
test esi, esi
je 0x4a3a99
mov dword [esi], 0
test edi, edi
je 0x4a3aa0
mov byte [edi], 0x20
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3ad4
add eax, 1
sub ecx, 1
jne 0x4a3ac5
jmp 0x4a3af6
test ecx, ecx
je 0x4a3af6
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3b54
push 0x2cc
push 0
push 7
push 4
call fcn.004a3510
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3b54
test ebx, ebx
je 0x4a3b3e
mov dword [ebx], 7
test esi, esi
je 0x4a3b48
mov dword [esi], 0
test edi, edi
je 0x4a3b4f
mov byte [edi], 0x61
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3b83
add eax, 1
sub ecx, 1
jne 0x4a3b74
jmp 0x4a3ba5
test ecx, ecx
je 0x4a3ba5
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3c47
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4a3bf2
push 0x190
push 0
push 8
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jge 0x4a3c1b
cmp bx, 5
jne 0x4a3c47
push 0x190
push 0x8d2
push 1
push 5
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3c47
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a3c29
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a3c37
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a3c42
mov byte [eax], 0x20
mov ebp, 1
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3c76
add eax, 1
sub ecx, 1
jne 0x4a3c67
jmp 0x4a3c98
test ecx, ecx
je 0x4a3c98
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3db5
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4a3ce5
push 0x371
push 1
push 8
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jge 0x4a3d0e
cmp bx, 5
jne 0x4a3d3a
push 0x371
push 0xa28
push 1
push 5
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3d3a
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a3d1c
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a3d2a
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a3d35
mov byte [eax], 0x20
mov ebp, 1
cmp bx, 4
jne 0x4a3d60
push 0x385
push 1
push 8
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jge 0x4a3d89
cmp bx, 5
jne 0x4a3db5
push 0x385
push 0xa28
push 1
push 5
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3db5
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a3d97
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a3da5
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a3db0
mov byte [eax], 0x61
mov ebp, 1
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3de4
add eax, 1
sub ecx, 1
jne 0x4a3dd5
jmp 0x4a3e06
test ecx, ecx
je 0x4a3e06
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3e70
push 0x375
push 1
push 3
push 6
call fcn.004a3510
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3e70
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a3e52
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a3e60
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a3e6b
mov byte [eax], 0x62
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3e9f
add eax, 1
sub ecx, 1
jne 0x4a3e90
jmp 0x4a3ec1
test ecx, ecx
je 0x4a3ec1
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3f65
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4a3f0e
push 0x86
push 0
push 9
push 4
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jge 0x4a3f37
cmp bx, 5
jne 0x4a3f65
push 0x86
push 0xe5d
push 2
push 5
call fcn.004a3510
push edx
push eax
push esi
push edi
call fcn.004a3530
add esp, 0x20
test eax, eax
jl 0x4a3f65
mov edi, dword [esp + 0x20]
test edi, edi
je 0x4a3f45
mov dword [edi], 8
mov esi, dword [esp + 0x14]
test esi, esi
je 0x4a3f53
mov dword [esi], 2
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x4a3f5e
mov byte [ebx], 0x20
mov ebp, 1
jmp 0x4a3f71
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004a3130
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a3fa0
add eax, 1
sub ecx, 1
jne 0x4a3f91
jmp 0x4a3fc2
test ecx, ecx
je 0x4a3fc2
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.004a3130
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a3440
add esp, 8
test eax, eax
jl 0x4a3ff7
test edi, edi
je 0x4a3fe2
mov dword [edi], 9
test esi, esi
je 0x4a3fec
mov dword [esi], 0
xor eax, eax
test ebx, ebx
je 0x4a4024
mov byte [ebx], 0x20
jmp 0x4a4024
test ebp, ebp
jne 0x4a4022
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x4a4009
mov dword [ebx], 0
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a4017
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a4022
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.0048e5ae
add esp, 0x418
ret