Function at 0x45d820
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x542040]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov eax, dword [esi + 8]
cmp eax, 0xfffffff4
ja 0x45dacf
je 0x45d8f8
cmp eax, 0xfffffe5d
je 0x45d884
cmp eax, 0xfffffe5e
je 0x45d884
cmp eax, 0xfffffe62
jne 0x45dad9
push dword [esi + 0xc]
push 0x52b630
call fcn.00407a60
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
test byte [esi + 0x14], 2
je 0x45dba8
cmp dword [0x549340], 0
je 0x45d8af
push 0
push str.dblclickUpdate
mov ecx, 0x5492d0
call fcn.004347b0
mov dword [0x549300], eax
jmp 0x45d8b4
mov eax, dword [0x549300]
test eax, eax
jne 0x45dba8
push dword [esi + 0x10]
mov ecx, 0x545fdc
call fcn.00434a40
mov ecx, dword [esi + 0x10]
cmp dword [0x54a0a0], ecx
je 0x45dba8
mov dword [0x54a0a0], ecx
mov ecx, eax
call fcn.0045dc50
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
mov edx, dword [esi]
mov dword [ebp - 0x2c], edx
test edx, edx
je 0x45d948
movzx eax, dl
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
xor ecx, eax
mov eax, edx
shr eax, 0x10
movzx eax, al
imul ecx, ecx, 0x1000193
shr edx, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00474d60
mov eax, dword [esi + 0xc]
sub eax, 1
je 0x45dab9
sub eax, 0x10000
je 0x45d980
sub eax, 1
jne 0x45dba8
push ecx
push esi
push ecx
call fcn.0045d320
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
push dword [esi + 0x24]
mov ecx, 0x545fdc
call fcn.00434a40
mov ebx, eax
call fcn.00452ad0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 4]
test byte [esi + 0x28], 1
mov dword [ebp - 0x3c], eax
mov ecx, dword [eax]
mov edi, dword [eax + 0x40]
mov dword [ebp - 0x2c], ecx
je 0x45d9b5
mov ecx, dword [eax + 0x64]
mov edi, dword [eax + 0x44]
mov dword [ebp - 0x2c], ecx
mov eax, dword [eax + 0x4c]
mov edx, dword [0x5484d4]
mov dword [ebp - 0x30], eax
movzx eax, dh
lea ecx, [eax + eax*4]
movzx eax, byte [0x5484d6]
lea ecx, [ecx + eax*2]
movzx eax, dl
add eax, ecx
mov edx, 0x400
cmp edx, eax
sbb ecx, ecx
and ecx, 0x280a57
add ecx, 0xd78c3f
cmp edx, eax
mov dword [ebp - 0x38], ecx
sbb eax, eax
and eax, 0x151b1c
add eax, 0xe9e9e9
mov dword [ebp - 0x34], eax
test ebx, ebx
je 0x45da6f
push ebx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x45da32
mov eax, dword [0x5482c4]
test eax, eax
je 0x45da2b
cmp dword [eax], ebx
jne 0x45da2b
cmp dword [esi + 0x30], 0xff
je 0x45da2b
mov ecx, ebx
call fcn.0045dbc0
mov edi, 0xff
jmp 0x45da6f
push ebx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x45da42
mov edi, dword [ebp - 0x30]
jmp 0x45da6f
push 3
push ebx
call dword [sym.imp.USER32.dll_GetAncestor]
cmp eax, dword [0x5480b4]
je 0x45da64
push 0xfffffffffffffff8
push ebx
call dword [sym.imp.USER32.dll_GetWindowLongW]
cmp eax, dword [0x5480b4]
jne 0x45da6f
test byte [esi + 0x28], 0x11
mov edi, dword [ebp - 0x34]
cmove edi, dword [ebp - 0x38]
mov eax, dword [ebp - 0x2c]
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x28]
and al, 0x11
mov dword [esi + 0x30], edi
cmp al, 1
jne 0x45da9b
mov ecx, dword [ebp - 0x3c]
mov eax, 0x88
mov edx, 0xaadcdc
cmp dword [ecx + 0xbc], 0
cmovne eax, edx
mov dword [esi + 0x30], eax
xor eax, eax
mov ecx, 0x10
cmp dword [esi + 0x1c], eax
cmovg eax, ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
mov eax, 0x30
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
cmp eax, 0xfffffffd
je 0x45daf6
cmp eax, 0xfffffffe
je 0x45daf6
push esi
push dword [ebp + 8]
push edx
push ecx
call dword [sym.imp.USER32.dll_DefWindowProcW]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
cmp dword [0x549340], 0
je 0x45db17
push 0
push str.dblclickUpdate
mov ecx, 0x5492d0
call fcn.004347b0
mov dword [0x549300], eax
jmp 0x45db1c
mov eax, dword [0x549300]
mov ecx, dword [esi + 8]
test eax, eax
setne al
cmp ecx, 0xfffffffd
jne 0x45db2d
test al, al
jne 0x45db36
cmp ecx, 0xfffffffe
jne 0x45dba8
test al, al
jne 0x45dba8
lea eax, [ebp - 0x18]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x18], xmm0
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x18]
push eax
push dword [esi]
call dword [sym.imp.USER32.dll_ScreenToClient]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
lea eax, [ebp - 0x18]
push eax
push 0
push 0x1111
push dword [esi]
call ebx
mov edi, eax
test edi, edi
je 0x45dba8
cmp dword [0x54a0a0], edi
je 0x45dba8
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], edi
push eax
push 1
push 0x1104
push dword [esi]
call ebx
push dword [ebp - 0x14]
lea eax, [ebp - 0x28]
push dword [ebp - 0x18]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x45dba8
push edi
push 9
push 0x110b
push dword [esi]
call ebx
mov ecx, dword [ebp - 8]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004dadd7
mov esp, ebp
pop ebp
ret