Function at 0x41726b
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 0x43a903
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xd8
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 dword [ebp - 0xe0], esi
mov ecx, dword [ebx + 8]
mov dword [ebp - 0xa0], ecx
movzx eax, word [ecx + 0x28]
add eax, 0xffffffc1
cmp eax, 0xee
ja case.0x4168cb.64
movzx eax, byte [eax + 0x417370]
jmp dword [eax*4 + 0x41735c]
xor eax, eax
mov dword [ebp - 0x98], str.CompositionSurfaceLuid
cmp byte [ecx + 0x2a], al
xorps xmm0, xmm0
push ecx
setne al
mov dword [ebp - 0x84], str.PresentCount
movups xmmword [ebp - 0x94], xmm0
mov dword [ebp - 0x70], str.BindId
movups xmmword [ebp - 0x80], xmm0
lea eax, [eax*2 + 3]
mov dword [ebp - 0x5c], str.DestWidth
push eax
lea eax, [ebp - 0x98]
mov dword [ebp - 0x48], str.DestHeight
push eax
push ecx
mov ecx, esi
movups xmmword [ebp - 0x6c], xmm0
movups xmmword [ebp - 0x58], xmm0
movups xmmword [ebp - 0x44], xmm0
call fcn.0041d550
push dword [ebp - 0x90]
lea eax, [ebp - 0xb0]
xorps xmm0, xmm0
push dword [ebp - 0x94]
movlpd qword [ebp - 0xb0], xmm0
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0xb8]
xorps xmm0, xmm0
movlpd qword [ebp - 0xb8], xmm0
push dword [ebp - 0x7c]
push dword [ebp - 0x80]
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0xc0]
xorps xmm0, xmm0
movlpd qword [ebp - 0xc0], xmm0
push dword [ebp - 0x68]
push dword [ebp - 0x6c]
push eax
call fcn.00422540
xorps xmm0, xmm0
add esp, 0xc
movlpd qword [ebp - 0xa8], xmm0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xa4], 0
mov dword [ebp - 4], 0
or esi, 0xffffffff
push dword [ebp - 0xa0]
mov ecx, dword [ebp - 0xe0]
lea eax, [ebp - 0xe8]
push eax
call fcn.00418c60
mov ecx, dword [eax]
mov edi, dword [eax + 4]
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0xa8], ecx
mov ecx, dword [ebp - 0xa4]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [ebp - 0x9c], ecx
mov dword [ebp - 0xa4], edi
test ecx, ecx
je 0x416a31
mov eax, esi
lock xadd dword [ecx + 4], eax
jne 0x416a31
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x9c]
mov eax, esi
lock xadd dword [ecx + 8], eax
jne 0x416a31
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xe4]
mov dword [ebp - 0x9c], ecx
test ecx, ecx
je 0x416a62
mov eax, esi
lock xadd dword [ecx + 4], eax
jne 0x416a62
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x9c]
mov eax, esi
lock xadd dword [ecx + 8], eax
jne 0x416a62
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xdc]
test eax, eax
je 0x416c7b
cmp byte [eax + 0xbc], 0
je 0x416adc
test edi, edi
je 0x416a81
lock inc dword [edi + 4]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edi
mov ecx, dword [ebp - 0xe0]
mov byte [ebp - 4], 1
mov byte [eax + 0xc1], 1
lea eax, [ebp - 0x28]
push eax
call fcn.00418620
mov byte [ebp - 4], 0
mov edi, dword [ebp - 0x24]
test edi, edi
je 0x4169c4
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x4169c4
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, esi
lock xadd dword [edi + 8], eax
jne 0x4169c4
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp 0x4169c4
mov dword [eax + 0xac], 4
mov byte [eax + 0xbc], 1
mov eax, dword [ebp - 0xa0]
cmp byte [eax + 0x2a], 1
jb 0x416b5b
push dword [ebp - 0x54]
lea eax, [ebp - 0xa0]
mov dword [ebp - 0xa0], 0
push dword [ebp - 0x58]
push eax
call fcn.00422540
mov ecx, dword [ebp - 0xdc]
add esp, 0xc
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0xa0], 0
push dword [ebp - 0x40]
mov dword [ecx + 0x9c], eax
lea eax, [ebp - 0xa0]
push dword [ebp - 0x44]
push eax
call fcn.00422540
mov ecx, dword [ebp - 0xdc]
add esp, 0xc
mov eax, dword [ebp - 0xa0]
mov dword [ecx + 0xa0], eax
mov eax, dword [ebp - 0xc0]
mov ecx, dword [ebp - 0xe0]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0xb8]
lea ecx, [ecx + 0x174]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0xb0]
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0xc4], eax
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0xe8]
push eax
call fcn.0041b660
mov eax, dword [eax]
test edi, edi
je 0x416bce
lea ecx, [edi + 4]
lock inc dword [ecx]
mov edx, dword [eax + 0x24]
mov ecx, dword [ebp - 0xdc]
mov dword [eax + 0x20], ecx
mov dword [ebp - 0x9c], edx
mov dword [eax + 0x24], edi
test edx, edx
je 0x416c10
mov eax, esi
lock xadd dword [edx + 4], eax
jne 0x416c10
mov eax, dword [edx]
mov ecx, edx
call dword [eax]
mov ecx, dword [ebp - 0x9c]
mov eax, esi
lock xadd dword [ecx + 8], eax
jne 0x416c0a
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xb0]
mov dword [ecx + 0x58], eax
mov eax, dword [ebp - 0xac]
mov dword [ecx + 0x5c], eax
mov eax, dword [ebp - 0xb8]
mov dword [ecx + 0x60], eax
mov eax, dword [ebp - 0xb4]
mov dword [ecx + 0x64], eax
mov eax, dword [ebp - 0xc0]
mov dword [ecx + 0x68], eax
mov eax, dword [ebp - 0xbc]
mov dword [ecx + 0x6c], eax
test edi, edi
je case.0x4168cb.64
mov eax, esi
lea ecx, [edi + 4]
lock xadd dword [ecx], eax
jne case.0x4168cb.64
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne case.0x4168cb.64
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp case.0x4168cb.64
test edi, edi
je case.0x4168cb.64
mov eax, esi
lock xadd dword [edi + 4], eax
jne case.0x4168cb.64
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne case.0x4168cb.64
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp case.0x4168cb.64
push ecx
push 4
lea eax, [ebp - 0x88]
mov dword [ebp - 0x88], str.CompositionSurfaceLuid
xorps xmm0, xmm0
mov dword [ebp - 0x74], str.PresentCount
push eax
push ecx
mov ecx, esi
mov dword [ebp - 0x60], str.BindId
movups xmmword [ebp - 0x84], xmm0
mov dword [ebp - 0x4c], str.NewState
movups xmmword [ebp - 0x70], xmm0
movups xmmword [ebp - 0x5c], xmm0
movups xmmword [ebp - 0x48], xmm0
call fcn.0041d550
push dword [ebp - 0x80]
lea eax, [ebp - 0xc0]
xorps xmm0, xmm0
push dword [ebp - 0x84]
movlpd qword [ebp - 0xc0], xmm0
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0xb4], 0
lea eax, [ebp - 0xb4]
push dword [ebp - 0x6c]
push dword [ebp - 0x70]
push eax
call fcn.00422540
add esp, 0xc
lea eax, [ebp - 0x28]
xorps xmm0, xmm0
movlpd qword [ebp - 0x28], xmm0
push dword [ebp - 0x58]
push dword [ebp - 0x5c]
push eax
call fcn.00422540
add esp, 0xc
mov dword [ebp - 0x9c], 0
lea eax, [ebp - 0x9c]
push dword [ebp - 0x44]
push dword [ebp - 0x48]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x28]
lea edi, [esi + 0x174]
mov ecx, dword [ebp - 0x24]
add esp, 0xc
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0xc8], eax
lea eax, [ebp - 0xd8]
mov dword [ebp - 0xd4], ecx
mov ecx, dword [ebp - 0xbc]
push eax
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc4], ecx
mov dword [ebp - 0xac], edi
call fcn.004167f0
push eax
lea eax, [ebp - 0xd8]
mov ecx, edi
push eax
lea eax, [ebp - 0xe8]
push eax
call fcn.0041cf60
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x416de8
mov ecx, dword [edi + 4]
cmp ecx, dword [esi + 0x178]
je case.0x4168cb.64
mov eax, dword [ecx + 0x24]
xorps xmm0, xmm0
movlpd qword [ebp - 0xa8], xmm0
test eax, eax
je 0x416e0a
lock inc dword [eax + 4]
mov edi, dword [ecx + 0x20]
mov edx, dword [ecx + 0x24]
mov dword [ebp - 0xb4], edi
mov dword [ebp - 0xa8], edi
mov dword [ebp - 0xdc], edx
mov dword [ebp - 0xa4], edx
mov dword [ebp - 4], 2
mov esi, 0xffffffff
mov eax, dword [ebp - 0x9c]
sub eax, 3
je 0x416ff8
sub eax, 1
je 0x416ed0
sub eax, 2
jne 0x4171a5
mov dword [edi + 0x58], eax
mov dword [edi + 0x5c], eax
mov dword [edi + 0x60], eax
mov dword [edi + 0x64], eax
mov dword [edi + 0x68], eax
mov dword [edi + 0x6c], eax
lea eax, [ebp - 0x9c]
push ecx
mov ecx, dword [ebp - 0xac]
push eax
call fcn.0041a610
cmp byte [edi + 0xbe], 0
jne 0x416ea0
cmp dword [edi + 0xb0], 0
je 0x416e94
mov eax, dword [edi + 0x38]
or eax, dword [edi + 0x3c]
jne 0x416ea0
mov dword [edi + 0xb0], 2
jmp 0x416ead
cmp dword [edi + 0xac], 4
je 0x4171a5
mov ecx, dword [ebp - 0xe0]
lea eax, [ebp - 0xa8]
push eax
call fcn.00418620
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0xdc], ecx
jmp 0x4171ab
cmp dword [edi + 0xb0], 0
jne 0x416f11
test byte [edi + 0x54], 2
je 0x416f11
mov dword [edi + 0xb0], 2
lea eax, [ebp - 0xa8]
mov edi, dword [ebp - 0xe0]
mov ecx, edi
push eax
call fcn.00417990
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0xdc], eax
jmp 0x416f1d
mov ecx, dword [ebp - 0xb4]
mov edi, dword [ebp - 0xe0]
mov eax, dword [ecx + 0x88]
add ecx, 0x88
mov dword [ebp - 0xac], ecx
or eax, dword [ecx + 4]
je 0x4171a5
add edi, 0x1f4
push ecx
mov dword [ebp - 0x9c], edi
call fcn.0040aa70
push eax
push dword [ebp - 0xac]
mov dword [ebp - 0xa0], eax
mov ecx, edi
lea eax, [ebp - 0xe8]
push eax
call fcn.0041cad0
mov edi, dword [eax + 4]
test edi, edi
je 0x4171a5
mov edx, dword [ebp - 0x9c]
mov ecx, dword [edx + 0x18]
and ecx, dword [ebp - 0xa0]
mov eax, dword [edx + 0xc]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], edi
jne 0x416fa2
cmp eax, edi
jne 0x416f9a
mov eax, dword [edx + 4]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x416faa
mov eax, dword [edi + 4]
mov dword [ecx + 4], eax
jmp 0x416faa
cmp eax, edi
jne 0x416faa
mov eax, dword [edi]
mov dword [ecx], eax
mov ecx, dword [edi]
dec dword [edx + 8]
mov eax, dword [edi + 4]
mov dword [eax], ecx
mov eax, dword [edi + 4]
mov dword [ecx + 4], eax
mov ecx, dword [edi + 0x14]
mov dword [ebp - 0xac], ecx
test ecx, ecx
je 0x416fe8
mov eax, esi
lock xadd dword [ecx + 4], eax
jne 0x416fe8
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0xac]
mov eax, esi
lock xadd dword [ecx + 8], eax
jne 0x416fe8
mov eax, dword [ecx]
call dword [eax + 4]
push 0x18
push edi
call fcn.00421145
add esp, 8
jmp 0x4171a5
push ecx
push 1
lea eax, [ebp - 0x30]
mov byte [edi + 0xbe], 1
mov edi, dword [ebp - 0xe0]
mov ecx, edi
push eax
push dword [ebp - 0xa0]
mov dword [ebp - 0x30], str.IndependentFlip
movups xmmword [ebp - 0x2c], xmm0
call fcn.0041d550
push dword [ebp - 0x28]
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x9c], 0
push dword [ebp - 0x2c]
push eax
call fcn.00422540
mov eax, dword [ebp - 0xb4]
add esp, 0xc
cmp dword [ebp - 0x9c], 0
je 0x417065
cmp dword [eax + 0xac], 4
jne 0x417065
mov dword [eax + 0xac], 3
lea ecx, [eax + 0x88]
mov eax, dword [ecx]
or eax, dword [ecx + 4]
mov dword [ebp - 0x9c], ecx
je 0x4171a5
push ecx
call fcn.0040aa70
push eax
push dword [ebp - 0x9c]
lea eax, [ebp - 0xe8]
push eax
lea ecx, [edi + 0x1f4]
call fcn.0041cad0
mov edx, dword [eax + 4]
lea eax, [edi + 0x1f4]
test edx, edx
jne 0x4170ab
mov edx, dword [eax + 4]
cmp edx, dword [edi + 0x1f8]
jne 0x4170df
lea ecx, [ebp - 0xa8]
push ecx
push dword [ebp - 0x9c]
lea ecx, [ebp - 0xe8]
push ecx
mov ecx, eax
call fcn.0041a410
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0xdc], ecx
jmp 0x4171ab
mov ecx, dword [ebp - 0xb4]
cmp dword [edx + 0x10], ecx
je 0x4171a5
mov eax, dword [edx + 0x14]
xorps xmm0, xmm0
movlpd qword [ebp - 0xc0], xmm0
test eax, eax
je 0x417104
lock inc dword [eax + 4]
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0xc0], eax
mov eax, dword [edx + 0x14]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xdc]
test eax, eax
je 0x41712a
lock inc dword [eax + 4]
mov dword [edx + 0x10], ecx
mov ecx, dword [edx + 0x14]
mov dword [ebp - 0xac], ecx
mov dword [edx + 0x14], eax
test ecx, ecx
je 0x41715e
mov eax, esi
lock xadd dword [ecx + 4], eax
jne 0x41715e
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0xac]
mov eax, esi
lock xadd dword [ecx + 8], eax
jne 0x41715e
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x9c]
mov ecx, edi
mov dword [eax + 0xb0], 2
lea eax, [ebp - 0xc0]
push eax
call fcn.00417990
mov edi, dword [ebp - 0xbc]
test edi, edi
je 0x4171a5
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x4171a5
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, esi
lock xadd dword [edi + 8], eax
jne 0x4171a5
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov ecx, dword [ebp - 0xdc]
test ecx, ecx
je case.0x4168cb.64
mov eax, esi
lock xadd dword [ecx + 4], eax
jne case.0x4168cb.64
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0xdc]
lock xadd dword [ecx + 8], esi
dec esi
jne case.0x4168cb.64
mov eax, dword [ecx]
call dword [eax + 4]
jmp case.0x4168cb.64
push ecx
push 1
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], str.DeviceType
push eax
xorps xmm0, xmm0
push ecx
mov ecx, esi
movups xmmword [ebp - 0x2c], xmm0
call fcn.0041d550
push dword [ebp - 0x28]
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x9c], 0
push dword [ebp - 0x2c]
push eax
call fcn.00422540
mov eax, dword [ebp - 0x9c]
add esp, 0xc
sub eax, 0
je 0x417244
sub eax, 1
je 0x417238
mov dword [esi + 0x2e0], 1
jmp 0x41724e
mov dword [esi + 0x2e0], 3
jmp 0x41724e
mov dword [esi + 0x2e0], 2
mov ecx, dword [ebp - 0xa0]
mov eax, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x14]
mov dword [esi + 0x2d8], eax
mov dword [esi + 0x2dc], ecx
jmp case.0x4168cb.64
mov edx, dword [ecx + 0xc]
lea eax, [ecx + 0xc]
mov dword [ebp - 0x9c], eax
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0xac], edx
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
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 + 0x2e4]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0xe8]
push eax
call fcn.0041cb40
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x4172dd
mov ecx, dword [esi + 0x2e8]
mov eax, dword [esi + 0x2d8]
mov edx, dword [esi + 0x2dc]
cmp ecx, dword [esi + 0x2e8]
jne 0x41731e
mov dword [ebp - 0x30], eax
lea ecx, [esi + 0x2e4]
mov eax, dword [esi + 0x2e0]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x30]
push eax
push dword [ebp - 0x9c]
lea eax, [ebp - 0xe8]
mov dword [ebp - 0x2c], edx
push eax
call fcn.0041a6b0
jmp case.0x4168cb.64
cmp dword [ecx + 0x14], edx
ja case.0x4168cb.64
jb 0x41732a
cmp dword [ecx + 0x10], eax
jae case.0x4168cb.64
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], edx
mov eax, dword [esi + 0x2e0]
mov dword [ecx + 0x18], eax
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