Function at 0x45d4b0
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x5462bb
mov eax, dword fs:[0]
push eax
sub esp, 0x828
mov eax, dword [0x5b3720]
xor eax, esp
mov dword [esp + 0x820], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5b3720]
xor eax, esp
push eax
lea eax, [esp + 0x83c]
mov dword fs:[0], eax
mov eax, dword [esp + 0x84c]
mov dword [esp + 0x2c], eax
push 0x104
lea eax, [esp + 0x438]
push eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], 0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x45e07c
lea eax, [esp + 0x34]
lea ebp, [esp + 0x434]
mov ecx, eax
mov word [esp + 0x63a], 0
mov edx, 0x200
sub ebp, ecx
nop
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45d560
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45d560
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45d540
jmp 0x45d564
test edx, edx
jne 0x45d567
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45d585
add eax, 2
sub ecx, 1
jne 0x45d575
jmp 0x45d5aa
test ecx, ecx
je 0x45d5aa
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.ddraw.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45d68d
mov eax, dword [esp + 0x28]
cmp eax, 0x40002
mov ecx, dword [esp + 0x24]
ja 0x45d5d7
jb 0x45d60a
cmp ecx, 0x5f
ja 0x45d5d7
jb 0x45d60a
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x45d5e5
mov dword [esi], 1
mov edx, dword [esp + 0x18]
test edx, edx
je 0x45d5f3
mov dword [edx], 0
mov edx, dword [esp + 0x20]
test edx, edx
je 0x45d600
mov word [edx], 0x20
mov dword [esp + 0x1c], 1
jmp 0x45d60e
mov esi, dword [esp + 0x2c]
cmp eax, 0x40003
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
ja 0x45d629
jb 0x45d64e
cmp ecx, 0x448
ja 0x45d629
jb 0x45d64e
test esi, esi
je 0x45d633
mov dword [esi], 2
test edx, edx
je 0x45d63d
mov dword [edx], 0
test edi, edi
je 0x45d646
mov word [edi], 0x20
mov dword [esp + 0x1c], 1
cmp eax, 0x40004
ja 0x45d666
jb 0x45d691
cmp ecx, 0x44
ja 0x45d65e
jb 0x45d691
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
test esi, esi
je 0x45d670
mov dword [esi], 3
test edx, edx
je 0x45d67a
mov dword [edx], 0
test edi, edi
je 0x45d683
mov word [edi], 0x20
mov dword [esp + 0x1c], 1
jmp 0x45d691
mov esi, dword [esp + 0x2c]
mov edx, 0x200
lea eax, [esp + 0x34]
lea ebx, [ebx]
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45d6c0
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45d6c0
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45d6a0
jmp 0x45d6c4
test edx, edx
jne 0x45d6c7
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45d6e5
add eax, 2
sub ecx, 1
jne 0x45d6d5
jmp 0x45d70a
test ecx, ecx
je 0x45d70a
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.d3drg8x.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45d760
mov eax, dword [esp + 0x28]
cmp eax, 0x40004
ja 0x45d733
jb 0x45d760
mov eax, dword [esp + 0x24]
cmp eax, 0x46
ja 0x45d733
jb 0x45d760
test esi, esi
je 0x45d73d
mov dword [esi], 3
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45d74b
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45d758
mov word [eax], 0x61
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
lea esp, [esp]
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45d790
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45d790
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45d770
jmp 0x45d794
test edx, edx
jne 0x45d797
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45d7b5
add eax, 2
sub ecx, 1
jne 0x45d7a5
jmp 0x45d7da
test ecx, ecx
je 0x45d7da
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.ddraw.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45d8b1
mov eax, dword [esp + 0x28]
cmp eax, 0x40005
mov ecx, dword [esp + 0x24]
ja 0x45d80a
jb 0x45d839
cmp ecx, 0x9b
ja 0x45d80a
jb 0x45d839
test esi, esi
je 0x45d814
mov dword [esi], 5
mov edx, dword [esp + 0x18]
test edx, edx
je 0x45d822
mov dword [edx], 0
mov edi, dword [esp + 0x20]
test edi, edi
je 0x45d82f
mov word [edi], 0x20
mov dword [esp + 0x1c], 1
jmp 0x45d841
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
cmp eax, 0x40006
ja 0x45d854
jb 0x45d879
cmp ecx, 0x13e
ja 0x45d854
jb 0x45d879
test esi, esi
je 0x45d85e
mov dword [esi], 6
test edx, edx
je 0x45d868
mov dword [edx], 0
test edi, edi
je 0x45d871
mov word [edi], 0x20
mov dword [esp + 0x1c], 1
cmp eax, 0x40006
ja 0x45d88c
jb 0x45d8b1
cmp ecx, 0x1b4
ja 0x45d88c
jb 0x45d8b1
test esi, esi
je 0x45d896
mov dword [esi], 6
test edx, edx
je 0x45d8a0
mov dword [edx], 1
test edi, edi
je 0x45d8a9
mov word [edi], 0x20
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
lea ebx, [ebx]
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45d8e0
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45d8e0
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45d8c0
jmp 0x45d8e4
test edx, edx
jne 0x45d8e7
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45d905
add eax, 2
sub ecx, 1
jne 0x45d8f5
jmp 0x45d92a
test ecx, ecx
je 0x45d92a
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.dplayx.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45d982
mov eax, dword [esp + 0x28]
cmp eax, 0x40006
ja 0x45d955
jb 0x45d982
mov eax, dword [esp + 0x24]
cmp eax, 0x30206
ja 0x45d955
jb 0x45d982
test esi, esi
je 0x45d95f
mov dword [esi], 6
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45d96d
mov dword [eax], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45d97a
mov word [eax], 0x61
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
jmp 0x45d990
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45d9b0
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45d9b0
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45d990
jmp 0x45d9b4
test edx, edx
jne 0x45d9b7
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45d9d5
add eax, 2
sub ecx, 1
jne 0x45d9c5
jmp 0x45d9fa
test ecx, ecx
je 0x45d9fa
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.ddraw.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45da52
mov eax, dword [esp + 0x28]
cmp eax, 0x40007
ja 0x45da25
jb 0x45da52
mov eax, dword [esp + 0x24]
cmp eax, 0x2bc
ja 0x45da25
jb 0x45da52
test esi, esi
je 0x45da2f
mov dword [esi], 7
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45da3d
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45da4a
mov word [eax], 0x20
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
jmp 0x45da60
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45da80
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45da80
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45da60
jmp 0x45da84
test edx, edx
jne 0x45da87
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45daa5
add eax, 2
sub ecx, 1
jne 0x45da95
jmp 0x45daca
test ecx, ecx
je 0x45daca
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.dinput.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45db22
mov eax, dword [esp + 0x28]
cmp eax, 0x40007
ja 0x45daf5
jb 0x45db22
mov eax, dword [esp + 0x24]
cmp eax, 0x2cc
ja 0x45daf5
jb 0x45db22
test esi, esi
je 0x45daff
mov dword [esi], 7
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45db0d
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45db1a
mov word [eax], 0x61
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
jmp 0x45db30
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45db50
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45db50
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45db30
jmp 0x45db54
test edx, edx
jne 0x45db57
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45db75
add eax, 2
sub ecx, 1
jne 0x45db65
jmp 0x45db9a
test ecx, ecx
je 0x45db9a
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.ddraw.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45dc21
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov eax, edx
shr eax, 0x10
cmp ax, 4
jne 0x45dbd0
cmp edx, 0x40008
ja 0x45dbf0
jb 0x45dbd0
cmp esi, 0x190
jae 0x45dbf0
cmp ax, 5
jne 0x45dc21
mov eax, 0x50001
push eax
mov ecx, 0x8d20190
push ecx
push edx
push esi
call fcn.0045e1b0
add esp, 0x10
test eax, eax
jl 0x45dc21
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45dbfe
mov dword [eax], 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45dc0c
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45dc19
mov word [eax], 0x20
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
lea ebx, [ebx]
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45dc50
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45dc50
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45dc30
jmp 0x45dc54
test edx, edx
jne 0x45dc57
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45dc75
add eax, 2
sub ecx, 1
jne 0x45dc65
jmp 0x45dc9a
test ecx, ecx
je 0x45dc9a
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.d3d8.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45dd90
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov edi, edx
shr edi, 0x10
cmp di, 4
jne 0x45dcd4
cmp edx, 0x40008
ja 0x45dcf4
jb 0x45dcd4
cmp esi, 0x10371
jae 0x45dcf4
cmp di, 5
jne 0x45dd27
mov eax, 0x50001
push eax
mov ecx, 0xa280371
push ecx
push edx
push esi
call fcn.0045e1b0
add esp, 0x10
test eax, eax
jl 0x45dd27
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45dd02
mov dword [eax], 8
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x45dd10
mov dword [ebx], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45dd1d
mov word [eax], 0x20
mov dword [esp + 0x1c], 1
jmp 0x45dd2b
mov ebx, dword [esp + 0x18]
cmp di, 4
jne 0x45dd43
cmp edx, 0x40008
ja 0x45dd63
jb 0x45dd43
cmp esi, 0x10385
jae 0x45dd63
cmp di, 5
jne 0x45dd90
mov eax, 0x50001
push eax
mov ecx, 0xa280385
push ecx
push edx
push esi
call fcn.0045e1b0
add esp, 0x10
test eax, eax
jl 0x45dd90
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45dd71
mov dword [eax], 8
test ebx, ebx
je 0x45dd7b
mov dword [ebx], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45dd88
mov word [eax], 0x61
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
lea esp, [esp]
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45ddc0
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45ddc0
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45dda0
jmp 0x45ddc4
test edx, edx
jne 0x45ddc7
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45dde5
add eax, 2
sub ecx, 1
jne 0x45ddd5
jmp 0x45de0a
test ecx, ecx
je 0x45de0a
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.mpg2splt.ax
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45de66
mov eax, dword [esp + 0x28]
cmp eax, 0x60003
ja 0x45de35
jb 0x45de66
mov eax, dword [esp + 0x24]
cmp eax, 0x10375
ja 0x45de35
jb 0x45de66
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45de43
mov dword [eax], 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45de51
mov dword [eax], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45de5e
mov word [eax], 0x62
mov dword [esp + 0x1c], 1
mov edx, 0x200
lea eax, [esp + 0x34]
nop
lea ecx, [edx + 0x7ffffdfe]
test ecx, ecx
je 0x45de90
movzx ecx, word [eax + ebp]
test cx, cx
je 0x45de90
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x45de70
jmp 0x45de94
test edx, edx
jne 0x45de97
sub eax, 2
mov word [eax], 0
mov ecx, 0x200
lea eax, [esp + 0x34]
cmp word [eax], 0
je 0x45deb5
add eax, 2
sub ecx, 1
jne 0x45dea5
jmp 0x45deda
test ecx, ecx
je 0x45deda
mov eax, 0x200
sub eax, ecx
mov edx, 0x200
sub edx, eax
lea ecx, [esp + eax*2 + 0x34]
push str.dpnet.dll
mov eax, DirectSoundCreate
call fcn.0045d370
lea ebx, [esp + 0x24]
lea edi, [esp + 0x34]
call fcn.0045e0f0
test eax, eax
jl 0x45df61
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov eax, ecx
shr eax, 0x10
cmp ax, 4
jne 0x45df10
cmp ecx, 0x40009
ja 0x45df30
jb 0x45df10
cmp esi, 0x86
jae 0x45df30
cmp ax, 5
jne 0x45df61
mov eax, 0x50002
push eax
mov edx, 0xe5d0086
push edx
push ecx
push esi
call fcn.0045e1b0
add esp, 0x10
test eax, eax
jl 0x45df61
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45df3e
mov dword [eax], 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45df4c
mov dword [eax], 2
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45df59
mov word [eax], 0x20
mov dword [esp + 0x1c], 1
mov esi, 9
or ebp, 0xffffffff
lea esp, [esp]
call fcn.005081a0
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x45e0cf
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
push esi
lea ecx, [esp + 0x438]
push ecx
lea edx, [esp + 0x38]
push str._sd3d_d.dll
push edx
mov dword [esp + 0x854], 0
call fcn.00402620
mov edi, dword [esp + 0x40]
add esp, 0x10
cmp dword [edi - 4], 1
jle 0x45dfd5
mov eax, dword [edi - 0xc]
push eax
lea ecx, [esp + 0x34]
call fcn.004022a0
mov edi, dword [esp + 0x30]
lea ebx, [esp + 0x24]
call fcn.0045e0f0
test eax, eax
jl 0x45e00f
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45dfec
mov dword [eax], esi
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45dffa
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45e007
mov word [eax], 0x20
mov dword [esp + 0x1c], 1
test edi, edi
jne 0x45e017
xor eax, eax
jmp 0x45e035
mov eax, edi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x45e020
sub eax, edx
sar eax, 1
js 0x45e0d9
cmp eax, dword [edi - 8]
jg 0x45e0d9
mov dword [edi - 0xc], eax
mov word [edi + eax*2], 0
lea eax, [edi - 0x10]
mov dword [esp + 0x844], ebp
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e069
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 1
cmp esi, 0x63
jl 0x45df70
cmp dword [esp + 0x1c], 0
jne 0x45e0a5
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x45e08a
mov dword [eax], 0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x45e098
mov dword [eax], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45e0a5
mov word [eax], 0x20
xor eax, eax
mov ecx, dword [esp + 0x83c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x820]
xor ecx, esp
call fcn.00524c67
add esp, 0x834
ret
push 0x80004005
call fcn.004021d0
push 0x80070057
call fcn.004021d0
int3