Function at 0x10012fe0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x38
cmp dword [ebp + 8], 0
jle 0x1001357c
mov edi, ecx
lea eax, [ecx + 0x1e80]
mov dword [ebp - 0x3c], eax
xor esi, esi
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x3c]
call fcn.1004ac80
mov ebx, eax
push 0x10
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [ebp - 0x40], eax
mov ecx, eax
push dword [edi + 0x1d14]
call fcn.1003c140
cmp ebx, 0x3fff
ja 0x100130e6
mov eax, dword [edi + 0x1e58]
cmp eax, ebx
ja 0x100130d4
mov dword [ebp - 0x2c], esi
mov edi, eax
add eax, eax
cmp edi, ebx
jbe 0x10013045
mov esi, dword [ebp - 0x18]
mov eax, dword [esi + 0x1e5c]
mov dword [ebp - 0x10], eax
lea eax, [edi*4]
cmp edi, 0x40000000
mov ecx, 0xffffffff
cmovae eax, ecx
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [esi + 0x1e5c], eax
mov dword [ebp - 0x20], ebx
mov ebx, dword [esi + 0x1e58]
lea edx, [eax + ebx*4]
mov ecx, edi
sub ecx, ebx
shl ecx, 2
push ecx
push 0xff
push edx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
shl ebx, 2
push ebx
mov ebx, dword [ebp - 0x20]
push dword [ebp - 0x10]
push dword [ebp - 0x14]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x10]
add esp, 0xc
mov dword [esi + 0x1e58], edi
mov edi, esi
test eax, eax
mov esi, dword [ebp - 0x2c]
je 0x100130d4
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
lea edx, [ebx*4]
add edx, dword [edi + 0x1e5c]
jmp 0x10013567
mov dword [ebp - 0x2c], esi
mov edi, ebx
shr edi, 0x18
mov edx, ebx
shr edx, 0x10
mov esi, ebx
shr esi, 8
mov dword [ebp - 0x20], ebx
mov eax, 0xff
and ebx, eax
mov dword [ebp - 0x10], ebx
xor ebx, 0x811c9dc5
imul ecx, ebx, 0x1000193
and esi, eax
xor ecx, esi
imul ecx, ecx, 0x1000193
and edx, eax
xor ecx, edx
imul ecx, ecx, 0x1000193
xor ecx, edi
imul ecx, ecx, 0x1000193
mov edi, dword [ebp - 0x18]
mov eax, dword [edi + 0x1e78]
mov dword [ebp - 0x30], ecx
and eax, ecx
mov ebx, dword [edi + 0x1e6c]
mov ecx, edi
mov dword [ebp - 0x14], ebx
mov edi, dword [ebx + eax*8 + 4]
cmp edi, dword [ecx + 0x1e64]
mov dword [ebp - 0x28], esi
je 0x1001319b
mov ecx, dword [ebp - 0x20]
and ecx, 0xff000000
mov ebx, edx
shl ebx, 0x10
or ebx, ecx
mov ecx, esi
shl ecx, 8
or ecx, ebx
mov esi, dword [ebp - 0x10]
or ecx, esi
mov dword [ebp - 0x1c], edi
cmp ecx, dword [edi + 8]
je 0x1001354a
mov edi, edx
add eax, eax
mov edx, dword [ebp - 0x14]
mov esi, dword [edx + eax*4]
mov edx, dword [ebp - 0x1c]
cmp edx, esi
je 0x1001319f
mov edx, dword [edx + 4]
cmp ecx, dword [edx + 8]
jne 0x1001318a
jmp 0x1001355b
mov esi, edi
mov edi, edx
mov eax, dword [ebp - 0x18]
cmp dword [eax + 0x1e68], 0xfffffff
je 0x10013586
push 0x10
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov ecx, dword [ebp - 0x20]
and ecx, 0xff000000
shl edi, 0x10
or edi, ecx
mov ebx, dword [ebp - 0x28]
shl ebx, 8
or ebx, edi
add ebx, dword [ebp - 0x10]
mov dword [eax + 8], ebx
mov dword [ebp - 0x1c], eax
mov dword [eax + 0xc], 0
mov edi, dword [ebp - 0x18]
mov eax, dword [edi + 0x1e68]
inc eax
movd xmm1, eax
movss xmm0, dword [edi + 0x1e60]
movq xmm3, qword [0x102c3120]
por xmm1, xmm3
subsd xmm1, xmm3
cvtsd2ss xmm1, xmm1
movss xmm2, dword [edi + 0x1e7c]
orpd xmm2, xmm3
subsd xmm2, xmm3
cvtsd2ss xmm2, xmm2
movaps xmm3, xmm1
divss xmm3, xmm2
ucomiss xmm3, xmm0
jbe 0x100134f9
mov dword [ebp - 0x28], ebx
mov esi, dword [edi + 0x1e7c]
divss xmm1, xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm1
sub esp, 8
movsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_ceil
add esp, 8
fstp dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x44]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x102c3128]
cvttss2si eax, xmm0
and eax, edx
or eax, ecx
cmp eax, 9
mov ecx, 8
cmovb eax, ecx
cmp esi, eax
jae 0x1001329c
lea ecx, [esi*8]
cmp ecx, eax
cmovb ecx, eax
cmp esi, 0x200
cmovae ecx, eax
mov esi, ecx
cmp esi, 0x10000001
jae 0x10013590
dec esi
or esi, 1
bsr ecx, esi
xor ecx, 0xffffffe0
add ecx, 0x21
xor eax, eax
inc eax
shl eax, cl
mov dword [ebp - 0x24], eax
mov eax, 2
shl eax, cl
mov dword [ebp - 0x14], eax
mov esi, dword [edi + 0x1e6c]
mov ebx, dword [edi + 0x1e70]
mov edx, ebx
sub edx, esi
sar edx, 2
mov eax, dword [edi + 0x1e64]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0x14]
cmp edx, eax
jae 0x10013332
mov edx, eax
cmp eax, 0x40000000
jae 0x1001359a
mov dword [ebp - 0x34], ebx
mov eax, 8
shl eax, cl
cmp edx, 0x400
jb 0x10013344
cmp edx, 0x3ffffff8
jae 0x1001359a
mov ebx, edx
add eax, 0x23
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x10013352
cmp esi, ebx
mov edx, dword [ebp - 0x10]
je 0x100133b0
mov dword [esi], edx
add esi, 4
cmp esi, ebx
jne 0x10013339
jmp 0x100133b0
mov ebx, edx
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov ecx, eax
cmp dword [ebp - 0x34], esi
mov esi, ebx
je 0x10013389
mov ebx, ecx
mov eax, dword [edi + 0x1e6c]
test dword [ebp - 0x38], 0x3ffffc00
je 0x1001337d
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1001359f
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov ecx, ebx
mov dword [edi + 0x1e6c], ecx
lea eax, [ecx + esi*4]
mov dword [edi + 0x1e70], eax
mov dword [edi + 0x1e74], eax
shl esi, 2
xor eax, eax
mov edx, dword [ebp - 0x10]
mov dword [ecx + eax], edx
add eax, 4
cmp esi, eax
jne 0x100133a6
mov eax, dword [ebp - 0x24]
lea ebx, [eax - 1]
mov dword [edi + 0x1e78], ebx
mov dword [edi + 0x1e7c], eax
mov esi, dword [edi + 0x1e64]
mov ecx, dword [esi]
cmp ecx, edx
mov edx, dword [ebp - 0x28]
je 0x100134d0
mov eax, ecx
movzx ecx, byte [ecx + 8]
xor ecx, 0x811c9dc5
imul ecx, ecx, 0x1000193
movzx edx, byte [eax + 9]
xor edx, ecx
imul ecx, edx, 0x1000193
movzx edx, byte [eax + 0xa]
xor edx, ecx
imul ecx, edx, 0x1000193
movzx edx, byte [eax + 0xb]
xor edx, ecx
imul ecx, edx, 0x1000193
and ecx, dword [edi + 0x1e78]
mov edx, dword [edi + 0x1e6c]
lea edi, [ecx + ecx]
lea esi, [ecx + ecx]
inc esi
mov ebx, dword [edx + ecx*8]
mov ecx, dword [eax]
cmp ebx, dword [ebp - 0x10]
je 0x1001348a
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x14], esi
mov esi, dword [edx + esi*4]
mov edi, dword [eax + 8]
cmp edi, dword [esi + 8]
jne 0x10013462
mov esi, dword [esi]
cmp esi, eax
je 0x1001345d
mov edi, dword [eax + 4]
mov dword [ebp - 0x24], edi
mov dword [edi], ecx
mov ebx, dword [ecx + 4]
mov dword [ebx], esi
mov edi, dword [esi + 4]
mov dword [edi], eax
mov dword [esi + 4], ebx
mov esi, dword [ebp - 0x24]
mov dword [ecx + 4], esi
mov dword [eax + 4], edi
mov esi, dword [ebp - 0x14]
jmp 0x100134b0
cmp ebx, esi
je 0x1001348f
mov esi, dword [esi + 4]
cmp edi, dword [esi + 8]
jne 0x10013462
mov edx, dword [esi]
mov esi, dword [eax + 4]
mov dword [esi], ecx
mov edi, dword [ecx + 4]
mov dword [edi], edx
mov ebx, dword [edx + 4]
mov dword [ebx], eax
mov dword [edx + 4], edi
mov dword [ecx + 4], esi
mov dword [eax + 4], ebx
jmp 0x100134b3
mov dword [edx + edi*4], eax
jmp 0x100134b0
mov esi, dword [eax + 4]
mov dword [ebp - 0x14], esi
mov dword [esi], ecx
mov edi, dword [ecx + 4]
mov dword [edi], ebx
mov esi, dword [ebx + 4]
mov dword [esi], eax
mov dword [ebx + 4], edi
mov edi, dword [ebp - 0x14]
mov dword [ecx + 4], edi
mov dword [eax + 4], esi
mov esi, dword [ebp - 0x24]
mov dword [edx + esi*4], eax
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
cmp ecx, eax
jne 0x100133d5
mov esi, dword [edi + 0x1e64]
mov ebx, dword [edi + 0x1e78]
mov edx, dword [ebp - 0x28]
and ebx, dword [ebp - 0x30]
mov ecx, dword [edi + 0x1e6c]
mov eax, dword [ecx + ebx*8 + 4]
cmp eax, esi
je 0x100134f9
cmp edx, dword [eax + 8]
je 0x100134f7
add ebx, ebx
mov esi, dword [ecx + ebx*4]
cmp eax, esi
je 0x100134f9
mov eax, dword [eax + 4]
cmp edx, dword [eax + 8]
jne 0x100134eb
mov esi, dword [eax]
mov eax, dword [esi + 4]
inc dword [edi + 0x1e68]
mov ecx, dword [ebp - 0x1c]
mov dword [ecx], esi
mov dword [ecx + 4], eax
mov dword [ebp - 0x14], eax
mov dword [eax], ecx
mov dword [esi + 4], ecx
mov edx, dword [edi + 0x1e6c]
mov ebx, dword [ebp - 0x30]
and ebx, dword [edi + 0x1e78]
lea eax, [edx + ebx*8]
mov dword [ebp - 0x10], eax
lea edx, [edx + ebx*8]
add edx, 4
mov ebx, edi
mov edi, dword [edx - 4]
cmp edi, dword [ebx + 0x1e64]
je 0x1001354f
cmp edi, esi
mov ecx, dword [ebp - 0x10]
je 0x10013556
mov ecx, edx
mov eax, dword [ebp - 0x14]
cmp dword [edx], eax
je 0x10013556
mov edx, dword [ebp - 0x1c]
jmp 0x1001355b
mov eax, dword [ebp - 0x10]
mov dword [eax], ecx
mov ecx, edx
mov edx, dword [ebp - 0x1c]
mov dword [ecx], edx
add edx, 0xc
mov esi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x40]
mov dword [edx], eax
mov eax, dword [ebp + 0xc]
mov dword [eax + esi*4], ebx
inc esi
cmp esi, dword [ebp + 8]
jne 0x10013003
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret 8
push str.unordered_map_set_too_long
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const__
push str.invalid_hash_bucket_count
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const__
call fcn.102133d0
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3