Function at 0x406ab0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6c
mov eax, dword [0x439014]
xor eax, esp
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
push ebx
mov ebx, ecx
movzx eax, dl
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
push esi
mov esi, dword [ebp + 0x18]
xor ecx, eax
mov dword [esp + 0x10], esi
imul ecx, ecx, 0x1000193
mov eax, edx
shr eax, 0x10
movzx eax, al
push edi
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [ebx + 0x64]
push eax
lea eax, [ebp + 0x10]
push eax
lea eax, [esp + 0x24]
push eax
call fcn.00402c10
mov eax, dword [eax + 4]
test eax, eax
jne 0x406b38
mov eax, dword [ebx + 0x68]
mov edi, dword [ebp + 0x14]
cmp eax, dword [ebx + 0x68]
je 0x406b81
mov ecx, dword [eax + 0x34]
mov dword [esp + 0x68], esi
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], esi
mov dword [esp + 0x24], ebx
test ecx, ecx
je 0x406d2b
mov eax, dword [ecx]
lea edx, [esp + 0x68]
push edx
lea edx, [esp + 0x70]
push edx
lea edx, [esp + 0x78]
push edx
lea edx, [esp + 0x30]
push edx
call dword [eax + 8]
test eax, eax
je 0x406d15
jmp 0x406b84
mov esi, dword [ebp + 0x10]
lea eax, [esi - 1]
cmp eax, 0xf
ja case.0x406b93.2
movzx eax, byte [eax + 0x406d50]
jmp dword [eax*4 + 0x406d30]
lea eax, [ebx + 0x54]
push eax
push dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [ebx + 0x44]
push eax
push dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [esp + 0x10]
mov ecx, ebx
push dword [esp + 0x14]
mov dword [ebx + 0x30], eax
mov eax, dword [ebx]
call dword [eax + 4]
push dword [esp + 0x14]
push dword [ebp + 0x14]
push esi
push dword [esp + 0x1c]
push dword [esp + 0x28]
call dword [sym.imp.USER32.dll_CallWindowProcW]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.0040c3e8
mov esp, ebp
pop ebp
ret 0x14
lea eax, [ebx + 0x54]
push eax
push dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetWindowRect]
jmp case.0x406b93.2
lea eax, [ebx + 0x54]
push eax
push dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [ebx + 0x44]
push eax
push dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetClientRect]
push dword [esp + 0x14]
mov eax, dword [ebx]
mov ecx, ebx
push edi
call dword [eax + 0x18]
jmp case.0x406b93.2
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0xc]
jmp case.0x406b93.2
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x10]
jmp case.0x406b93.2
cmp byte [ebx + 0xd], 0
je case.0x406b93.2
lea eax, [esp + 0x28]
push eax
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_BeginPaint]
mov edi, eax
lea eax, [ebx + 0x44]
push eax
push dword [ebx + 0x30]
mov dword [esp + 0x70], edi
call dword [sym.imp.USER32.dll_GetClientRect]
cmp byte [ebx + 0xc], 0
je 0x406cdd
push edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [ebx + 0x50]
mov edi, eax
sub ecx, dword [ebx + 0x48]
push ecx
mov ecx, dword [ebx + 0x4c]
sub ecx, dword [ebx + 0x44]
push ecx
push dword [esp + 0x70]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov esi, eax
push esi
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov edx, dword [ebx]
mov ecx, ebx
push edi
mov edx, dword [edx + 8]
call edx
mov ecx, dword [ebx + 0x50]
sub ecx, dword [ebx + 0x48]
push 0xcc0020
push 0
push 0
push edi
push ecx
mov ecx, dword [ebx + 0x4c]
sub ecx, dword [ebx + 0x44]
push ecx
push 0
push 0
push dword [esp + 0x88]
mov byte [esp + 0x33], al
call dword [sym.imp.GDI32.dll_BitBlt]
push esi
call dword [sym.imp.GDI32.dll_DeleteObject]
push edi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov esi, dword [ebp + 0x10]
jmp 0x406cee
mov eax, dword [ebx]
mov ecx, ebx
push dword [esp + 0x28]
mov eax, dword [eax + 8]
call eax
mov byte [esp + 0xf], al
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x14]
call dword [sym.imp.USER32.dll_EndPaint]
cmp byte [esp + 0xf], 0
jmp 0x406d0f
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 0x14]
call eax
test al, al
jne case.0x406b93.2
mov ecx, dword [esp + 0x74]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040c3e8
mov esp, ebp
pop ebp
ret 0x14
call fcn.00409c80
lcall 0x406b, 0xf000406b
add bh, bh
imul eax, dword [eax], 0x27
insb byte es:[edi], dx
inc eax
add byte [eax], dh
insb byte es:[edi], dx
inc eax
add byte [ecx], bh
insb byte es:[edi], dx
inc eax
add byte [ebp*2 + 0x6bc60040], al
inc eax
add byte [eax], al
pop es
add dword [edi], eax
add al, byte [edi]
add eax, dword [edi + eax]
pop es
pop es
pop es
pop es
pop es
add eax, -326413050
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
cmp ebx, 0x81
jne 0x406d85
mov edi, dword [ebp + 0x14]
mov edi, dword [edi]
push edi
push 0xffffffffffffffeb
push esi
call dword [sym.imp.USER32.dll_SetWindowLongW]
jmp 0x406d90
push 0xffffffffffffffeb
push esi
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov edi, eax
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
push esi
push dword [sym.imp.USER32.dll_DefWindowProcW]
test edi, edi
je 0x406daf
mov edx, dword [edi]
mov ecx, edi
call dword [edx]
pop edi
pop esi
pop ebx
pop ebp
ret 0x10
call dword [sym.imp.USER32.dll_CallWindowProcW]
pop edi
pop esi
pop ebx
pop ebp
ret 0x10