Function at 0x4033b0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xb4
cmp byte [edx + 0x44], 0
push ebx
push esi
push edi
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], ecx
je 0x403903
cmp dword [edx + 0x10], 0
je 0x403903
cmp dword [edx + 0x20], 0
je 0x403903
mov edi, dword [edx + 0x1c]
mov byte [esp + 0x37], 1
mov dword [esp + 0x8c], edi
mov esi, dword [edi]
cmp esi, edi
je 0x403903
mov dword [esp + 0x64], 0x78
mov dword [esp + 0x7c], 0x4460d7
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [esi + 8]
mov ebx, dword [esi + 0x3d0]
mov dword [esp + 0x9c], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x98], eax
cmp ebx, 2
jb 0x4038e5
mov ecx, dword [esi + 0x3d4]
xor edx, edx
lea eax, [ecx - 1]
sub ecx, ebx
div dword [esp + 0x64]
mov dword [esp + 0x60], ecx
mov ecx, dword [0x44da90]
mov eax, dword [esi + edx*8 + 0x10]
mov edx, dword [0x44da94]
mov dword [esp + 0x78], eax
call fcn.00439e00
movsd qword [esp + 0x80], xmm0
lea eax, [ebx - 1]
movd xmm0, eax
xor edx, edx
shr eax, 0x1f
mov ecx, 0x78
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x448c50]
mov eax, dword [esp + 0x60]
div ecx
movsd qword [esp + 0xa0], xmm0
mov eax, dword [esi + edx*8 + 0x10]
mov edx, dword [esp + 0x78]
mov ecx, dword [edx]
sub ecx, dword [eax]
mov edx, dword [edx + 4]
sbb edx, dword [eax + 4]
call fcn.00439db0
divsd xmm0, qword [esp + 0x80]
xor ebx, ebx
mov dword [esp + 0x44], ebx
divsd xmm0, qword [esp + 0xa0]
movsd qword [esp + 0xb0], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x48], xmm0
movsd qword [esp + 0x58], xmm0
movsd qword [esp + 0xb8], xmm0
cmp byte [0x44ed64], bl
je 0x40369b
movlpd qword [esp + 0x68], xmm0
xor eax, eax
mov ecx, dword [esp + 0x6c]
mov edi, eax
mov edx, dword [esp + 0x68]
movlpd qword [esp + 0x50], xmm0
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x50]
movlpd qword [esp + 0xa8], xmm0
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0xac]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x48], eax
mov dword [esp + 0x40], edx
nop word [eax + eax]
add eax, dword [esp + 0x60]
xor edx, edx
div dword [esp + 0x64]
mov eax, dword [esp + 0x3c]
mov edx, dword [esi + edx*8 + 0x10]
add eax, dword [edx + 0x28]
mov dword [esp + 0x3c], eax
adc ecx, dword [edx + 0x2c]
cmp dword [edx + 0xb0], 1
mov dword [esp + 0x38], ecx
jne 0x4035b5
test ebx, ebx
jne 0x40359b
mov ecx, dword [edx + 0x38]
mov dword [esp + 0x68], ecx
mov ecx, dword [edx + 0x3c]
mov dword [esp + 0x74], ecx
mov ecx, dword [edx + 0x38]
mov edi, edx
sub ecx, dword [edx]
mov eax, dword [edx + 0x3c]
sbb eax, dword [edx + 4]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x38]
adc dword [esp + 0x40], eax
inc ebx
mov eax, dword [esp + 0x48]
inc eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x48], eax
cmp eax, dword [esi + 0x3d0]
jb 0x403560
mov edx, ecx
mov ecx, dword [esp + 0x3c]
call fcn.00439db0
mov edi, dword [esp + 0x8c]
mov eax, dword [esp + 0x38]
divsd xmm0, qword [esp + 0x80]
divsd xmm0, qword [esp + 0xa0]
movsd qword [esp + 0x48], xmm0
cmp ebx, 2
jb 0x40363c
mov ecx, dword [eax + 0x38]
sub ecx, dword [esp + 0x68]
mov edx, dword [eax + 0x3c]
sbb edx, dword [esp + 0x74]
call fcn.00439db0
divsd xmm0, qword [esp + 0x80]
lea eax, [ebx - 1]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x448c50]
divsd xmm0, xmm1
movsd qword [esp + 0x58], xmm0
jmp 0x40365a
movsd xmm0, qword [esp + 0x58]
movsd qword [esp + 0xa0], xmm0
movsd qword [esp + 0x58], xmm0
mov dword [esp + 0x44], eax
cmp ebx, 1
jb 0x403697
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
call fcn.00439db0
divsd xmm0, qword [esp + 0x80]
movd xmm1, ebx
cvtdq2pd xmm1, xmm1
shr ebx, 0x1f
addsd xmm1, qword [ebx*8 + 0x448c50]
mov ebx, dword [esp + 0x38]
divsd xmm0, xmm1
movsd qword [esp + 0xb8], xmm0
jmp 0x40369b
mov ebx, dword [esp + 0x44]
cmp byte [esp + 0x37], 0
je 0x4036cd
mov ecx, dword [esp + 0x90]
mov eax, ecx
mov byte [esp + 0x37], 0
cmp dword [ecx + 0x14], 8
jb 0x4036b8
mov eax, dword [ecx]
push dword [esp + 0x94]
push eax
push str._s__d_:
call fcn.00403250
add esp, 0xc
mov edx, dword [esp + 0x78]
mov eax, dword [edx + 0xa8]
sub eax, 1
je 0x4036ef
sub eax, 1
je 0x4036e8
mov ecx, str.Other
jmp 0x4036f4
mov ecx, str.D3D9
jmp 0x4036f4
mov ecx, str.DXGI
movsd xmm0, qword [esp + 0xb0]
sub esp, 8
mulsd xmm0, qword [0x448c30]
mov eax, str._Display
movsd xmm1, qword [esp + 0x60]
movsd qword [esp], xmm0
xorps xmm0, xmm0
comisd xmm1, xmm0
movsd xmm1, qword [esp + 0x50]
cmovbe eax, dword [esp + 0x84]
push eax
comisd xmm1, xmm0
mov eax, str._GPU
cmovbe eax, dword [esp + 0x88]
push eax
push dword [edx + 0x54]
push dword [edx + 0x50]
push ecx
push dword [esp + 0xb4]
push dword [esp + 0xbc]
push str._____016llX___hs_:_SyncInterval_d_Flags_d_CPU_hs_hs_.2lf
call fcn.00403230
movsd xmm0, qword [esp + 0x70]
xorps xmm1, xmm1
add esp, 0x28
comisd xmm0, xmm1
jbe 0x403791
mulsd xmm0, qword [0x448c30]
sub esp, 8
movsd qword [esp], xmm0
push str.__.2lf
call fcn.00403230
add esp, 0xc
xorps xmm1, xmm1
movsd xmm0, qword [esp + 0x58]
comisd xmm0, xmm1
jbe 0x4037ba
mulsd xmm0, qword [0x448c30]
sub esp, 8
movsd qword [esp], xmm0
push str.__.2lf
call fcn.00403230
add esp, 0xc
movsd xmm0, qword [0x448c20]
sub esp, 8
divsd xmm0, qword [esp + 0xb8]
movsd qword [esp], xmm0
push str.ms___.1lf
call fcn.00403230
movsd xmm1, qword [esp + 0x54]
xorps xmm0, xmm0
add esp, 0xc
comisd xmm1, xmm0
jbe 0x403813
movsd xmm0, qword [0x448c20]
sub esp, 8
divsd xmm0, xmm1
movsd qword [esp], xmm0
push str.__.1lf
call fcn.00403230
add esp, 0xc
xorps xmm0, xmm0
movsd xmm1, qword [esp + 0x58]
comisd xmm1, xmm0
jbe 0x403840
movsd xmm0, qword [0x448c20]
sub esp, 8
divsd xmm0, xmm1
movsd qword [esp], xmm0
push str.__.1lf
call fcn.00403230
add esp, 0xc
push str._fps_
call fcn.00403230
movsd xmm0, qword [esp + 0xbc]
add esp, 4
comisd xmm0, xmmword [0x448c08]
jbe 0x40387d
mulsd xmm0, qword [0x448c30]
sub esp, 8
movsd qword [esp], xmm0
push str._latency_.2lfms
call fcn.00403230
add esp, 0xc
test ebx, ebx
je 0x4038d8
mov eax, dword [ebx + 0xac]
dec eax
cmp eax, 7
ja case.0x40388d.7
jmp dword [eax*4 + 0x40390c]
mov eax, str.Hardware:_Legacy_Flip
jmp 0x4038ca
mov eax, str.Hardware:_Legacy_Copy_to_front_buffer
jmp 0x4038ca
mov eax, str.Hardware:_Independent_Flip
jmp 0x4038ca
mov eax, str.Composed:_Flip
jmp 0x4038ca
mov eax, str.Composed:_Copy_with_GPU_GDI
jmp 0x4038ca
mov eax, str.Composed:_Copy_with_CPU_GDI
jmp 0x4038ca
mov eax, str.Hardware_Composed:_Independent_Flip
jmp 0x4038ca
mov eax, str.Other
push eax
push str.__hs
call fcn.00403230
add esp, 8
push 0x4449c4
call fcn.00403250
add esp, 4
mov esi, dword [esi]
cmp esi, edi
jne 0x403420
cmp byte [esp + 0x37], 0
jne 0x403903
push 0x4449c4
call fcn.00403250
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret