Function at 0x4a5d70
Capabilities:
Get common file path

Disassembly:
sub esp, 0x418
mov eax, dword [0x4e86e0]
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 0x4a67df
lea eax, [esp + 0x224]
push eax
push 0x200
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x333], 0
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
mov edi, edi
cmp byte [eax], 0
je 0x4a5dff
add eax, 1
sub ecx, 1
jne 0x4a5df0
jmp 0x4a5e21
test ecx, ecx
je 0x4a5e21
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.004a5910
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a5f11
push 0x5f
push 0
push 2
push 4
call fcn.004a5cf0
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a5e84
test ebx, ebx
je 0x4a5e6a
mov dword [ebx], 1
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a5e74
mov dword [eax], ebp
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a5e7f
mov byte [eax], 0x20
mov ebp, 1
push 0x448
push 0
push 3
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a5ecc
test ebx, ebx
je 0x4a5eae
mov dword [ebx], 2
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a5ebc
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a5ec7
mov byte [eax], 0x20
mov ebp, 1
push 0x44
push 0
push 4
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a5f11
test ebx, ebx
je 0x4a5ef3
mov dword [ebx], 3
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a5f01
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a5f0c
mov byte [eax], 0x20
mov ebp, 1
lea eax, [esp + 0x224]
push eax
push 0x200
lea ecx, [esp + 0x2c]
push ecx
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a5f40
add eax, 1
sub ecx, 1
jne 0x4a5f31
jmp 0x4a5f62
test ecx, ecx
je 0x4a5f62
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.004a5910
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a5fc7
push 0x46
push 0
push 4
push 4
call fcn.004a5cf0
mov ecx, dword [esp + 0x28]
push edx
push eax
mov eax, dword [esp + 0x34]
push eax
push ecx
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a5fc7
test ebx, ebx
je 0x4a5fa7
mov dword [ebx], 3
mov esi, dword [esp + 0x14]
test esi, esi
je 0x4a5fb5
mov dword [esi], 0
mov edi, dword [esp + 0x10]
test edi, edi
je 0x4a5fc0
mov byte [edi], 0x61
mov ebp, 1
jmp 0x4a5fcf
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.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
nop
cmp byte [eax], 0
je 0x4a5fff
add eax, 1
sub ecx, 1
jne 0x4a5ff0
jmp 0x4a6021
test ecx, ecx
je 0x4a6021
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6127
push 0x9b
push 0
push 5
push 4
call fcn.004a5cf0
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a608b
test ebx, ebx
je 0x4a606d
mov dword [ebx], 5
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a607b
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a6086
mov byte [eax], 0x20
mov ebp, 1
push 0x13e
push 0
push 6
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a60d3
test ebx, ebx
je 0x4a60b5
mov dword [ebx], 6
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a60c3
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a60ce
mov byte [eax], 0x20
mov ebp, 1
push 0x1b4
push 0
push 6
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a611f
test ebx, ebx
je 0x4a60fd
mov dword [ebx], 6
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a610b
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a6116
mov byte [eax], 0x20
mov ebp, 1
mov edi, eax
jmp 0x4a6123
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.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a6156
add eax, 1
sub ecx, 1
jne 0x4a6147
jmp 0x4a6178
test ecx, ecx
je 0x4a6178
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a61d6
push 0x206
push 3
push 6
push 4
call fcn.004a5cf0
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a61d6
test ebx, ebx
je 0x4a61c0
mov dword [ebx], 6
test esi, esi
je 0x4a61ca
mov dword [esi], 1
test edi, edi
je 0x4a61d1
mov byte [edi], 0x61
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a6205
add eax, 1
sub ecx, 1
jne 0x4a61f6
jmp 0x4a6227
test ecx, ecx
je 0x4a6227
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6285
push 0x2bc
push 0
push 7
push 4
call fcn.004a5cf0
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a6285
test ebx, ebx
je 0x4a626f
mov dword [ebx], 7
test esi, esi
je 0x4a6279
mov dword [esi], 0
test edi, edi
je 0x4a6280
mov byte [edi], 0x20
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a62b4
add eax, 1
sub ecx, 1
jne 0x4a62a5
jmp 0x4a62d6
test ecx, ecx
je 0x4a62d6
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6334
push 0x2cc
push 0
push 7
push 4
call fcn.004a5cf0
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a6334
test ebx, ebx
je 0x4a631e
mov dword [ebx], 7
test esi, esi
je 0x4a6328
mov dword [esi], 0
test edi, edi
je 0x4a632f
mov byte [edi], 0x61
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a6363
add eax, 1
sub ecx, 1
jne 0x4a6354
jmp 0x4a6385
test ecx, ecx
je 0x4a6385
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6427
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4a63d2
push 0x190
push 0
push 8
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jge 0x4a63fb
cmp bx, 5
jne 0x4a6427
push 0x190
push 0x8d2
push 1
push 5
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a6427
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a6409
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a6417
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a6422
mov byte [eax], 0x20
mov ebp, 1
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a6456
add eax, 1
sub ecx, 1
jne 0x4a6447
jmp 0x4a6478
test ecx, ecx
je 0x4a6478
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6595
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4a64c5
push 0x371
push 1
push 8
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jge 0x4a64ee
cmp bx, 5
jne 0x4a651a
push 0x371
push 0xa28
push 1
push 5
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a651a
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a64fc
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a650a
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a6515
mov byte [eax], 0x20
mov ebp, 1
cmp bx, 4
jne 0x4a6540
push 0x385
push 1
push 8
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jge 0x4a6569
cmp bx, 5
jne 0x4a6595
push 0x385
push 0xa28
push 1
push 5
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a6595
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a6577
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a6585
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a6590
mov byte [eax], 0x61
mov ebp, 1
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a65c4
add eax, 1
sub ecx, 1
jne 0x4a65b5
jmp 0x4a65e6
test ecx, ecx
je 0x4a65e6
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6650
push 0x375
push 1
push 3
push 6
call fcn.004a5cf0
push edx
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edx
push eax
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a6650
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a6632
mov dword [eax], 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a6640
mov dword [eax], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a664b
mov byte [eax], 0x62
mov ebp, 1
lea ecx, [esp + 0x224]
push ecx
push 0x200
lea edx, [esp + 0x2c]
push edx
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a667f
add eax, 1
sub ecx, 1
jne 0x4a6670
jmp 0x4a66a1
test ecx, ecx
je 0x4a66a1
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a6745
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x4a66ee
push 0x86
push 0
push 9
push 4
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jge 0x4a6717
cmp bx, 5
jne 0x4a6745
push 0x86
push 0xe5d
push 2
push 5
call fcn.004a5cf0
push edx
push eax
push esi
push edi
call fcn.004a5d10
add esp, 0x20
test eax, eax
jl 0x4a6745
mov edi, dword [esp + 0x20]
test edi, edi
je 0x4a6725
mov dword [edi], 8
mov esi, dword [esp + 0x14]
test esi, esi
je 0x4a6733
mov dword [esi], 2
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x4a673e
mov byte [ebx], 0x20
mov ebp, 1
jmp 0x4a6751
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
lea edx, [esp + 0x224]
push edx
push 0x200
lea eax, [esp + 0x2c]
push eax
call fcn.004a5910
mov ecx, 0x200
lea eax, [esp + 0x24]
cmp byte [eax], 0
je 0x4a6780
add eax, 1
sub ecx, 1
jne 0x4a6771
jmp 0x4a67a2
test ecx, ecx
je 0x4a67a2
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.004a5910
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004a5c20
add esp, 8
test eax, eax
jl 0x4a67d7
test edi, edi
je 0x4a67c2
mov dword [edi], 9
test esi, esi
je 0x4a67cc
mov dword [esi], 0
xor eax, eax
test ebx, ebx
je 0x4a6804
mov byte [ebx], 0x20
jmp 0x4a6804
test ebp, ebp
jne 0x4a6802
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x4a67e9
mov dword [ebx], 0
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a67f7
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a6802
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.00490dce
add esp, 0x418
ret