Function at 0x41e700
Capabilities:
Get common file path

Disassembly:
sub esp, 0x40c
push ebx
push 0x104
lea eax, [esp + 0x214]
push eax
mov dword [esp + 0xc], 0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
mov ebx, dword [esp + 0x414]
je 0x41f22c
push ebp
lea eax, [esp + 0x14]
lea ebp, [esp + 0x214]
mov ecx, eax
mov byte [esp + 0x317], 0
mov edx, 0x102
sub ebp, ecx
mov edi, edi
mov cl, byte [eax + ebp]
test cl, cl
je 0x41e75f
mov byte [eax], cl
inc eax
dec edx
jne 0x41e750
jmp 0x41e763
test edx, edx
jne 0x41e764
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x14]
cmp byte [eax], 0
je 0x41e77b
inc eax
dec ecx
jne 0x41e770
jmp 0x41e79d
test ecx, ecx
je 0x41e79d
mov eax, 0x102
sub eax, ecx
push str.ddraw.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x1c]
push eax
call fcn.0040eb10
push esi
push edi
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41e8ae
push 0x5f
push 0
push 2
push 4
call fcn.0041e3e0
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41e80f
test ebx, ebx
je 0x41e7e8
mov dword [ebx], 1
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41e7f9
mov dword [eax], 0
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41e807
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
push 0x448
push 0
push 3
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41e860
test ebx, ebx
je 0x41e839
mov dword [ebx], 2
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41e84a
mov dword [eax], 0
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41e858
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
push 0x44
push 0
push 4
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41e8ae
test ebx, ebx
je 0x41e887
mov dword [ebx], 3
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41e898
mov dword [eax], 0
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41e8a6
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
mov cl, byte [eax + ebp]
test cl, cl
je 0x41e8c6
mov byte [eax], cl
inc eax
dec edx
jne 0x41e8b7
jmp 0x41e8ca
test edx, edx
jne 0x41e8cb
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41e8e2
inc eax
dec ecx
jne 0x41e8d7
jmp 0x41e904
test ecx, ecx
je 0x41e904
mov eax, 0x102
sub eax, ecx
push str.d3drg8x.dll
mov ecx, 0x102
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x24]
push edx
call fcn.0040eb10
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41e972
push 0x46
push 0
push 4
push 4
call fcn.0041e3e0
push edx
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x2c]
push edx
push eax
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41e972
test ebx, ebx
je 0x41e949
mov dword [ebx], 3
mov esi, dword [esp + 0x424]
test esi, esi
je 0x41e95a
mov dword [esi], 0
mov edi, dword [esp + 0x428]
test edi, edi
je 0x41e968
mov byte [edi], 0x61
mov dword [esp + 0x10], 1
jmp 0x41e980
mov edi, dword [esp + 0x428]
mov esi, dword [esp + 0x424]
mov edx, 0x102
lea eax, [esp + 0x1c]
lea esp, [esp]
mov cl, byte [eax + ebp]
test cl, cl
je 0x41e99f
mov byte [eax], cl
inc eax
dec edx
jne 0x41e990
jmp 0x41e9a3
test edx, edx
jne 0x41e9a4
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41e9bb
inc eax
dec ecx
jne 0x41e9b0
jmp 0x41e9dd
test ecx, ecx
je 0x41e9dd
mov eax, 0x102
sub eax, ecx
push str.ddraw.dll
mov ecx, 0x102
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x24]
push edx
call fcn.0040eb10
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41eb00
push 0x9b
push 0
push 5
push 4
call fcn.0041e3e0
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41ea50
test ebx, ebx
je 0x41ea29
mov dword [ebx], 5
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41ea3a
mov dword [eax], 0
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41ea48
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
push 0x13e
push 0
push 6
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41eaa1
test ebx, ebx
je 0x41ea7a
mov dword [ebx], 6
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41ea8b
mov dword [eax], 0
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41ea99
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
push 0x1b4
push 0
push 6
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41eaf2
test ebx, ebx
je 0x41eacb
mov dword [ebx], 6
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41eadc
mov dword [eax], 1
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41eaea
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
mov edi, dword [esp + 0x428]
mov esi, dword [esp + 0x424]
mov edx, 0x102
lea eax, [esp + 0x1c]
lea esp, [esp]
mov cl, byte [eax + ebp]
test cl, cl
je 0x41eb1f
mov byte [eax], cl
inc eax
dec edx
jne 0x41eb10
jmp 0x41eb23
test edx, edx
jne 0x41eb24
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41eb3b
inc eax
dec ecx
jne 0x41eb30
jmp 0x41eb5d
test ecx, ecx
je 0x41eb5d
mov eax, 0x102
sub eax, ecx
push str.dplayx.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x24]
push eax
call fcn.0040eb10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41ebbe
push 0x206
push 3
push 6
push 4
call fcn.0041e3e0
mov ecx, dword [esp + 0x24]
push edx
push eax
mov eax, dword [esp + 0x30]
push eax
push ecx
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41ebbe
test ebx, ebx
je 0x41eba5
mov dword [ebx], 6
test esi, esi
je 0x41ebaf
mov dword [esi], 1
test edi, edi
je 0x41ebb6
mov byte [edi], 0x61
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
mov cl, byte [eax + ebp]
test cl, cl
je 0x41ebd6
mov byte [eax], cl
inc eax
dec edx
jne 0x41ebc7
jmp 0x41ebda
test edx, edx
jne 0x41ebdb
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41ebf2
inc eax
dec ecx
jne 0x41ebe7
jmp 0x41ec14
test ecx, ecx
je 0x41ec14
mov eax, 0x102
sub eax, ecx
push str.ddraw.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x24]
push eax
call fcn.0040eb10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41ec75
push 0x2bc
push 0
push 7
push 4
call fcn.0041e3e0
mov ecx, dword [esp + 0x24]
push edx
push eax
mov eax, dword [esp + 0x30]
push eax
push ecx
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41ec75
test ebx, ebx
je 0x41ec5c
mov dword [ebx], 7
test esi, esi
je 0x41ec66
mov dword [esi], 0
test edi, edi
je 0x41ec6d
mov byte [edi], 0x20
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
mov edi, edi
mov cl, byte [eax + ebp]
test cl, cl
je 0x41ec8f
mov byte [eax], cl
inc eax
dec edx
jne 0x41ec80
jmp 0x41ec93
test edx, edx
jne 0x41ec94
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41ecab
inc eax
dec ecx
jne 0x41eca0
jmp 0x41eccd
test ecx, ecx
je 0x41eccd
mov eax, 0x102
sub eax, ecx
push str.dinput.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x24]
push eax
call fcn.0040eb10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41ed2e
push 0x2cc
push 0
push 7
push 4
call fcn.0041e3e0
mov ecx, dword [esp + 0x24]
push edx
push eax
mov eax, dword [esp + 0x30]
push eax
push ecx
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41ed2e
test ebx, ebx
je 0x41ed15
mov dword [ebx], 7
test esi, esi
je 0x41ed1f
mov dword [esi], 0
test edi, edi
je 0x41ed26
mov byte [edi], 0x61
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
mov cl, byte [eax + ebp]
test cl, cl
je 0x41ed46
mov byte [eax], cl
inc eax
dec edx
jne 0x41ed37
jmp 0x41ed4a
test edx, edx
jne 0x41ed4b
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41ed62
inc eax
dec ecx
jne 0x41ed57
jmp 0x41ed84
test ecx, ecx
je 0x41ed84
mov eax, 0x102
sub eax, ecx
push str.ddraw.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x24]
push eax
call fcn.0040eb10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41ee32
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x41edd1
push 0x190
push 0
push 8
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jge 0x41edfa
cmp bx, 5
jne 0x41ee32
push 0x190
push 0x8d2
push 1
push 5
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41ee32
mov eax, dword [esp + 0x420]
test eax, eax
je 0x41ee0b
mov dword [eax], 8
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41ee1c
mov dword [eax], 0
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41ee2a
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
jmp 0x41ee40
mov cl, byte [eax + ebp]
test cl, cl
je 0x41ee4f
mov byte [eax], cl
inc eax
dec edx
jne 0x41ee40
jmp 0x41ee53
test edx, edx
jne 0x41ee54
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41ee6b
inc eax
dec ecx
jne 0x41ee60
jmp 0x41ee8d
test ecx, ecx
je 0x41ee8d
mov eax, 0x102
sub eax, ecx
push str.d3d8.dll
mov ecx, 0x102
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x24]
push edx
call fcn.0040eb10
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41efc2
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x41eeda
push 0x371
push 1
push 8
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jge 0x41ef03
cmp bx, 5
jne 0x41ef3b
push 0x371
push 0xa28
push 1
push 5
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41ef3b
mov eax, dword [esp + 0x420]
test eax, eax
je 0x41ef14
mov dword [eax], 8
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41ef25
mov dword [eax], 1
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41ef33
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
cmp bx, 4
jne 0x41ef61
push 0x385
push 1
push 8
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jge 0x41ef8a
cmp bx, 5
jne 0x41efc2
push 0x385
push 0xa28
push 1
push 5
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41efc2
mov eax, dword [esp + 0x420]
test eax, eax
je 0x41ef9b
mov dword [eax], 8
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41efac
mov dword [eax], 1
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41efba
mov byte [eax], 0x61
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
jmp 0x41efd0
mov cl, byte [eax + ebp]
test cl, cl
je 0x41efdf
mov byte [eax], cl
inc eax
dec edx
jne 0x41efd0
jmp 0x41efe3
test edx, edx
jne 0x41efe4
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41effb
inc eax
dec ecx
jne 0x41eff0
jmp 0x41f01d
test ecx, ecx
je 0x41f01d
mov eax, 0x102
sub eax, ecx
push str.mpg2splt.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x24]
push eax
call fcn.0040eb10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41f093
push 0x375
push 1
push 3
push 6
call fcn.0041e3e0
mov ecx, dword [esp + 0x24]
push edx
push eax
mov eax, dword [esp + 0x30]
push eax
push ecx
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41f093
mov eax, dword [esp + 0x420]
test eax, eax
je 0x41f06c
mov dword [eax], 8
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41f07d
mov dword [eax], 1
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41f08b
mov byte [eax], 0x62
mov dword [esp + 0x10], 1
mov edx, 0x102
lea eax, [esp + 0x1c]
lea esp, [esp]
mov cl, byte [eax + ebp]
test cl, cl
je 0x41f0af
mov byte [eax], cl
inc eax
dec edx
jne 0x41f0a0
jmp 0x41f0b3
test edx, edx
jne 0x41f0b4
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x1c]
cmp byte [eax], 0
je 0x41f0cb
inc eax
dec ecx
jne 0x41f0c0
jmp 0x41f0ed
test ecx, ecx
je 0x41f0ed
mov eax, 0x102
sub eax, ecx
push str.dpnet.dll
mov edx, 0x102
sub edx, eax
push edx
lea eax, [esp + eax + 0x24]
push eax
call fcn.0040eb10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41f19b
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov ebx, esi
shr ebx, 0x10
cmp bx, 4
jne 0x41f13a
push 0x86
push 0
push 9
push 4
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jge 0x41f163
cmp bx, 5
jne 0x41f19b
push 0x86
push 0xe5d
push 2
push 5
call fcn.0041e3e0
push edx
push eax
push esi
push edi
call fcn.0041e4d0
add esp, 0x20
test eax, eax
jl 0x41f19b
mov eax, dword [esp + 0x420]
test eax, eax
je 0x41f174
mov dword [eax], 8
mov eax, dword [esp + 0x424]
test eax, eax
je 0x41f185
mov dword [eax], 2
mov eax, dword [esp + 0x428]
test eax, eax
je 0x41f193
mov byte [eax], 0x20
mov dword [esp + 0x10], 1
pop edi
mov edx, 0x102
lea eax, [esp + 0x18]
pop esi
mov cl, byte [eax + ebp]
test cl, cl
je 0x41f1b5
mov byte [eax], cl
inc eax
dec edx
jne 0x41f1a6
jmp 0x41f1b9
test edx, edx
jne 0x41f1ba
dec eax
mov byte [eax], 0
mov ecx, 0x102
lea eax, [esp + 0x14]
pop ebp
cmp byte [eax], 0
je 0x41f1d2
inc eax
dec ecx
jne 0x41f1c7
jmp 0x41f1f4
test ecx, ecx
je 0x41f1f4
mov eax, 0x102
sub eax, ecx
push str.d3d9.dll
mov ecx, 0x102
sub ecx, eax
push ecx
lea edx, [esp + eax + 0x18]
push edx
call fcn.0040eb10
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x14]
push ecx
call fcn.0041e400
add esp, 8
test eax, eax
jl 0x41f21d
mov eax, dword [esp + 0x414]
test eax, eax
je 0x41f236
mov dword [eax], 9
jmp 0x41f236
mov eax, dword [esp + 4]
test eax, eax
jne 0x41f255
mov ebx, dword [esp + 0x414]
test ebx, ebx
je 0x41f236
mov dword [ebx], 0
mov eax, dword [esp + 0x418]
test eax, eax
je 0x41f247
mov dword [eax], 0
mov eax, dword [esp + 0x41c]
test eax, eax
je 0x41f255
mov byte [eax], 0x20
xor eax, eax
pop ebx
add esp, 0x40c
ret 0xc