Function at 0x438b90
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4a9ce8
mov eax, dword fs:[0]
push eax
mov eax, 0x2c1a0
call fcn.00476910
mov eax, dword [0x5564a4]
xor eax, esp
mov dword [esp + 0x2c19c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5564a4]
xor eax, esp
push eax
lea eax, [esp + 0x2c1b4]
mov dword fs:[0], eax
mov ebx, dword [esp + 0x2c1c4]
push ecx
mov esi, ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push str.NetLogHardwareAnalyzer
call fcn.00401d30
lea eax, [esp + 0x18]
push eax
call fcn.004051d0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x24], esp
xor edi, edi
push eax
mov dword [esp + 0x2c1c4], edi
call fcn.00401d30
mov byte [esp + 0x2c1c0], 1
call fcn.00427200
mov ecx, eax
mov byte [esp + 0x2c1c0], 0
call fcn.00427270
mov ebp, eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x20], ebp
mov dword [esp + 0x2c1bc], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x438c5a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x55865c]
push edi
call fcn.0043f4a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x6c]
call eax
test eax, eax
je 0x438d59
push 0x1ff
lea ecx, [esp + 0x2bfb5]
push edi
push ecx
mov byte [esp + 0x2bfbc], 0
call fcn.00476f10
add esp, 0xc
push 0x200
lea edx, [esp + 0x2bfb4]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x439566
push str.d3dx9_32.dll
lea eax, [esp + 0x2bfb4]
push eax
mov ecx, eax
push 0x50329c
push ecx
call fcn.00476e53
push 2
lea edx, [esp + 0x2bfc4]
push edi
push edx
call fcn.00408ac0
add esp, 0x1c
test eax, eax
jne 0x438d59
push str.d3dx9_32.dll
push str._s_Not_Find
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0x10
lea eax, [esp + 0x14]
push 0x77
push eax
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov eax, dword [eax]
push edi
push edi
push eax
mov dword [esp + 0x2c1c8], 2
call fcn.00406520
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0xc
mov dword [esp + 0x2c1bc], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x439566
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x439566
push str.Create_D3D...
push ebp
mov dword [esp + 0x20], edi
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push 0x20
call sub.d3d9.dll_Direct3DCreate9
mov edi, eax
test edi, edi
jne 0x438dcd
lea ecx, [esp + 0x14]
push 1
push ecx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov eax, dword [eax]
push edi
push edi
push eax
mov dword [esp + 0x2c1c8], 3
call fcn.00406520
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0xc
mov dword [esp + 0x2c1bc], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x438d44
push str.SUCCEEDED
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push str.GetAdapterDisplayMode
push ebp
call fcn.00427200
push eax
call fcn.00426f60
mov ecx, dword [edi]
mov eax, dword [ecx + 0x20]
add esp, 0xc
lea edx, [esp + 0x60]
push edx
push 0
push edi
call eax
test eax, eax
jge 0x438e60
lea ecx, [esp + 0x14]
push 2
push ecx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov eax, dword [eax]
push 0
push 0
push eax
mov dword [esp + 0x2c1c8], 4
call fcn.00406520
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0xc
mov dword [esp + 0x2c1bc], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x438e60
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.SUCCEEDED
push ebp
call fcn.00427200
push eax
call fcn.00426f60
push 0x38
lea ecx, [esp + 0x80]
push 0
push ecx
call fcn.00476f10
mov edx, dword [esp + 0x84]
add esp, 0x18
push str.Create_Device...
push ebp
mov dword [esp + 0x98], 1
mov dword [esp + 0x90], 3
mov dword [esp + 0xac], 0
mov dword [esp + 0x80], edx
call fcn.00427200
push eax
call fcn.00426f60
mov eax, dword [edi]
mov eax, dword [eax + 0x40]
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x74]
push edx
push 0x80
push ebx
push 1
push 0
push edi
call eax
test eax, eax
jge 0x438f63
mov ecx, dword [edi]
mov ecx, dword [ecx + 0x40]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x74]
push eax
push 0x40
push ebx
push 1
push 0
push edi
call ecx
test eax, eax
jge 0x438f63
mov edx, dword [edi]
mov edx, dword [edx + 0x40]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x74]
push ecx
push 0x20
push ebx
push 1
push 0
push edi
call edx
test eax, eax
jge 0x438f63
lea eax, [esp + 0x14]
push 3
push eax
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov eax, dword [eax]
push 0
push 0
push eax
mov dword [esp + 0x2c1c8], 5
call fcn.00406520
add esp, 0xc
lea ecx, [esp + 0x14]
mov dword [esp + 0x2c1bc], 0xffffffff
call fcn.00401640
push str.SUCCEEDED
push ebp
call fcn.00427200
push eax
call fcn.00426f60
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
add esp, 0xc
lea edx, [esi + 0x2c]
push edx
push eax
mov eax, dword [ecx + 0x1c]
call eax
push str.MaxSimultaneousTextures
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
cmp dword [esi + 0xc4], 2
jae 0x439000
lea ecx, [esp + 0x14]
push 0x56
push ecx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov edx, dword [esi + 0xc4]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0x2beb8]
push str._s___MaxSimultaneousTextures:__d__
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x439552
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x439552
push 0x503708
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push str.MaxTextureHeight
push ebp
call fcn.00427200
push eax
call fcn.00426f60
mov ebx, 0x400
add esp, 0xc
cmp dword [esi + 0x88], ebx
jae 0x439081
lea edx, [esp + 0x14]
push 0x56
push edx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov ecx, dword [esi + 0x88]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x2beb8]
push str._s___MaxTextureHeight:__d__
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x438feb
push 0x503708
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push str.MaxTextureWidth
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
cmp dword [esi + 0x84], ebx
jae 0x4390e9
lea edx, [esp + 0x14]
push 0x56
push edx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov ecx, dword [esi + 0x84]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x2beb8]
push str._s___MaxTextureWidth:__d__
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
jmp 0x439549
push 0x503708
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push str.MaxVertexBlendMatrices
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
cmp dword [esi + 0xd4], 0
ja 0x439152
lea edx, [esp + 0x14]
push 0x56
push edx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov ecx, dword [esi + 0xd4]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x2beb8]
push str._s___MaxVertexBlendMatrices:__d__
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
jmp 0x439549
push 0x503708
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push str.CheckDeviceFormat
push ebp
call fcn.00427200
push eax
call fcn.00426f60
mov eax, dword [esp + 0x78]
mov edx, dword [edi]
mov ecx, dword [edx + 0x28]
add esp, 0xc
push 0x31545844
push 3
push 0
push eax
push 1
push 0
push edi
call ecx
test eax, eax
jl 0x4394e6
push 0x503708
push ebp
call fcn.00427200
push eax
call fcn.00426f60
mov edx, dword [edi]
mov eax, dword [edx + 0x10]
add esp, 0xc
push edi
call eax
cmp eax, 2
mov dword [esi + 0x184], eax
jb 0x4391c8
mov eax, 1
push eax
push str.AdapterCount___d
push ebp
mov dword [esi + 0x184], eax
call fcn.00427200
push eax
call fcn.00426f60
xor ebx, ebx
add esp, 0x10
cmp dword [esi + 0x184], ebx
mov dword [esp + 0x30], ebx
jbe 0x4393ed
lea ecx, [esi + 0x15c]
mov dword [esp + 0x14], ecx
nop
mov ebp, dword [esi + 0x184]
mov edx, dword [edi]
imul ebp, ebp, 0x458c
mov eax, dword [edx + 0x14]
lea ebp, [esp + ebp + 0x738]
push ebp
push 2
push ebx
push edi
call eax
mov ecx, dword [edi]
mov eax, dword [ecx + 0x20]
lea edx, [ebp + 0x44c]
push edx
push ebx
push edi
call eax
lea ecx, [ebp + 0x200]
xor eax, eax
push ecx
mov ecx, dword [esp + 0x18]
mov dword [ebp + 0x45c], eax
mov dword [ebp + 0x4588], eax
call fcn.00401cf0
mov eax, dword [ebp + 0x458]
mov edx, dword [edi]
push eax
push ebx
mov dword [esp + 0xb0], eax
mov eax, dword [edx + 0x18]
push edi
mov dword [esp + 0x28], 0
mov dword [esp + 0x44], 1
call eax
test eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], 0
jbe 0x4393d1
lea ecx, [esp + 0xfc]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [edi]
lea eax, [esp + 0x3c]
push eax
mov eax, dword [ebp + 0x458]
push ecx
mov ecx, dword [edx + 0x1c]
push eax
push ebx
push edi
call ecx
mov edx, dword [esp + 0x3c]
cmp edx, 0x320
jb 0x4393bc
mov ebx, dword [esp + 0x40]
cmp ebx, 0x258
jb 0x4393b8
xor ecx, ecx
cmp dword [esp + 0x1c], ecx
jbe 0x439306
lea eax, [esp + 0xfc]
jmp 0x4392e4
mov ebx, dword [esp + 0x40]
cmp dword [eax - 4], edx
jne 0x4392f6
cmp dword [eax], ebx
jne 0x4392f6
mov ebx, dword [esp + 0x48]
cmp dword [eax + 8], ebx
je 0x439302
add ecx, 1
add eax, 0x10
cmp ecx, dword [esp + 0x1c]
jb 0x4392e0
mov ebx, dword [esp + 0x40]
cmp ecx, dword [esp + 0x1c]
jne 0x4393b8
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x48]
cmp ecx, 0x16
mov dword [eax - 4], edx
mov dword [eax], ebx
mov dword [eax + 8], ecx
mov dword [eax + 4], 0
jne 0x439354
push 0x20
push ebx
push edx
mov edx, dword [esi + 0x38c]
lea eax, [esi + edx*4 + 0x288]
push str._d_x__d_x__d
push eax
call fcn.00401990
add esp, 0x14
add dword [esi + 0x38c], 1
jmp 0x43937a
mov ecx, dword [esi + 0x388]
push 0x10
push ebx
push edx
lea edx, [esi + ecx*4 + 0x188]
push str._d_x__d_x__d
push edx
call fcn.00401990
add esp, 0x14
add dword [esi + 0x388], 1
mov ecx, dword [esp + 0x38]
add dword [esp + 0x1c], 1
add dword [esp + 0x28], 0x10
mov edx, dword [esp + 0x48]
xor eax, eax
test ecx, ecx
jbe 0x4393a2
cmp edx, dword [esp + eax*4 + 0xa8]
je 0x4393a2
add eax, 1
cmp eax, ecx
jb 0x439392
cmp eax, ecx
jne 0x4393b8
mov eax, dword [esp + 0x38]
mov dword [esp + eax*4 + 0xa8], edx
add eax, 1
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
add eax, 1
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x34], eax
jb 0x439293
add dword [esp + 0x14], 4
add ebx, 1
cmp ebx, dword [esi + 0x184]
mov dword [esp + 0x30], ebx
jb 0x439200
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4393fd
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [edi]
mov ecx, dword [eax + 8]
push edi
call ecx
push str.D3D_Device_Release
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push str.Create_DDraw...
push ebp
mov dword [esp + 0x34], 0
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
push 0
push 0x508cb4
lea edx, [esp + 0x34]
push edx
push 0
call sub.DDRAW.dll_DirectDrawCreateEx
test eax, eax
jne 0x4394ab
lea edx, [esp + 0x5c]
push edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x30]
add esi, 0x390
push esi
lea edx, [esp + 0x54]
mov dword [esp + 0x54], 0x7000
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x5c]
call eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
push str.SUCCEEDED_nAnalyzer_OK.
push ebp
call fcn.00427200
push eax
call fcn.00426f60
add esp, 0xc
mov eax, 1
jmp 0x439568
lea eax, [esp + 0x20]
push 4
push eax
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov ecx, dword [eax]
push 0
push 0
push ecx
mov dword [esp + 0x2c1c8], 7
call fcn.00406520
add esp, 0xc
lea ecx, [esp + 0x20]
call fcn.00401640
jmp 0x439566
lea edx, [esp + 0x14]
push 0x57
push edx
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov esi, eax
lea eax, [esp + 0x24]
push 0x56
push eax
mov dword [esp + 0x2c1c4], 6
call fcn.00427880
mov ecx, eax
call fcn.004276a0
mov ecx, dword [esi]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x2beb8]
push str._s____s__
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea ecx, [esp + 0x24]
call fcn.00401640
mov dword [esp + 0x2c1bc], 0xffffffff
lea ecx, [esp + 0x14]
call fcn.00401640
push 0
lea ecx, [esp + 0x2beb4]
push 0
push ecx
call fcn.00406520
add esp, 0xc
xor eax, eax
mov ecx, dword [esp + 0x2c1b4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2c19c]
xor ecx, esp
call fcn.004752ab
add esp, 0x2c1ac
ret 4