Function at 0x10057430
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x50
mov dword [ebp - 0x30], ecx
mov edi, dword [ebp + 0xc]
mov eax, dword [0x1038000c]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
mov ebx, eax
cmp eax, 0xf
jbe 0x100574a3
test ebx, ebx
js 0x10057a11
mov eax, ebx
or eax, 0xf
cmp eax, 0x17
mov esi, 0x16
cmovae esi, eax
cmp esi, 0xfff
jb 0x100574bd
lea eax, [esi + 0x24]
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea edi, [eax + 0x23]
and edi, 0xffffffe0
mov dword [edi - 4], eax
jmp 0x100574cc
lea esi, [ebp - 0x28]
mov dword [esi + 0x10], ebx
push ebx
push edi
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov byte [ebp + ebx - 0x28], 0
mov edi, dword [esi]
jmp 0x100574e6
lea eax, [esi + 1]
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov edi, eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], esi
push ebx
push dword [ebp + 0xc]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov byte [edi + ebx], 0
mov dword [ebp - 0x28], edi
lea eax, [ebp - 0x28]
cmp dword [eax + 0x14], 0x10
mov esi, dword [eax + 0x10]
cmovb edi, eax
test esi, esi
mov edx, dword [ebp - 0x30]
mov ebx, 0x811c9dc5
je 0x10057512
xor eax, eax
movzx ecx, byte [edi + eax]
xor ecx, ebx
imul ebx, ecx, 0x1000193
inc eax
cmp esi, eax
jne 0x10057501
mov eax, dword [edx + 0x10c]
mov dword [ebp - 0x50], ebx
and eax, ebx
mov ecx, dword [edx + 0x100]
mov ebx, dword [ecx + eax*8 + 4]
cmp ebx, dword [edx + 0xf8]
je 0x1005756a
mov dword [ebp - 0x34], edi
add eax, eax
mov edi, dword [ecx + eax*4]
cmp esi, dword [ebx + 0x18]
jne 0x1005755f
cmp dword [ebx + 0x1c], 0x10
jb 0x10057547
mov eax, dword [ebx + 8]
jmp 0x1005754a
lea eax, [ebx + 8]
push esi
push eax
push dword [ebp - 0x34]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x100576e7
cmp ebx, edi
je 0x10057568
mov ebx, dword [ebx + 4]
jmp 0x10057537
mov ebx, edi
mov edi, dword [ebp - 0x30]
cmp dword [edi + 0xfc], 0x71c71c7
je 0x10057a07
lea esi, [ebp - 0x2c]
lea eax, [ebp - 0x28]
mov dword [esi], eax
push 0x24
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [ebp - 0x4c], eax
mov ecx, eax
add ecx, 8
mov dword [ebp - 0x54], ecx
mov edx, esi
call fcn.1005fb80
mov eax, dword [edi + 0xfc]
inc eax
movss xmm0, dword [edi + 0xf4]
movq xmm2, qword [0x102c3120]
movd xmm1, eax
por xmm1, xmm2
subsd xmm1, xmm2
cvtsd2ss xmm1, xmm1
movss xmm3, dword [edi + 0x110]
orpd xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
movaps xmm3, xmm1
divss xmm3, xmm2
ucomiss xmm3, xmm0
jbe 0x10057961
mov esi, dword [edi + 0x110]
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 - 0x5c]
movss xmm0, dword [ebp - 0x5c]
cvttss2si eax, xmm0
mov ecx, eax
subss xmm0, dword [0x102c3128]
cvttss2si edx, xmm0
sar ecx, 0x1f
and edx, ecx
or edx, eax
cmp edx, 9
mov eax, 8
cmovae eax, edx
cmp esi, eax
jae 0x10057658
lea ecx, [esi*8]
cmp ecx, eax
cmovb ecx, eax
cmp esi, 0x200
cmovae ecx, eax
mov esi, ecx
cmp esi, 0x10000001
jae 0x10057a16
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 - 0x34], eax
mov esi, 2
shl esi, cl
mov eax, edi
mov edi, dword [edi + 0x100]
mov ebx, dword [eax + 0x104]
mov edx, ebx
sub edx, edi
sar edx, 2
mov eax, dword [eax + 0xf8]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x38], edx
cmp edx, esi
jae 0x100576ee
mov dword [ebp - 0x3c], ebx
cmp esi, 0x40000000
jae 0x10057a20
mov eax, 8
shl eax, cl
cmp esi, 0x400
jb 0x10057700
cmp esi, 0x3ffffff8
jae 0x10057a20
add eax, 0x23
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea ebx, [eax + 0x23]
and ebx, 0xffffffe0
mov dword [ebx - 4], eax
jmp 0x1005770c
mov ecx, ebx
jmp 0x100579bb
cmp edi, ebx
mov ecx, dword [ebp - 0x44]
je 0x1005776a
mov dword [edi], ecx
add edi, 4
cmp edi, ebx
jne 0x100576f5
jmp 0x1005776a
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov ebx, eax
cmp dword [ebp - 0x3c], edi
je 0x10057740
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x100]
test dword [ebp - 0x38], 0x3ffffc00
je 0x10057736
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x10057a25
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x100], ebx
lea eax, [ebx + esi*4]
mov dword [ecx + 0x104], eax
mov dword [ecx + 0x108], eax
shl esi, 2
xor eax, eax
mov ecx, dword [ebp - 0x44]
mov dword [ebx + eax], ecx
add eax, 4
cmp esi, eax
jne 0x10057760
mov edx, dword [ebp - 0x34]
lea eax, [edx - 1]
mov edi, dword [ebp - 0x30]
mov dword [edi + 0x10c], eax
mov dword [edi + 0x110], edx
mov ebx, dword [edi + 0xf8]
mov esi, dword [ebx]
cmp esi, ecx
je 0x10057907
mov edx, esi
mov ebx, edi
mov edi, esi
mov eax, edi
cmp dword [edi + 0x1c], 0x10
jb 0x100577a2
mov esi, dword [eax + 8]
jmp 0x100577a5
lea esi, [eax + 8]
mov dword [ebp - 0x38], eax
mov edi, dword [eax + 0x18]
mov eax, 0x811c9dc5
test edi, edi
je 0x100577c7
xor ecx, ecx
movzx edx, byte [esi + ecx]
xor edx, eax
imul eax, edx, 0x1000193
inc ecx
cmp edi, ecx
jne 0x100577b6
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx]
mov dword [ebp - 0x40], edx
and eax, dword [ebx + 0x10c]
mov edx, dword [ebx + 0x100]
lea ebx, [eax + eax]
mov dword [ebp - 0x58], ebx
lea ebx, [eax + eax]
inc ebx
mov dword [ebp - 0x3c], ebx
mov eax, dword [edx + eax*8]
cmp eax, dword [ebp - 0x44]
je 0x1005780c
mov ecx, dword [ebp - 0x3c]
mov ebx, dword [edx + ecx*4]
cmp edi, dword [ebx + 0x18]
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x34], eax
jne 0x1005783f
cmp dword [ebx + 0x1c], 0x10
jb 0x10057820
mov eax, dword [ebx + 8]
jmp 0x10057823
mov eax, dword [ebp - 0x58]
mov dword [edx + eax*4], ecx
mov eax, dword [ebp - 0x3c]
mov dword [edx + eax*4], ecx
mov edi, dword [ebp - 0x40]
jmp 0x100578b6
lea eax, [ebx + 8]
push edi
push eax
push esi
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x3c]
je 0x100578c4
cmp eax, ebx
je 0x1005788f
mov ebx, dword [ebx + 4]
cmp edi, dword [ebx + 0x18]
jne 0x1005783f
cmp dword [ebx + 0x1c], 0x10
jb 0x10057856
mov eax, dword [ebx + 8]
jmp 0x10057859
lea eax, [ebx + 8]
push edi
push eax
push esi
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
mov eax, dword [ebp - 0x34]
jne 0x1005783f
mov eax, dword [ebx]
mov edi, dword [ebp - 0x38]
mov ecx, dword [edi + 4]
mov ebx, dword [ebp - 0x40]
mov dword [ecx], ebx
mov edx, dword [ebx + 4]
mov dword [edx], eax
mov esi, dword [eax + 4]
mov dword [esi], edi
mov dword [eax + 4], edx
mov dword [ebx + 4], ecx
mov dword [edi + 4], esi
mov edi, ebx
jmp 0x100578b6
mov esi, dword [ebp - 0x38]
mov ebx, dword [esi + 4]
mov edi, dword [ebp - 0x40]
mov dword [ebx], edi
mov ecx, dword [edi + 4]
mov dword [ecx], eax
mov edx, dword [eax + 4]
mov dword [edx], esi
mov dword [eax + 4], ecx
mov dword [edi + 4], ebx
mov dword [esi + 4], edx
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x48]
mov dword [ecx + eax*4], esi
mov ebx, dword [ebp - 0x30]
cmp edi, dword [ebp - 0x44]
jne 0x10057795
jmp 0x100578f9
mov eax, dword [ebx]
mov edi, dword [ebp - 0x38]
cmp eax, edi
je 0x100578ee
mov ecx, dword [edi + 4]
mov ebx, dword [ebp - 0x40]
mov dword [ecx], ebx
mov edx, dword [ebx + 4]
mov dword [edx], eax
mov esi, dword [eax + 4]
mov dword [esi], edi
mov dword [eax + 4], edx
mov edx, dword [ebp - 0x48]
mov dword [ebx + 4], ecx
mov ecx, dword [ebp - 0x3c]
mov dword [edi + 4], esi
mov dword [edx + ecx*4], edi
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x40]
jmp 0x100578b9
mov edi, ebx
mov ebx, dword [ebx + 0xf8]
mov eax, dword [edi + 0x10c]
and eax, dword [ebp - 0x50]
mov ecx, dword [edi + 0x100]
mov esi, dword [ecx + eax*8 + 4]
cmp esi, ebx
je 0x10057961
add eax, eax
mov edx, dword [ebp - 0x4c]
cmp dword [edx + 0x1c], 0x10
jb 0x10057929
mov edi, dword [edx + 8]
mov dword [ebp - 0x54], edi
mov ebx, dword [ecx + eax*4]
mov edi, dword [edx + 0x18]
cmp edi, dword [esi + 0x18]
jne 0x10057953
cmp dword [esi + 0x1c], 0x10
jb 0x1005793f
mov eax, dword [esi + 8]
jmp 0x10057942
lea eax, [esi + 8]
push edi
push eax
push dword [ebp - 0x54]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x1005795c
cmp esi, ebx
je 0x1005795e
mov esi, dword [esi + 4]
jmp 0x1005792f
mov ebx, dword [esi]
mov edi, dword [ebp - 0x30]
mov eax, dword [ebx + 4]
inc dword [edi + 0xfc]
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], ebx
mov dword [ecx + 4], eax
mov dword [ebp - 0x38], eax
mov dword [eax], ecx
mov dword [ebx + 4], ecx
mov edx, dword [edi + 0x100]
mov esi, dword [ebp - 0x50]
and esi, dword [edi + 0x10c]
lea eax, [edx + esi*8]
mov dword [ebp - 0x34], eax
lea edx, [edx + esi*8]
add edx, 4
mov esi, dword [edx - 4]
cmp esi, dword [edi + 0xf8]
je 0x100579b2
cmp esi, ebx
mov esi, dword [ebp - 0x34]
je 0x100579b9
mov esi, edx
mov eax, dword [ebp - 0x38]
cmp dword [edx], eax
jne 0x100579bb
jmp 0x100579b9
mov eax, dword [ebp - 0x34]
mov dword [eax], ecx
mov esi, edx
mov dword [esi], ecx
mov eax, dword [ebp + 8]
mov dword [ecx + 0x20], eax
mov ecx, dword [ebp - 0x14]
cmp ecx, 0x10
jb 0x100579f3
mov eax, dword [ebp - 0x28]
add ecx, 0xfffff001
cmp ecx, 0xffffefff
ja 0x100579e9
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x10057a25
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10212780
add esp, 0x50
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__
call fcn.102136b0
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