Function at 0x4589200
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [0x4612008]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0xc], esi
mov edx, dword [edi]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 8], 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
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.0458be70
mov ebx, dword [0x461f5f4]
mov eax, dword [eax + 4]
test eax, eax
cmovne ebx, eax
cmp ebx, dword [0x461f5f4]
je 0x458946e
mov ebx, dword [ebx + 0xc]
test ebx, ebx
je 0x458946e
cmp dword [ebx], 0x3eb
jne 0x458946e
mov eax, dword [edi + 8]
lea ecx, [ebx + 0x1ac]
add eax, 0xb2
mov dword [ebp - 0x1c], ecx
cmp eax, 0xa6
ja case.0x45892be.176
movzx eax, byte [eax + 0x4589654]
jmp dword [eax*4 + 0x4589640]
cmp dword [ebx + 0x110], 0
je 0x458946e
cmp dword [ebx + 0x118], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x14], eax
jne 0x458943b
mov edx, dword [edi + 0x14]
xor eax, eax
cmp dword [ebp - 0x14], 0x7fffffff
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], edx
ja 0x458935e
mov esi, dword [ebp - 0x14]
cmp esi, dword [ecx]
mov esi, dword [ebp - 0xc]
jae 0x458935e
cmp edx, 0x7fffffff
ja 0x458935e
cmp edx, dword [ecx + 8]
jae 0x458935e
mov esi, dword [ebp - 0x14]
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x10], edx
lea eax, [eax + esi*4]
mov esi, dword [ebp - 0xc]
mov dword [ebp - 8], eax
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
test eax, eax
jne 0x458934d
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x14]
shl eax, 2
push 0
push eax
call fcn.04577ef0
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov dword [ecx], eax
mov ecx, dword [edi + 0x14]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x18]
mov eax, dword [eax]
mov dword [ebp - 8], eax
mov edx, dword [ecx + edx*4 + 4]
mov ecx, dword [ebp - 0x10]
jmp 0x4589365
mov ecx, edx
xor edx, edx
mov dword [ebp - 0x10], ecx
test ecx, ecx
jne 0x45893d9
test eax, eax
je 0x4589382
mov eax, dword [eax + 8]
inc eax
test eax, eax
cmovg ecx, eax
cmp ecx, 0xf
jl 0x4589387
mov ecx, 0xf
jmp 0x4589387
mov ecx, 1
cmp dword [ebx + 0x8c], 0
je 0x45893a1
mov eax, dword [ebx + 0x184]
mov eax, dword [eax]
test eax, eax
je 0x45893a1
cmp dword [eax], 0
jne 0x45893ab
mov eax, 2
cmp ecx, eax
cmovg ecx, eax
mov eax, dword [edi + 0x18]
and eax, 0xffff0fff
shl ecx, 0xc
or eax, ecx
mov ecx, dword [ebp - 0x10]
mov dword [edi + 0x18], eax
mov eax, dword [ebx + 0x13c]
neg eax
sbb eax, eax
and eax, 0xf000
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 0xc]
or eax, 8
mov dword [edi + 0xc], eax
test edx, edx
je 0x45893f5
mov eax, dword [edx]
mov dword [edi + 0x20], eax
mov eax, dword [edx + 4]
mov dword [edi + 0x28], eax
mov eax, dword [ebp - 8]
test eax, eax
je 0x45893f5
mov eax, dword [eax + 4]
mov dword [edi + 0x30], eax
test byte [ebx + 0x2c], 0x20
je 0x4589425
push ebx
push ecx
push dword [ebp - 0x14]
lea ecx, [ebx + 0x260]
call fcn.045776d0
mov esi, dword [ebp - 0xc]
mov dword [edi + 0x20], eax
mov eax, dword [ebx + 0x260]
cmp eax, dword [ebx + 0x114]
je 0x4589425
mov dword [ebx + 0x114], eax
cmp dword [edi + 0x30], 0
je 0x458942f
or dword [edi + 0xc], 0x10
cmp dword [edi + 0x28], 0
jl 0x4589465
or dword [edi + 0xc], 2
jmp 0x4589465
cmp dword [ebx + 0x13c], 0
je 0x4589465
cmp dword [edi + 0x14], 0
jne 0x4589465
mov eax, dword [edi + 0x18]
and eax, 0xffff1fff
mov dword [edi + 0x1c], 0xf000
or eax, 0x1000
or dword [edi + 0xc], 8
mov dword [edi + 0x18], eax
push esi
push ebx
push edi
push ecx
call fcn.04599540
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
cmp dword [ebx + 0x110], 0
je 0x458946e
push ecx
mov edx, ebx
mov ecx, edi
call fcn.04589700
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [edi + 0x18]
cmp edx, dword [ecx]
jae 0x458946e
mov eax, dword [ecx + 0x10]
cmp dword [eax + edx*4], 0
lea esi, [eax + edx*4]
jne 0x45894d5
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x14]
shl eax, 2
push 0
push eax
call fcn.04577ef0
mov ecx, dword [ebp - 0x1c]
mov dword [esi], eax
mov eax, dword [esi]
cmp dword [eax], 0
jne 0x45894e5
call fcn.04576770
mov ecx, dword [esi]
mov dword [ecx], eax
mov eax, dword [esi]
mov eax, dword [eax]
test eax, eax
je 0x458946e
mov eax, dword [eax]
cmp word [eax], 0
je 0x458946e
mov dword [edi + 0x10], eax
jmp 0x458946e
mov eax, dword [edi]
cmp eax, dword [ebx + 0x158]
jne 0x4589527
push esi
push ebx
push edi
push ecx
call fcn.04589880
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [edi + 0xc]
cmp eax, 0x10002
ja 0x45895e5
je 0x45895c5
sub eax, 1
je 0x45895aa
sub eax, 0x10000
jne 0x458946e
mov dword [esi], 0x20
mov eax, 0x20
mov ecx, dword [ebx + 8]
test ecx, ecx
je 0x458956c
push ecx
push dword [edi + 0x10]
call dword [sym.imp.GDI32.dll_SelectObject]
or dword [esi], 2
mov eax, dword [esi]
cmp dword [ebx + 0x50], 3
jne 0x458958c
or eax, 0x30
mov dword [esi], eax
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
push 0
push esi
push ebx
push edi
push ecx
call fcn.04589a90
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
mov dword [esi], 0x20
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
mov dword [esi], 0x20
cmp dword [ebx + 0x50], 3
sete al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
sub eax, 0x30001
je 0x45895f4
sub eax, 1
jmp 0x458946e
mov eax, dword [edi + 0x38]
cmp eax, dword [ebx + 0x1a8]
jge 0x4589603
test eax, eax
jns 0x4589605
xor eax, eax
push eax
push esi
push ebx
push edi
push ecx
call fcn.04589a90
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10
push esi
push ebx
push edi
push ecx
call fcn.04599540
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.045bc602
mov esp, ebp
pop ebp
ret 0x10