Function at 0x4318e0
Capabilities:
Get common file path

Disassembly:
sub esp, 0x41c
mov eax, dword [0x4b59f4]
xor eax, esp
mov dword [esp + 0x418], eax
push ebx
mov ebx, dword [esp + 0x42c]
push ebp
push esi
mov esi, dword [esp + 0x42c]
push edi
mov edi, dword [esp + 0x434]
push 0x104
lea eax, [esp + 0x22c]
push eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ebx
xor ebp, ebp
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x432271
mov byte [esp + 0x32b], 0
xor eax, eax
jmp 0x431950
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431950
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431970
mov ecx, dword [str.ddraw.dll]
mov edx, dword [0x492f60]
mov dword [eax], ecx
mov cx, word [0x492f64]
mov dword [eax + 4], edx
mov dl, byte [0x492f66]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004314b0
test eax, eax
jl 0x431a51
mov eax, dword [esp + 0x18]
cmp eax, 0x40002
mov ecx, dword [esp + 0x14]
ja 0x4319d2
jb 0x4319ee
cmp ecx, 0x5f
ja 0x4319d2
jb 0x4319ee
test esi, esi
je 0x4319dc
mov dword [esi], 1
test edi, edi
je 0x4319e2
mov dword [edi], ebp
test ebx, ebx
je 0x4319e9
mov byte [ebx], 0x20
mov ebp, 1
cmp eax, 0x40003
ja 0x431a01
jb 0x431a21
cmp ecx, 0x448
ja 0x431a01
jb 0x431a21
test esi, esi
je 0x431a0b
mov dword [esi], 2
test edi, edi
je 0x431a15
mov dword [edi], 0
test ebx, ebx
je 0x431a1c
mov byte [ebx], 0x20
mov ebp, 1
cmp eax, 0x40004
ja 0x431a31
jb 0x431a51
cmp ecx, 0x44
ja 0x431a31
jb 0x431a51
test esi, esi
je 0x431a3b
mov dword [esi], 3
test edi, edi
je 0x431a45
mov dword [edi], 0
test ebx, ebx
je 0x431a4c
mov byte [ebx], 0x20
mov ebp, 1
xor eax, eax
jmp 0x431a60
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431a60
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431a80
mov edx, dword [str.d3drg8x.dll]
mov ecx, dword [0x492f50]
mov dword [eax], edx
mov edx, dword [0x492f54]
mov dword [eax + 4], ecx
mov cl, byte [0x492f58]
mov dword [eax + 8], edx
mov byte [eax + 0xc], cl
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004314b0
test eax, eax
jl 0x431afc
mov eax, dword [esp + 0x18]
cmp eax, 0x40004
ja 0x431adc
jb 0x431afc
mov eax, dword [esp + 0x14]
cmp eax, 0x46
ja 0x431adc
jb 0x431afc
test esi, esi
je 0x431ae6
mov dword [esi], 3
test edi, edi
je 0x431af0
mov dword [edi], 0
test ebx, ebx
je 0x431af7
mov byte [ebx], 0x61
mov ebp, 1
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431b00
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431b20
mov ecx, dword [str.ddraw.dll]
mov edx, dword [0x492f60]
mov dword [eax], ecx
mov cx, word [0x492f64]
mov dword [eax + 4], edx
mov dl, byte [0x492f66]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004314b0
test eax, eax
jl 0x431c0b
mov eax, dword [esp + 0x18]
cmp eax, 0x40005
mov ecx, dword [esp + 0x14]
ja 0x431b85
jb 0x431ba5
cmp ecx, 0x9b
ja 0x431b85
jb 0x431ba5
test esi, esi
je 0x431b8f
mov dword [esi], 5
test edi, edi
je 0x431b99
mov dword [edi], 0
test ebx, ebx
je 0x431ba0
mov byte [ebx], 0x20
mov ebp, 1
cmp eax, 0x40006
ja 0x431bb8
jb 0x431bd8
cmp ecx, 0x13e
ja 0x431bb8
jb 0x431bd8
test esi, esi
je 0x431bc2
mov dword [esi], 6
test edi, edi
je 0x431bcc
mov dword [edi], 0
test ebx, ebx
je 0x431bd3
mov byte [ebx], 0x20
mov ebp, 1
cmp eax, 0x40006
ja 0x431beb
jb 0x431c0b
cmp ecx, 0x1b4
ja 0x431beb
jb 0x431c0b
test esi, esi
je 0x431bf5
mov dword [esi], 6
test edi, edi
je 0x431bff
mov dword [edi], 1
test ebx, ebx
je 0x431c06
mov byte [ebx], 0x20
mov ebp, 1
xor eax, eax
lea ecx, [ecx]
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431c10
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431c30
mov edx, dword [str.dplayx.dll]
mov ecx, dword [0x492f44]
mov dword [eax], edx
mov edx, dword [0x492f48]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004314b0
test eax, eax
jl 0x431ca5
mov eax, dword [esp + 0x18]
cmp eax, 0x40006
ja 0x431c85
jb 0x431ca5
mov eax, dword [esp + 0x14]
cmp eax, 0x30206
ja 0x431c85
jb 0x431ca5
test esi, esi
je 0x431c8f
mov dword [esi], 6
test edi, edi
je 0x431c99
mov dword [edi], 1
test ebx, ebx
je 0x431ca0
mov byte [ebx], 0x61
mov ebp, 1
xor eax, eax
jmp 0x431cb0
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431cb0
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431cd0
mov edx, dword [str.ddraw.dll]
mov ecx, dword [0x492f60]
mov dword [eax], edx
mov dx, word [0x492f64]
mov dword [eax + 4], ecx
mov cl, byte [0x492f66]
mov word [eax + 8], dx
mov byte [eax + 0xa], cl
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004314b0
test eax, eax
jl 0x431d50
mov eax, dword [esp + 0x18]
cmp eax, 0x40007
ja 0x431d30
jb 0x431d50
mov eax, dword [esp + 0x14]
cmp eax, 0x2bc
ja 0x431d30
jb 0x431d50
test esi, esi
je 0x431d3a
mov dword [esi], 7
test edi, edi
je 0x431d44
mov dword [edi], 0
test ebx, ebx
je 0x431d4b
mov byte [ebx], 0x20
mov ebp, 1
xor eax, eax
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431d52
lea eax, [esp + 0x28]
add eax, 0xffffffff
jmp 0x431d70
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431d70
mov ecx, dword [str.dinput.dll]
mov edx, dword [0x492f38]
mov dword [eax], ecx
mov ecx, dword [0x492f3c]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004314b0
test eax, eax
jl 0x431de5
mov eax, dword [esp + 0x18]
cmp eax, 0x40007
ja 0x431dc5
jb 0x431de5
mov eax, dword [esp + 0x14]
cmp eax, 0x2cc
ja 0x431dc5
jb 0x431de5
test esi, esi
je 0x431dcf
mov dword [esi], 7
test edi, edi
je 0x431dd9
mov dword [edi], 0
test ebx, ebx
je 0x431de0
mov byte [ebx], 0x61
mov ebp, 1
xor eax, eax
jmp 0x431df0
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431df0
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431e10
mov ecx, dword [str.ddraw.dll]
mov edx, dword [0x492f60]
mov dword [eax], ecx
mov cx, word [0x492f64]
mov dword [eax + 4], edx
mov dl, byte [0x492f66]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004314b0
test eax, eax
jl 0x431ed1
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov edi, esi
shr edi, 0x10
cmp di, 4
jne 0x431e84
mov eax, 0x40008
push eax
mov ecx, 0x190
push ecx
mov ecx, dword [esp + 0x18]
push esi
push ebx
call fcn.00431580
test eax, eax
jge 0x431ea5
cmp di, 5
jne 0x431ed1
mov eax, 0x50001
push eax
mov ecx, 0x8d20190
push ecx
mov ecx, dword [esp + 0x18]
push esi
push ebx
call fcn.00431580
test eax, eax
jl 0x431ed1
mov eax, dword [esp + 0x24]
test eax, eax
je 0x431eb3
mov dword [eax], 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x431ec1
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x431ecc
mov byte [eax], 0x20
mov ebp, 1
xor eax, eax
jmp 0x431ee0
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x431ee0
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x431f00
mov edx, dword [str.d3d8.dll]
mov ecx, dword [0x492f2c]
mov dword [eax], edx
mov dx, word [0x492f30]
mov dword [eax + 4], ecx
mov word [eax + 8], dx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004314b0
test eax, eax
jl 0x43202a
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x431f6f
mov eax, 0x40008
push eax
mov ecx, 0x10371
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edi
call fcn.00431580
test eax, eax
jge 0x431f90
cmp bx, 5
jne 0x431fbc
mov eax, 0x50001
push eax
mov ecx, 0xa280371
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edi
call fcn.00431580
test eax, eax
jl 0x431fbc
mov eax, dword [esp + 0x24]
test eax, eax
je 0x431f9e
mov dword [eax], 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x431fac
mov dword [eax], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x431fb7
mov byte [eax], 0x20
mov ebp, 1
cmp bx, 4
jne 0x431fdd
mov eax, 0x40008
push eax
mov ecx, 0x10385
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edi
call fcn.00431580
test eax, eax
jge 0x431ffe
cmp bx, 5
jne 0x43202a
mov eax, 0x50001
push eax
mov ecx, 0xa280385
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edi
call fcn.00431580
test eax, eax
jl 0x43202a
mov eax, dword [esp + 0x24]
test eax, eax
je 0x43200c
mov dword [eax], 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x43201a
mov dword [eax], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x432025
mov byte [eax], 0x61
mov ebp, 1
xor eax, eax
lea esp, [esp]
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x432030
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x432050
mov edx, dword [str.mpg2splt.ax]
mov ecx, dword [0x492f1c]
mov esi, dword [esp + 0x10]
mov dword [eax], edx
mov edx, dword [0x492f20]
mov dword [eax + 4], ecx
mov cl, byte [0x492f24]
mov dword [eax + 8], edx
mov byte [eax + 0xc], cl
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x2c]
push eax
mov ecx, esi
call fcn.004314b0
test eax, eax
jl 0x4320dc
mov eax, dword [esp + 0x18]
cmp eax, 0x60003
ja 0x4320b0
jb 0x4320dc
mov eax, dword [esp + 0x14]
cmp eax, 0x10375
ja 0x4320b0
jb 0x4320dc
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4320be
mov dword [eax], 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4320cc
mov dword [eax], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4320d7
mov byte [eax], 0x62
mov ebp, 1
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x4320e0
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x432100
mov ecx, dword [str.dpnet.dll]
mov edx, dword [0x492f10]
mov dword [eax], ecx
mov cx, word [0x492f14]
mov dword [eax + 4], edx
mov dl, byte [0x492f16]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, esi
call fcn.004314b0
test eax, eax
jl 0x4321bf
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov edi, esi
shr edi, 0x10
cmp di, 4
jne 0x432172
mov eax, 0x40009
push eax
mov ecx, 0x86
push ecx
mov ecx, dword [esp + 0x18]
push esi
push ebx
call fcn.00431580
test eax, eax
jge 0x432193
cmp di, 5
jne 0x4321bf
mov eax, 0x50002
push eax
mov ecx, 0xe5d0086
push ecx
mov ecx, dword [esp + 0x18]
push esi
push ebx
call fcn.00431580
test eax, eax
jl 0x4321bf
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4321a1
mov dword [eax], 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4321af
mov dword [eax], 2
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4321ba
mov byte [eax], 0x20
mov ebp, 1
xor eax, eax
mov cl, byte [esp + eax + 0x228]
mov byte [esp + eax + 0x28], cl
add eax, 1
test cl, cl
jne 0x4321c1
lea eax, [esp + 0x28]
add eax, 0xffffffff
lea ebx, [ebx]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x4321e0
mov edx, dword [str.d3d9.dll]
mov ecx, dword [0x492f04]
mov dword [eax], edx
mov dx, word [0x492f08]
mov dword [eax + 4], ecx
mov word [eax + 8], dx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004314b0
test eax, eax
jl 0x432261
mov eax, dword [esp + 0x24]
test eax, eax
je 0x43222b
mov dword [eax], 9
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x432239
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x432244
mov byte [eax], 0x62
xor eax, eax
mov ecx, dword [esp + 0x428]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0046fe25
add esp, 0x41c
ret 0xc
test ebp, ebp
jne 0x432244
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
test esi, esi
je 0x43227b
mov dword [esi], 0
test edi, edi
je 0x432285
mov dword [edi], 0
xor eax, eax
test ebx, ebx
je 0x432246
mov byte [ebx], 0x20
jmp 0x432246