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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
movsd xmm2, qword [edx + 0x28]
movsd xmm1, qword [edx + 0x20]
mov eax, dword [ebp + 8]
mov dword [esp + 0x4c], ecx
movsd xmm0, qword [edx + 0x30]
mov ebx, edx
xor edi, edi
mov esi, 0x1c9d3adb
mov dword [esp + 8], 0x1c9d3adb
mov dword [esp + 0xc], 0x639f298e
mov dword [esp], 0x639f298e
mov dword [esp + 4], edx
movsd qword [esp + 0x38], xmm2
movsd qword [esp + 0x30], xmm1
movsd xmm2, qword [edx + 0x18]
movsd xmm1, qword [edx + 0x10]
mov ecx, dword [eax + 4]
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm2
movsd qword [esp + 0x20], xmm1
movsd xmm2, qword [edx]
movsd xmm1, qword [edx + 8]
test ecx, ecx
movsd qword [esp + 0x18], xmm1
movsd qword [esp + 0x10], xmm2
je 0x401f4a
mov edi, dword [eax]
mov eax, 0x811c9dc5
xor esi, esi
mov edx, 0x100
nop dword [eax + eax]
mov dword [esp], ecx
movzx ecx, byte [edi]
inc edi
xor ecx, eax
mov ebx, ecx
mov eax, ecx
mov ecx, 0x1b3
imul ebx, edx
mul ecx
imul esi, ecx
mov ecx, dword [esp]
add edx, ebx
add esi, edx
mov edx, 0x100
dec ecx
jne 0x401f00
xor eax, 0xff
mov edi, 0x1b3
mov ebx, dword [esp + 4]
mov ecx, eax
imul esi, edi
imul ecx, edx
mul edi
xor edi, edi
add edx, ecx
mov dword [esp], eax
add esi, edx
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x20]
cmp edx, dword [esp + 0x24]
jne 0x401f61
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve_for_push::h26801a5d90dd6044
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp]
mov dword [eax + edx*8], ecx
mov dword [eax + edx*8 + 4], esi
inc edx
mov eax, dword [ebp + 8]
mov dword [esp + 0x28], edx
movsd xmm4, qword [esp + 0x30]
movsd xmm5, qword [esp + 0x38]
movsd xmm1, qword [esp + 0x18]
movsd xmm2, qword [esp + 0x20]
movsd xmm3, qword [esp + 0x28]
movsd xmm0, qword [esp + 0x10]
movsd xmm6, qword [esp + 0x40]
mov ecx, dword [eax + 0xc]
movsd qword [ebx + 0x28], xmm5
movsd qword [ebx + 0x20], xmm4
movsd qword [esp + 0x58], xmm1
movsd qword [ebx + 8], xmm1
movsd qword [esp + 0x60], xmm2
movsd qword [ebx + 0x10], xmm2
movsd qword [ebx + 0x18], xmm3
movsd qword [ebx + 0x30], xmm6
movsd qword [ebx], xmm0
movsd qword [esp + 0x50], xmm0
movsd qword [esp + 0x68], xmm3
movsd qword [esp + 0x70], xmm4
movsd qword [esp + 0x78], xmm5
movsd qword [esp + 0x80], xmm6
movsd xmm2, qword [ebx + 0x28]
movsd xmm1, qword [ebx + 0x20]
movsd xmm0, qword [ebx + 0x30]
test ecx, ecx
movsd qword [esp + 0x38], xmm2
movsd qword [esp + 0x30], xmm1
movsd xmm2, qword [ebx + 0x18]
movsd xmm1, qword [ebx + 0x10]
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm2
movsd qword [esp + 0x20], xmm1
movsd xmm2, qword [ebx]
movsd xmm1, qword [ebx + 8]
movsd qword [esp + 0x18], xmm1
movsd qword [esp + 0x10], xmm2
je 0x4020a6
mov esi, dword [eax + 8]
mov edx, 0x811c9dc5
nop dword [eax + eax]
movzx eax, byte [esi]
mov ebx, edi
inc esi
xor eax, edx
mov edx, 0x100
mov edi, eax
imul edi, edx
mov edx, 0x1b3
mul edx
add edx, edi
mov edi, ebx
mov ebx, 0x1b3
imul edi, ebx
add edi, edx
dec ecx
mov edx, eax
jne 0x402050
xor edx, 0xff
mov esi, 0x100
mov ecx, 0x1b3
mov ebx, dword [esp + 4]
mov eax, edx
imul esi, edx
imul edi, ecx
mul ecx
add edx, esi
mov dword [esp + 0xc], eax
add edi, edx
mov dword [esp + 8], edi
mov edx, dword [esp + 0x28]
cmp edx, dword [esp + 0x24]
jne 0x4020bd
lea ecx, [esp + 0x20]
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve_for_push::h26801a5d90dd6044
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 8]
mov dword [eax + edx*8], ecx
mov dword [eax + edx*8 + 4], esi
inc edx
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x28], edx
movsd xmm6, qword [esp + 0x40]
movsd xmm5, qword [esp + 0x38]
movsd xmm4, qword [esp + 0x30]
movsd xmm3, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x20]
movsd xmm1, qword [esp + 0x18]
movsd xmm0, qword [esp + 0x10]
movsd qword [ebx + 0x30], xmm6
movsd qword [ebx + 0x28], xmm5
movsd qword [ebx + 0x20], xmm4
movsd qword [ebx + 0x18], xmm3
movsd qword [ebx + 0x10], xmm2
movsd qword [ebx + 8], xmm1
movsd qword [ebx], xmm0
movsd qword [esp + 0x50], xmm0
movsd qword [esp + 0x58], xmm1
movsd qword [esp + 0x60], xmm2
movsd qword [esp + 0x68], xmm3
movsd qword [esp + 0x70], xmm4
movsd qword [esp + 0x78], xmm5
movsd qword [esp + 0x80], xmm6
movsd xmm7, qword [ebx + 0x30]
movsd qword [eax + 0x30], xmm7
movsd xmm7, qword [ebx + 0x28]
movsd qword [eax + 0x28], xmm7
movsd xmm7, qword [ebx + 0x20]
movsd qword [eax + 0x20], xmm7
movsd xmm7, qword [ebx + 0x18]
movsd qword [eax + 0x18], xmm7
movsd xmm7, qword [ebx + 0x10]
movsd qword [eax + 0x10], xmm7
movsd xmm7, qword [ebx + 8]
movsd qword [eax + 8], xmm7
movsd xmm7, qword [ebx]
movsd qword [eax], xmm7
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret