Function at 0x10145d20
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov edi, ecx
cmp dword [edi + 0xc], 0
je 0x10145e4f
nop dword [eax]
mov ebx, dword [edi + 8]
mov eax, dword [ebx]
mov edx, dword [eax + 8]
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x14], 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, [edi + 4]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.10111170
mov esi, dword [eax + 4]
test esi, esi
jne 0x10145da1
mov esi, ebx
cmp esi, ebx
je 0x10145e45
push dword [esi + 8]
lea ecx, [edi + 0x24]
call fcn.1013e410
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x10145dc7
add dword [ecx + 8], 0xffffffff
jne 0x10145dc7
mov eax, dword [ecx]
push 1
call dword [eax]
movzx eax, byte [esi + 8]
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, byte [esi + 9]
xor ecx, eax
movzx eax, byte [esi + 0xa]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esi + 0xb]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0x1c]
and ecx, eax
mov eax, dword [edi + 0x10]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x10145e22
cmp eax, esi
jne 0x10145e1a
mov eax, dword [edi + 8]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x10145e2a
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x10145e2a
cmp eax, esi
jne 0x10145e2a
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [edi + 0xc]
mov eax, dword [esi + 4]
push 0x10
push esi
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
call fcn.10174919
add esp, 8
cmp dword [edi + 0xc], 0
jne 0x10145d40
cmp dword [edi + 0x78], 0
je 0x10145e6a
mov eax, dword [edi + 0x74]
mov ecx, edi
mov eax, dword [eax]
push dword [eax + 8]
call fcn.10152b00
cmp dword [edi + 0x78], 0
jne 0x10145e55
cmp dword [edi + 0x58], 0
je 0x10145e85
mov eax, dword [edi + 0x54]
mov ecx, edi
mov eax, dword [eax]
push dword [eax + 8]
call fcn.10152ea0
cmp dword [edi + 0x58], 0
jne 0x10145e70
cmp dword [edi + 0x110], 0
je 0x10145fb9
mov ebx, dword [edi + 0x10c]
mov eax, dword [ebx]
mov edx, dword [eax + 8]
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x14], 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, [edi + 0x108]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.10111170
mov esi, dword [eax + 4]
test esi, esi
jne 0x10145ef9
mov esi, ebx
cmp esi, ebx
je 0x10145fac
push dword [esi + 8]
lea ecx, [edi + 0x128]
call fcn.1013e410
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x10145f22
add dword [ecx + 8], 0xffffffff
jne 0x10145f22
mov eax, dword [ecx]
push 1
call dword [eax]
movzx eax, byte [esi + 8]
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, byte [esi + 9]
xor ecx, eax
movzx eax, byte [esi + 0xa]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esi + 0xb]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0x120]
and ecx, eax
mov eax, dword [edi + 0x114]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x10145f86
cmp eax, esi
jne 0x10145f7e
mov eax, dword [edi + 0x10c]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x10145f8e
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x10145f8e
cmp eax, esi
jne 0x10145f8e
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [edi + 0x110]
mov eax, dword [esi + 4]
push 0x10
push esi
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
call fcn.10174919
add esp, 8
cmp dword [edi + 0x110], 0
jne 0x10145e92
cmp dword [edi + 0xc4], 0
je 0x101460f7
nop word [eax + eax]
mov ebx, dword [edi + 0xc0]
mov eax, dword [ebx]
mov edx, dword [eax + 8]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x14], 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, [edi + 0xbc]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.10111170
mov esi, dword [eax + 4]
test esi, esi
jne 0x10146037
mov esi, ebx
cmp esi, ebx
je 0x101460ea
push dword [esi + 8]
lea ecx, [edi + 0xdc]
call fcn.1013e410
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x10146060
add dword [ecx + 8], 0xffffffff
jne 0x10146060
mov eax, dword [ecx]
push 1
call dword [eax]
movzx eax, byte [esi + 8]
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, byte [esi + 9]
xor ecx, eax
movzx eax, byte [esi + 0xa]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esi + 0xb]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0xd4]
and ecx, eax
mov eax, dword [edi + 0xc8]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x101460c4
cmp eax, esi
jne 0x101460bc
mov eax, dword [edi + 0xc0]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x101460cc
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x101460cc
cmp eax, esi
jne 0x101460cc
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [edi + 0xc4]
mov eax, dword [esi + 4]
push 0x10
push esi
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
call fcn.10174919
add esp, 8
cmp dword [edi + 0xc4], 0
jne 0x10145fd0
cmp dword [edi + 0x15c], 0
je 0x1014622b
mov ebx, dword [edi + 0x158]
mov eax, dword [ebx]
mov edx, dword [eax + 8]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x14], 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, [edi + 0x154]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.10111170
mov esi, dword [eax + 4]
test esi, esi
jne 0x1014616b
mov esi, ebx
cmp esi, ebx
je 0x1014621e
push dword [esi + 8]
lea ecx, [edi + 0x174]
call fcn.1013e410
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x10146194
add dword [ecx + 8], 0xffffffff
jne 0x10146194
mov eax, dword [ecx]
push 1
call dword [eax]
movzx eax, byte [esi + 8]
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, byte [esi + 9]
xor ecx, eax
movzx eax, byte [esi + 0xa]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esi + 0xb]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0x16c]
and ecx, eax
mov eax, dword [edi + 0x160]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x101461f8
cmp eax, esi
jne 0x101461f0
mov eax, dword [edi + 0x158]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x10146200
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x10146200
cmp eax, esi
jne 0x10146200
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [edi + 0x15c]
mov eax, dword [esi + 4]
push 0x10
push esi
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
call fcn.10174919
add esp, 8
cmp dword [edi + 0x15c], 0
jne 0x10146104
cmp dword [edi + 0x1a8], 0
lea ebp, [edi + 0x1a0]
je 0x10146364
nop
mov ebx, dword [edi + 0x1a4]
mov eax, dword [ebx]
mov edx, dword [eax + 8]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x14], 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
mov ecx, ebp
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.10111170
mov esi, dword [eax + 4]
test esi, esi
jne 0x101462a4
mov esi, dword [ebp + 4]
cmp esi, ebx
je 0x10146357
push dword [esi + 8]
lea ecx, [edi + 0x1c0]
call fcn.1013e410
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x101462cd
add dword [ecx + 8], 0xffffffff
jne 0x101462cd
mov eax, dword [ecx]
push 1
call dword [eax]
movzx eax, byte [esi + 8]
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, byte [esi + 9]
xor ecx, eax
movzx eax, byte [esi + 0xa]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esi + 0xb]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0x1b8]
and ecx, eax
mov eax, dword [edi + 0x1ac]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x10146331
cmp eax, esi
jne 0x10146329
mov eax, dword [edi + 0x1a4]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x10146339
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x10146339
cmp eax, esi
jne 0x10146339
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [edi + 0x1a8]
mov eax, dword [esi + 4]
push 0x10
push esi
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
call fcn.10174919
add esp, 8
cmp dword [edi + 0x1a8], 0
jne 0x10146240
mov eax, dword [edi + 0x1f0]
mov esi, dword [eax]
cmp esi, eax
je 0x1014639a
mov ebp, dword [sym.imp.mozglue.dll_free]
mov ebx, dword [esi + 0xc]
test ebx, ebx
je 0x1014638a
mov ecx, ebx
call fcn.101328e0
push ebx
call ebp
add esp, 4
mov esi, dword [esi]
cmp esi, dword [edi + 0x1f0]
jne 0x10146376
lea ebp, [edi + 0x1a0]
lea ecx, [edi + 0x20c]
call fcn.10001710
lea ecx, [edi + 0x1ec]
call fcn.10114040
lea ecx, [edi + 0x1c0]
call fcn.10132760
mov ecx, ebp
call fcn.10114040
lea ecx, [edi + 0x174]
call fcn.10132760
lea ecx, [edi + 0x154]
call fcn.10114040
lea ecx, [edi + 0x128]
call fcn.10132760
lea ecx, [edi + 0x108]
call fcn.10114040
lea ecx, [edi + 0xdc]
call fcn.10132760
lea ecx, [edi + 0xbc]
call fcn.10114040
lea ecx, [edi + 0x90]
call fcn.10132760
lea ecx, [edi + 0x70]
call fcn.10114040
lea ecx, [edi + 0x50]
call fcn.10114040
lea ecx, [edi + 0x24]
call fcn.10132760
lea ecx, [edi + 4]
call fcn.10114040
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret