Function at 0x45af30
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x820
mov eax, dword [0x659fd4]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x80c]
push edi
push 0x104
mov edi, ecx
mov dword [ebp - 0x810], esi
push eax
mov ebx, edx
mov dword [ebp - 0x820], edi
mov dword [ebp - 0x814], 0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov ecx, 0x20
test eax, eax
je 0x45bc57
xor eax, eax
lea ecx, [ebp - 0x40c]
mov word [ebp - 0x606], ax
lea esi, [ebp - 0x80c]
mov eax, ecx
mov edx, 0x200
sub esi, eax
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45afbe
movzx eax, word [esi + ecx]
test ax, ax
je 0x45afbe
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45afa0
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45afe4
add eax, 2
sub ecx, 1
jne 0x45afd6
test ecx, ecx
je 0x45b023
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.ddraw.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b115
mov ecx, dword [ebp - 0x818]
mov eax, dword [ebp - 0x81c]
cmp ecx, 0x40002
ja 0x45b059
jb 0x45b091
cmp eax, 0x5f
ja 0x45b059
jb 0x45b091
test edi, edi
je 0x45b063
mov dword [edi], 1
test ebx, ebx
je 0x45b06d
mov dword [ebx], 0
mov edx, dword [ebp - 0x810]
test edx, edx
je 0x45b085
mov edi, 0x20
mov word [edx], di
mov edi, dword [ebp - 0x820]
mov dword [ebp - 0x814], 1
jmp 0x45b097
mov edx, dword [ebp - 0x810]
cmp ecx, 0x40003
ja 0x45b0aa
jb 0x45b0da
cmp eax, 0x448
ja 0x45b0aa
jb 0x45b0da
test edi, edi
je 0x45b0b4
mov dword [edi], 2
test ebx, ebx
je 0x45b0be
mov dword [ebx], 0
test edx, edx
je 0x45b0d0
mov edi, 0x20
mov word [edx], di
mov edi, dword [ebp - 0x820]
mov dword [ebp - 0x814], 1
cmp ecx, 0x40004
ja 0x45b0eb
jb 0x45b115
cmp eax, 0x44
ja 0x45b0eb
jb 0x45b115
test edi, edi
je 0x45b0f5
mov dword [edi], 3
test ebx, ebx
je 0x45b0ff
mov dword [ebx], 0
test edx, edx
je 0x45b10b
mov eax, 0x20
mov word [edx], ax
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b13e
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b13e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b120
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b164
add eax, 2
sub ecx, 1
jne 0x45b156
test ecx, ecx
je 0x45b1a3
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.d3drg8x.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
mov ecx, 0x61
test eax, eax
js 0x45b201
cmp dword [ebp - 0x818], 0x40004
ja 0x45b1d6
jb 0x45b201
cmp dword [ebp - 0x81c], 0x46
ja 0x45b1d6
jb 0x45b201
test edi, edi
je 0x45b1e0
mov dword [edi], 3
test ebx, ebx
je 0x45b1ea
mov dword [ebx], 0
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b1f7
mov word [eax], cx
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b22e
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b22e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b210
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b254
add eax, 2
sub ecx, 1
jne 0x45b246
test ecx, ecx
je 0x45b293
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.ddraw.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b389
mov ecx, dword [ebp - 0x818]
mov eax, dword [ebp - 0x81c]
cmp ecx, 0x40005
ja 0x45b2cb
jb 0x45b303
cmp eax, 0x9b
ja 0x45b2cb
jb 0x45b303
test edi, edi
je 0x45b2d5
mov dword [edi], 5
test ebx, ebx
je 0x45b2df
mov dword [ebx], 0
mov edx, dword [ebp - 0x810]
test edx, edx
je 0x45b2f7
mov edi, 0x20
mov word [edx], di
mov edi, dword [ebp - 0x820]
mov dword [ebp - 0x814], 1
jmp 0x45b309
mov edx, dword [ebp - 0x810]
cmp ecx, 0x40006
ja 0x45b31c
jb 0x45b389
cmp eax, 0x13e
ja 0x45b31c
jb 0x45b34c
test edi, edi
je 0x45b326
mov dword [edi], 6
test ebx, ebx
je 0x45b330
mov dword [ebx], 0
test edx, edx
je 0x45b342
mov edi, 0x20
mov word [edx], di
mov edi, dword [ebp - 0x820]
mov dword [ebp - 0x814], 1
cmp ecx, 0x40006
ja 0x45b35f
jb 0x45b389
cmp eax, 0x1b4
ja 0x45b35f
jb 0x45b389
test edi, edi
je 0x45b369
mov dword [edi], 6
test ebx, ebx
je 0x45b373
mov dword [ebx], 1
test edx, edx
je 0x45b37f
mov eax, 0x20
mov word [edx], ax
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b3b2
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b3b2
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b394
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
nop word [eax + eax]
cmp word [eax], 0
je 0x45b3de
add eax, 2
sub ecx, 1
jne 0x45b3d0
test ecx, ecx
je 0x45b41d
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.dplayx.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b47e
cmp dword [ebp - 0x818], 0x40006
ja 0x45b44e
jb 0x45b47e
cmp dword [ebp - 0x81c], 0x30206
ja 0x45b44e
jb 0x45b47e
test edi, edi
je 0x45b458
mov dword [edi], 6
test ebx, ebx
je 0x45b462
mov dword [ebx], 1
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b474
mov ecx, 0x61
mov word [eax], cx
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b4ae
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b4ae
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b490
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b4d4
add eax, 2
sub ecx, 1
jne 0x45b4c6
test ecx, ecx
je 0x45b513
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.ddraw.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b574
cmp dword [ebp - 0x818], 0x40007
ja 0x45b544
jb 0x45b574
cmp dword [ebp - 0x81c], 0x2bc
ja 0x45b544
jb 0x45b574
test edi, edi
je 0x45b54e
mov dword [edi], 7
test ebx, ebx
je 0x45b558
mov dword [ebx], 0
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b56a
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b59e
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b59e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b580
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b5c4
add eax, 2
sub ecx, 1
jne 0x45b5b6
test ecx, ecx
je 0x45b603
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.dinput.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b664
cmp dword [ebp - 0x818], 0x40007
ja 0x45b634
jb 0x45b664
cmp dword [ebp - 0x81c], 0x2cc
ja 0x45b634
jb 0x45b664
test edi, edi
je 0x45b63e
mov dword [edi], 7
test ebx, ebx
je 0x45b648
mov dword [ebx], 0
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b65a
mov ecx, 0x61
mov word [eax], cx
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b68e
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b68e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b670
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b6b4
add eax, 2
sub ecx, 1
jne 0x45b6a6
test ecx, ecx
je 0x45b6f3
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.ddraw.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b78f
mov edx, dword [ebp - 0x818]
mov ecx, edx
mov edi, dword [ebp - 0x81c]
shr ecx, 0x10
cmp cx, 4
jne 0x45b73b
push 0x40008
push 0x190
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
jns 0x45b759
cmp cx, 5
jne 0x45b78f
push 0x50001
push 0x8d20190
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
js 0x45b78f
mov edi, dword [ebp - 0x820]
test edi, edi
je 0x45b769
mov dword [edi], 8
test ebx, ebx
je 0x45b773
mov dword [ebx], 0
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b785
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop word [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b7be
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b7be
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b7a0
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b7e4
add eax, 2
sub ecx, 1
jne 0x45b7d6
test ecx, ecx
je 0x45b823
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.d3d8.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45b939
mov edx, dword [ebp - 0x818]
mov ecx, edx
mov edi, dword [ebp - 0x81c]
shr ecx, 0x10
cmp cx, 4
jne 0x45b86b
push 0x40008
push 0x10371
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
jns 0x45b889
cmp cx, 5
jne 0x45b8c5
push 0x50001
push 0xa280371
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
js 0x45b8c5
mov eax, dword [ebp - 0x820]
test eax, eax
je 0x45b899
mov dword [eax], 8
test ebx, ebx
je 0x45b8a3
mov dword [ebx], 1
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b8bb
mov edx, 0x20
mov word [eax], dx
mov edx, dword [ebp - 0x818]
mov dword [ebp - 0x814], 1
cmp cx, 4
jne 0x45b8e3
push 0x40008
push 0x10385
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
jns 0x45b901
cmp cx, 5
jne 0x45b939
push 0x50001
push 0xa280385
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
js 0x45b939
mov edi, dword [ebp - 0x820]
test edi, edi
je 0x45b911
mov dword [edi], 8
test ebx, ebx
je 0x45b91b
mov dword [ebx], 1
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45b92d
mov ecx, 0x61
mov word [eax], cx
mov dword [ebp - 0x814], 1
jmp 0x45b93f
mov edi, dword [ebp - 0x820]
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop word [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45b96e
movzx eax, word [ecx + esi]
test ax, ax
je 0x45b96e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45b950
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45b994
add eax, 2
sub ecx, 1
jne 0x45b986
test ecx, ecx
je 0x45b9d3
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.mpg2splt.ax
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45ba34
cmp dword [ebp - 0x818], 0x60003
ja 0x45ba04
jb 0x45ba34
cmp dword [ebp - 0x81c], 0x10375
ja 0x45ba04
jb 0x45ba34
test edi, edi
je 0x45ba0e
mov dword [edi], 8
test ebx, ebx
je 0x45ba18
mov dword [ebx], 1
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45ba2a
mov ecx, 0x62
mov word [eax], cx
mov dword [ebp - 0x814], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45ba5e
movzx eax, word [ecx + esi]
test ax, ax
je 0x45ba5e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45ba40
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45ba84
add eax, 2
sub ecx, 1
jne 0x45ba76
test ecx, ecx
je 0x45bac3
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.dpnet.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45bb61
mov edx, dword [ebp - 0x818]
mov ecx, edx
mov edi, dword [ebp - 0x81c]
shr ecx, 0x10
cmp cx, 4
jne 0x45bb0b
push 0x40009
push 0x86
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
jns 0x45bb29
cmp cx, 5
jne 0x45bb61
push 0x50002
push 0xe5d0086
push edx
push edi
call fcn.0045bd50
add esp, 0x10
test eax, eax
js 0x45bb61
mov edi, dword [ebp - 0x820]
test edi, edi
je 0x45bb39
mov dword [edi], 8
test ebx, ebx
je 0x45bb43
mov dword [ebx], 2
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45bb55
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x814], 1
jmp 0x45bb67
mov edi, dword [ebp - 0x820]
mov edx, 0x200
lea ecx, [ebp - 0x40c]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x45bb90
movzx eax, word [ecx + esi]
test ax, ax
je 0x45bb90
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x45bb72
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x45bbb6
add eax, 2
sub ecx, 1
jne 0x45bba8
test ecx, ecx
je 0x45bbf5
mov edx, ecx
lea eax, [ecx - 0x200]
neg edx
push SysReAllocString
sbb edx, edx
and edx, eax
mov eax, 0x200
sub eax, ecx
add edx, 0x200
push str.d3d9.dll
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x40c]
add ecx, eax
call fcn.0042c640
lea edx, [ebp - 0x81c]
lea ecx, [ebp - 0x40c]
call fcn.0045bc90
test eax, eax
js 0x45bc43
test edi, edi
je 0x45bc14
mov dword [edi], 9
test ebx, ebx
je 0x45bc1e
mov dword [ebx], 0
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x45bc72
mov ecx, 0x20
mov word [eax], cx
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.005a7b5f
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x814], 0
jne 0x45bc72
mov esi, dword [ebp - 0x810]
mov ecx, 0x20
test edi, edi
je 0x45bc61
mov dword [edi], 0
test ebx, ebx
je 0x45bc6b
mov dword [ebx], 0
test esi, esi
je 0x45bc72
mov word [esi], cx
mov ecx, dword [ebp - 8]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005a7b5f
mov esp, ebp
pop ebp
ret