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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x10
push ebx
mov ebx, ecx
push ebp
push esi
push edi
mov eax, dword [ebx + 0x14]
mov esi, edx
mov ebp, dword [ebx + 0xc]
mov eax, dword [eax]
add eax, 0x20
cmp eax, ebp
jae 0x1003aa63
cmp eax, 0x101dd8c0
je 0x1003aa63
mov eax, dword [eax + 8]
and eax, 0xf
cmp eax, 4
jne 0x1003a917
push ecx
mov edx, ebx
lea ecx, [esp + 0x1c]
call fcn.1003a7e0
mov edi, dword [esp + 0x20]
lea eax, [esi + 0x18]
mov ebp, dword [esp + 0x1c]
add esp, 4
xor ecx, ecx
mov edx, 0x811c9dc5
test edi, edi
je 0x1003a8d4
nop
movzx eax, byte [ecx + ebp]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x1003a8c0
lea eax, [esi + 0x18]
push edx
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, eax
call fcn.10030b70
mov eax, dword [eax + 4]
test eax, eax
jne 0x1003a8f0
mov eax, dword [esi + 0x1c]
xor edx, edx
lea ecx, [eax + 0x10]
cmp eax, dword [esi + 0x1c]
cmove ecx, edx
test ecx, ecx
je 0x1003aa63
push dword [ecx + 8]
mov eax, dword [ecx + 4]
push ebx
call eax
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
test eax, eax
je 0x1003aa63
xor edi, edi
mov dword [esp + 0x1c], ebx
lea edx, [edi + 2]
call fcn.100c86c0
mov ecx, ebx
movups xmm0, xmmword [eax]
movups xmmword [ebp], xmm0
add dword [ebx + 0xc], 0x10
call fcn.100cac30
mov dword [esp + 0x18], eax
lea ecx, [esi + 0x38]
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.1003c630
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x1003a96f
mov eax, dword [esp + 0x18]
cmp eax, 0xfffffffe
je 0x1003a96f
push eax
call fcn.100cad10
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, dword [esi + 0x3c]
je 0x1003a97b
lea edi, [eax + 0x10]
test edi, edi
je 0x1003aa63
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x1c], ebx
mov ecx, dword [eax]
mov eax, 0x101dd8c0
add ecx, 0x30
cmp ecx, edx
cmovb eax, ecx
mov ecx, ebx
movups xmm0, xmmword [eax]
movups xmmword [edx], xmm0
add dword [ebx + 0xc], 0x10
call fcn.100cac30
mov ebp, eax
mov eax, dword [edi]
mov dword [esp + 0x18], ebp
cmp eax, 0xfffffffe
je 0x1003a9cb
cmp eax, 0xffffffff
je 0x1003a9cb
mov ecx, dword [edi + 4]
push eax
call fcn.100cad10
add esp, 4
cmp ebp, 0xffffffff
jne 0x1003a9ec
or eax, ebp
mov dword [edi + 4], ebx
push ebp
mov ecx, ebx
mov dword [edi], eax
call fcn.100cad10
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
cmp ebp, 0xfffffffe
jne 0x1003aa00
mov dword [edi + 4], ebx
xor eax, eax
mov dword [edi], ebp
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 4]
test eax, eax
je 0x1003aa54
cmp eax, ebx
je 0x1003aa54
mov edx, 0xfff0b9d8
mov ecx, eax
call fcn.100c8bd0
mov edx, 0xfff0b9d8
mov ecx, ebx
mov esi, eax
call fcn.100c8bd0
cmp esi, eax
jne 0x1003aa54
push dword [edi + 4]
lea ecx, [esp + 0x1c]
call fcn.1002aec0
mov ecx, dword [edi + 4]
call fcn.100cac30
push ebp
mov ecx, ebx
mov dword [edi], eax
call fcn.100cad10
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 4], ebx
xor eax, eax
mov dword [edi], ebp
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push dword [esi + 0xac]
mov eax, dword [esi + 0xa4]
push ebx
call eax
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret