Function at 0x415220
Capabilities:
Hash data using fnv

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43a8ab
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x98
mov eax, dword [0x44d014]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [ebx + 8]
mov dword [ebp - 0x84], edi
movzx eax, word [edi + 0x28]
mov ecx, eax
mov edx, eax
cmp ecx, 0x111
ja 0x415a9b
je 0x4163cc
sub eax, 0x11
cmp eax, 0xf9
ja case.0x41529b.18
movzx eax, byte [eax + 0x4165f0]
jmp dword [eax*4 + 0x4165b8]
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.FlipInterval
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.MMIOFlip
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x74]
mov dword [ebp - 0x74], 0
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x8c], 0
lea eax, [ebp - 0x8c]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
mov ecx, esi
cmp dword [ebp - 0x8c], 0
setne al
push 0
movzx eax, al
push eax
push dword [ebp - 0x74]
push edi
call fcn.004140e0
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.SubmitSequence
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.FlipInterval
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x8c]
mov dword [ebp - 0x8c], 0
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x74], 0
lea eax, [ebp - 0x74]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
mov ecx, esi
movlpd qword [ebp - 0x80], xmm0
push dword [ebp - 0x8c]
push eax
call fcn.004148f0
mov ecx, dword [ebp - 0x80]
test ecx, ecx
je 0x4153b2
mov eax, dword [ebp - 0x74]
mov dword [ecx + 0xac], 3
mov dword [ecx + 0x50], eax
mov edi, dword [ebp - 0x7c]
test edi, edi
je case.0x415ae1.36
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne case.0x415ae1.36
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne case.0x415ae1.36
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp case.0x415ae1.36
push 1
push 1
push 0xffffffffffffffff
push edi
mov ecx, esi
call fcn.004140e0
jmp case.0x415ae1.36
push ecx
push 4
xorps xmm0, xmm0
mov dword [ebp - 0x68], str.PacketType
lea eax, [ebp - 0x68]
mov dword [ebp - 0x54], str.SubmitSequence
push eax
push edi
mov ecx, esi
mov dword [ebp - 0x40], str.hContext
movups xmmword [ebp - 0x64], xmm0
mov dword [ebp - 0x2c], str.bPresent
movups xmmword [ebp - 0x50], xmm0
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x60]
lea eax, [ebp - 0x74]
mov dword [ebp - 0x74], 0
push dword [ebp - 0x64]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x4c]
push dword [ebp - 0x50]
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
movlpd qword [ebp - 0x80], xmm0
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x8c], 0
lea eax, [ebp - 0x8c]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
cmp dword [ebp - 0x8c], 0
setne al
movzx eax, al
push 0
push eax
push dword [ebp - 0x74]
push dword [ebp - 0x84]
mov ecx, esi
push dword [ebp - 0x7c]
push dword [ebp - 0x80]
push edi
call fcn.00414370
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.hContext
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.SubmitSequence
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
push 0
push 0
push 4
jmp 0x4154c0
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.hContext
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.SubmitSequence
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
mov ecx, esi
push dword [ebp - 0x84]
push dword [ebp - 0x7c]
push dword [ebp - 0x80]
push dword [edi + 0x14]
push dword [edi + 0x10]
call fcn.004146f0
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.FlipSubmitSequence
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.Flags
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x8c]
mov dword [ebp - 0x8c], 0
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
mov ecx, esi
push dword [ebp - 0x84]
push dword [ebp - 0x8c]
push dword [edi + 0x14]
push dword [edi + 0x10]
call fcn.00414a20
jmp case.0x415ae1.36
mov al, byte [edi + 0x2a]
xorps xmm0, xmm0
cmp al, 2
mov byte [ebp - 0x99], al
push ecx
sbb eax, eax
mov dword [ebp - 0x40], str.FlipSubmitSequence
add eax, 2
mov dword [ebp - 0x2c], str.FlipEntryStatusAfterFlip
push eax
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
push edi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x90]
xorps xmm0, xmm0
mov ecx, esi
movlpd qword [ebp - 0x90], xmm0
push dword [ebp - 0x6c]
push eax
call fcn.004148f0
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x415753
push dword [edi + 0x14]
lea ecx, [esi + 0x234]
push dword [edi + 0x10]
push eax
call fcn.0041e9b0
cmp byte [ebp - 0x99], 2
jb 0x415753
push dword [ebp - 0x24]
lea eax, [ebp - 0x84]
mov dword [ebp - 0x84], 0
push dword [ebp - 0x28]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x84]
add esp, 0xc
cmp eax, 5
je 0x415753
mov edx, dword [ebp - 0x90]
mov byte [edx + 0xb8], 1
cmp eax, 0xf
je 0x415753
mov dword [edx + 0xb0], 1
cmp eax, 0xb
jne 0x41573c
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], ecx
cmp dword [edx + 0xac], 1
jne 0x415753
lea eax, [ebp - 0x90]
mov ecx, esi
push eax
call fcn.00418620
mov edi, dword [ebp - 0x8c]
jmp 0x4153b5
push ecx
push 1
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], str.FlipFenceId
push eax
xorps xmm0, xmm0
mov ecx, esi
push edi
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x24]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x28]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
mov eax, dword [ebp - 0x80]
add esp, 0xc
mov ecx, dword [ebp - 0x7c]
or eax, ecx
je case.0x415ae1.36
push ecx
push dword [edi + 0x14]
mov ecx, esi
push dword [edi + 0x10]
call fcn.00414b10
jmp case.0x415ae1.36
mov edx, dword [edi + 8]
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x84], edx
imul eax, eax, 0x1000193
xor ecx, eax
mov eax, edx
shr eax, 0x10
imul ecx, ecx, 0x1000193
movzx eax, al
shr edx, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [esi + 0x114]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [ebp - 0x84]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.0041cb40
mov ecx, dword [eax + 4]
mov dword [ebp - 0x84], ecx
test ecx, ecx
jne 0x41582b
mov ecx, dword [esi + 0x118]
mov dword [ebp - 0x84], ecx
cmp ecx, dword [esi + 0x118]
je case.0x415ae1.36
mov eax, dword [ecx + 0x10]
xorps xmm0, xmm0
movlpd qword [ebp - 0x80], xmm0
test eax, eax
je 0x41584a
lock inc dword [eax + 4]
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x8c], edx
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 4], 2
mov byte [edx + 0xbb], 1
mov eax, dword [edx + 0x88]
or eax, dword [edx + 0x8c]
jne 0x4158cd
push ecx
push 1
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], str.hWindow
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x24]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x28]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
mov edx, dword [ebp - 0x8c]
add esp, 0xc
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x6c]
mov dword [edx + 0x88], eax
mov dword [edx + 0x8c], ecx
mov ecx, dword [ebp - 0x84]
cmp dword [edx + 0xa8], 0
je 0x4158de
mov eax, dword [edx + 0xc]
cmp eax, dword [edi + 8]
je 0x4158f7
push ecx
lea eax, [ebp - 0x84]
push eax
lea ecx, [esi + 0x114]
call fcn.0041a340
mov edx, dword [ebp - 0x8c]
cmp dword [edx + 0xac], 2
jne 0x415918
mov eax, dword [edx + 0x38]
or eax, dword [edx + 0x3c]
je 0x415918
lea eax, [ebp - 0x80]
mov ecx, esi
push eax
call fcn.00418620
jmp 0x4153b2
mov edi, dword [ebp - 0x74]
jmp 0x4153b5
push ecx
push 3
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], str.Token
xorps xmm0, xmm0
mov dword [ebp - 0x40], str.Model
push eax
push edi
mov ecx, esi
mov dword [ebp - 0x2c], str.TokenData
movups xmmword [ebp - 0x50], xmm0
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x4c]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x50]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
movlpd qword [ebp - 0x70], xmm0
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x84]
add esp, 0xc
cmp eax, 1
je case.0x415ae1.36
push eax
push dword [ebp - 0x6c]
mov ecx, esi
push dword [ebp - 0x70]
push dword [ebp - 0x7c]
push dword [ebp - 0x80]
push edi
call fcn.00414be0
jmp case.0x415ae1.36
push ecx
push 1
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], str.Token
push eax
xorps xmm0, xmm0
mov ecx, esi
push edi
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x24]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x28]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov ecx, esi
push dword [ebp - 0x6c]
push dword [ebp - 0x70]
push edi
call fcn.004150f0
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.hwnd
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.bRedirectedPresent
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
mov ecx, esi
cmp dword [ebp - 0x84], 0
setne al
movzx eax, al
push eax
push dword [ebp - 0x6c]
push dword [ebp - 0x70]
push edi
call fcn.00413f10
jmp case.0x415ae1.36
sub eax, 0x17e
je 0x4163cc
sub eax, 0x77
je 0x41638a
cmp byte [esi + 0x23], 0
je case.0x415ae1.36
cmp ecx, 0x1a6
ja 0x41622d
je 0x416239
sub ecx, 0x1b
cmp ecx, 0xdf
ja case.0x415ae1.36
movzx eax, byte [ecx + 0x416710]
jmp dword [eax*4 + 0x4166ec]
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.pDxgAdapter
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.hDevice
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
movlpd qword [ebp - 0x80], xmm0
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x70]
add esp, 0xc
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp - 0x7c]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], ecx
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x98]
push eax
lea ecx, [esi + 0x254]
call fcn.0041eec0
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.pDxgAdapter
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.hDevice
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
movlpd qword [ebp - 0x70], xmm0
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
mov edx, dword [ebp - 0x70]
add esp, 0xc
mov edi, dword [ebp - 0x6c]
mov eax, edx
or eax, edi
je case.0x415ae1.36
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x7c]
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x7c], edi
jmp 0x415b5c
push ecx
push 1
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], str.hDevice
push eax
xorps xmm0, xmm0
mov ecx, esi
push edi
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x24]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x28]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
mov eax, dword [ebp - 0x70]
add esp, 0xc
mov ecx, dword [ebp - 0x6c]
add esi, 0x254
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x70]
mov dword [ebp - 0x6c], ecx
push eax
call fcn.0040aa70
mov edi, eax
mov ecx, esi
push edi
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.0041cad0
mov edx, dword [eax + 4]
test edx, edx
je case.0x415ae1.36
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0xc]
and ecx, edi
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], edx
jne 0x415c95
cmp eax, edx
jne 0x415c8d
mov eax, dword [esi + 4]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x415c9d
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
jmp 0x415c9d
cmp eax, edx
jne 0x415c9d
mov eax, dword [edx]
mov dword [ecx], eax
mov ecx, dword [edx]
dec dword [esi + 8]
mov eax, dword [edx + 4]
push 0x18
push edx
mov dword [eax], ecx
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
call fcn.00421145
add esp, 8
jmp case.0x415ae1.36
push ecx
push 3
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], str.hContext
xorps xmm0, xmm0
mov dword [ebp - 0x40], str.hDevice
push eax
push edi
mov ecx, esi
mov dword [ebp - 0x2c], str.NodeOrdinal
movups xmmword [ebp - 0x50], xmm0
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x4c]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x50]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
movlpd qword [ebp - 0x70], xmm0
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
cmp word [edi + 0x28], 0x20
jne 0x415d4e
xor eax, eax
jmp 0x415d51
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0x6c]
lea edi, [esi + 0x234]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x70]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp - 0x7c]
push eax
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x74], edi
call fcn.0040aa70
push eax
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0xa8]
push eax
lea ecx, [edi + 0x20]
call fcn.0041cad0
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x415db1
mov ecx, dword [edi + 0x24]
cmp ecx, dword [edi + 0x24]
je case.0x415ae1.36
mov eax, dword [ecx + 0x10]
xorps xmm0, xmm0
mov ecx, dword [ecx + 0x14]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], ecx
movq qword [ebp - 0x24], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
lea eax, [ebp - 0x80]
mov dword [ebp - 4], 4
push eax
lea eax, [ebp - 0xa8]
mov ecx, edi
push eax
call fcn.0041f710
mov ecx, dword [eax]
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x84]
add ecx, 0x10
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.0041f0a0
lea ecx, [ebp - 0x30]
mov esi, dword [eax]
add esi, 0xc
mov dword [ebp - 4], 0xffffffff
call fcn.0040cde0
lea eax, [ebp - 0x30]
xorps xmm0, xmm0
push eax
lea eax, [ebp - 0x98]
movq qword [ebp - 0x20], xmm0
push eax
lea eax, [ebp - 0xa8]
push eax
lea ecx, [edi + 0x40]
movups xmmword [ebp - 0x30], xmm0
call fcn.0041f2e0
mov edi, dword [eax]
mov eax, dword [ebp - 0x8c]
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], esi
mov dword [edi + 0x18], 0
mov dword [edi + 0x1c], 0
mov word [edi + 0x20], 0
test eax, eax
je case.0x415ae1.36
push 0x50
mov dword [ebp - 0x84], eax
lea eax, [ebp - 0x68]
push 0
push eax
call fcn.00422ca0
mov esi, dword [ebp - 0x74]
lea eax, [ebp - 0x68]
add esp, 0xc
lea ecx, [esi + 0x60]
push eax
lea eax, [ebp - 0x84]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.0041f4e0
mov eax, dword [esi + 0xa0]
cmp byte [eax + 0x24], 0
je 0x415edd
mov eax, dword [edi + 0x14]
cmp byte [eax + 0x14], 0
je 0x415edd
mov eax, dword [ebp - 0x98]
add eax, 0x10
mov dword [edi + 0x10], eax
jmp case.0x415ae1.36
mov eax, dword [ebp - 0x98]
add eax, 0x38
mov dword [edi + 0x10], eax
jmp case.0x415ae1.36
push ecx
push 1
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], str.hContext
push eax
xorps xmm0, xmm0
mov ecx, esi
push edi
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x24]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x28]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea ecx, [esi + 0x234]
push dword [ebp - 0x6c]
push dword [ebp - 0x70]
call fcn.0041e510
jmp case.0x415ae1.36
push ecx
push 3
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], str.pDxgAdapter
xorps xmm0, xmm0
mov dword [ebp - 0x40], str.NodeOrdinal
push eax
push edi
mov ecx, esi
mov dword [ebp - 0x2c], str.EngineType
movups xmmword [ebp - 0x50], xmm0
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x4c]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x50]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x84]
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x8c], 0
lea eax, [ebp - 0x8c]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x84]
xorps xmm0, xmm0
mov ecx, dword [ebp - 0x6c]
add esp, 0xc
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], ecx
movq qword [ebp - 0x24], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
lea eax, [ebp - 0x98]
mov dword [ebp - 4], 5
push eax
lea eax, [ebp - 0xa8]
push eax
lea ecx, [esi + 0x234]
call fcn.0041f710
mov ecx, dword [eax]
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x84]
add ecx, 0x10
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.0041f0a0
lea ecx, [ebp - 0x30]
mov esi, dword [eax]
call fcn.0040cde0
mov eax, dword [ebp - 0x8c]
cmp eax, 2
je 0x416064
cmp eax, 3
je 0x416064
cmp eax, 4
jne case.0x415ae1.36
mov byte [esi + 0x20], 1
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.hContext
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.ulQueueSubmitSequence
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x8c], 0
lea eax, [ebp - 0x8c]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
cmp dword [ebp - 0x8c], 0
je case.0x415ae1.36
mov eax, dword [edi + 0x10]
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x74], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x70]
push eax
mov dword [ebp - 0x6c], ecx
call fcn.0040aa70
push eax
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0xa8]
push eax
lea ecx, [esi + 0x274]
call fcn.0041cad0
mov eax, dword [eax + 4]
test eax, eax
jne 0x416123
mov eax, dword [esi + 0x278]
cmp eax, dword [esi + 0x278]
je case.0x415ae1.36
push 0
push dword [ebp - 0x84]
add eax, 0x10
push dword [ebp - 0x74]
push dword [ebp - 0x8c]
push eax
call fcn.0041e660
jmp case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.hContext
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.ulQueueSubmitSequence
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x70], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x8c], 0
lea eax, [ebp - 0x8c]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
add esp, 0xc
cmp dword [ebp - 0x8c], 0
je case.0x415ae1.36
mov eax, dword [edi + 0x10]
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x74], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x70]
push eax
mov dword [ebp - 0x6c], ecx
call fcn.0040aa70
push eax
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0xa8]
push eax
lea ecx, [esi + 0x274]
call fcn.0041cad0
mov eax, dword [eax + 4]
test eax, eax
jne 0x416204
mov eax, dword [esi + 0x278]
cmp eax, dword [esi + 0x278]
je case.0x415ae1.36
push dword [ebp - 0x84]
add eax, 0x10
push dword [ebp - 0x74]
push dword [ebp - 0x8c]
push eax
call fcn.0041e740
jmp case.0x415ae1.36
cmp ecx, 0x1a8
jne case.0x415ae1.36
push ecx
push 2
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], str.hContext
xorps xmm0, xmm0
mov dword [ebp - 0x2c], str.ParentDxgHwQueue
push eax
push edi
mov ecx, esi
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
call fcn.0041d550
push dword [ebp - 0x38]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push dword [ebp - 0x3c]
movlpd qword [ebp - 0x80], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
movlpd qword [ebp - 0x70], xmm0
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x70]
lea edi, [esi + 0x274]
mov ecx, dword [ebp - 0x6c]
add esp, 0xc
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x70]
mov dword [ebp - 0x94], ecx
mov ecx, dword [ebp - 0x7c]
push eax
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x84], edi
call fcn.0040aa70
push eax
lea eax, [ebp - 0x70]
mov ecx, edi
push eax
lea eax, [ebp - 0xa8]
push eax
call fcn.0041cad0
mov edi, dword [eax + 4]
test edi, edi
jne 0x4162f1
mov edi, dword [esi + 0x278]
cmp edi, dword [esi + 0x278]
je case.0x415ae1.36
push 0x18
mov byte [edi + 0x20], 1
call fcn.00420ec2
mov esi, eax
add esp, 4
lea eax, [ebp - 0x30]
xorps xmm0, xmm0
mov dword [esi + 0x14], 0
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov ecx, dword [edi + 0x14]
push eax
lea eax, [ebp - 0x98]
movq qword [ebp - 0x20], xmm0
push eax
mov cl, byte [ecx + 0x14]
lea eax, [ebp - 0x70]
mov byte [esi + 0x14], cl
mov ecx, dword [ebp - 0x84]
push eax
movups xmmword [ebp - 0x30], xmm0
call fcn.0041f2e0
mov ecx, dword [eax]
mov eax, dword [edi + 0x10]
mov dword [ecx + 0x10], eax
mov eax, dword [ebp - 0x8c]
mov dword [ecx + 0x18], eax
mov eax, dword [ebp - 0x74]
mov dword [ecx + 0x14], esi
mov dword [ecx + 0x1c], eax
mov word [ecx + 0x20], 0x100
jmp case.0x415ae1.36
push dword [edi + 8]
lea eax, [ebp - 0x80]
xorps xmm0, xmm0
push eax
mov ecx, esi
movlpd qword [ebp - 0x80], xmm0
call fcn.00418bb0
mov dword [ebp - 4], 3
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x4153b2
mov dword [eax + 0xb0], 2
mov ecx, esi
lea eax, [ebp - 0x80]
push eax
call fcn.00418620
jmp 0x4153b2
xorps xmm0, xmm0
mov dword [ebp - 0x68], str.PlaneCount
mov eax, 0x111
mov dword [ebp - 0x40], str.FlipEntryCount
mov dword [ebp - 0x2c], str.FlipSubmitSequence
mov ecx, str.ScannedPhysicalAddress
mov dword [ebp - 0x54], ecx
movups xmmword [ebp - 0x64], xmm0
movups xmmword [ebp - 0x50], xmm0
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x28], xmm0
cmp dx, ax
jne 0x416415
cmp byte [edi + 0x2a], 1
mov eax, str.PresentIdOrPhysicalAddress
cmovb eax, ecx
mov dword [ebp - 0x54], eax
push ecx
push 4
lea eax, [ebp - 0x68]
mov ecx, esi
push eax
push edi
call fcn.0041d550
push dword [ebp - 0x60]
lea eax, [ebp - 0x74]
mov dword [ebp - 0x74], 0
push dword [ebp - 0x64]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x8c], 0
lea eax, [ebp - 0x8c]
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
push eax
call fcn.00422540
add esp, 0xc
cmp dword [ebp - 0x8c], 0
jbe case.0x415ae1.36
xor ecx, ecx
mov byte [ebp - 0x99], 0
xor edx, edx
cmp dword [ebp - 0x74], ecx
jbe 0x4164aa
nop dword [eax]
mov eax, dword [ebp - 0x50]
mov edi, dword [ebp - 0x50]
mov eax, dword [eax + ecx*8]
or eax, dword [edi + ecx*8 + 4]
mov edi, dword [ebp - 0x84]
je 0x41649b
cmp edx, 1
je 0x4164a3
inc edx
inc ecx
cmp ecx, dword [ebp - 0x74]
jb 0x416480
jmp 0x4164aa
mov byte [ebp - 0x99], 1
xor eax, eax
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x8c], eax
jbe case.0x415ae1.36
nop dword [eax + eax]
mov edx, dword [ebp - 0x28]
mov ecx, dword [edx + eax*8]
mov edx, dword [edx + eax*8 + 4]
test edx, edx
jne 0x4164d6
test ecx, ecx
je 0x416588
push edx
lea eax, [ebp - 0x88]
xorps xmm0, xmm0
push eax
mov ecx, esi
movlpd qword [ebp - 0x88], xmm0
call fcn.004148f0
mov dword [ebp - 4], 1
mov edx, dword [ebp - 0x88]
test edx, edx
je 0x416551
cmp byte [ebp - 0x99], 0
je 0x416524
mov eax, dword [edx + 0xac]
cmp eax, 3
je 0x41651a
cmp eax, 4
jne 0x416524
mov dword [edx + 0xac], 8
cmp dword [edx + 0xb0], 1
je 0x416543
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], ecx
mov dword [edx + 0xb0], 1
lea eax, [ebp - 0x88]
mov ecx, esi
push eax
call fcn.00418620
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x84]
test ecx, ecx
je 0x416585
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
jne 0x416585
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x84]
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x416585
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x74]
inc eax
mov dword [ebp - 0x74], eax
cmp eax, dword [ebp - 0x8c]
jb 0x4164c0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00420eb4
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4