Function at 0x1003f620
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 0x1003f823
cmp eax, 0x10207b40
je 0x1003f823
mov eax, dword [eax + 8]
and eax, 0xf
cmp eax, 4
jne 0x1003f6d7
push ecx
mov edx, ebx
lea ecx, [esp + 0x1c]
call fcn.1003f230
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 0x1003f694
nop
movzx eax, byte [ecx + ebp]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x1003f680
lea eax, [esi + 0x18]
push edx
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, eax
call fcn.10035730
mov eax, dword [eax + 4]
test eax, eax
jne 0x1003f6b0
mov eax, dword [esi + 0x1c]
xor edx, edx
lea ecx, [eax + 0x10]
cmp eax, dword [esi + 0x1c]
cmove ecx, edx
test ecx, ecx
je 0x1003f823
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 0x1003f823
xor edi, edi
mov dword [esp + 0x1c], ebx
lea edx, [edi + 2]
call fcn.100d46d0
mov ecx, ebx
movups xmm0, xmmword [eax]
movups xmmword [ebp], xmm0
add dword [ebx + 0xc], 0x10
call fcn.100d6c40
mov dword [esp + 0x18], eax
lea ecx, [esi + 0x38]
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.10041080
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x1003f72f
mov eax, dword [esp + 0x18]
cmp eax, 0xfffffffe
je 0x1003f72f
push eax
call fcn.100d6d20
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, dword [esi + 0x3c]
je 0x1003f73b
lea edi, [eax + 0x10]
test edi, edi
je 0x1003f823
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x1c], ebx
mov ecx, dword [eax]
mov eax, 0x10207b40
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.100d6c40
mov ebp, eax
mov eax, dword [edi]
mov dword [esp + 0x18], ebp
cmp eax, 0xfffffffe
je 0x1003f78b
cmp eax, 0xffffffff
je 0x1003f78b
mov ecx, dword [edi + 4]
push eax
call fcn.100d6d20
add esp, 4
cmp ebp, 0xffffffff
jne 0x1003f7ac
or eax, ebp
mov dword [edi + 4], ebx
push ebp
mov ecx, ebx
mov dword [edi], eax
call fcn.100d6d20
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
cmp ebp, 0xfffffffe
jne 0x1003f7c0
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 0x1003f814
cmp eax, ebx
je 0x1003f814
mov edx, 0xfff0b9d8
mov ecx, eax
call fcn.100d4be0
mov edx, 0xfff0b9d8
mov ecx, ebx
mov esi, eax
call fcn.100d4be0
cmp esi, eax
jne 0x1003f814
push dword [edi + 4]
lea ecx, [esp + 0x1c]
call fcn.1002ff40
mov ecx, dword [edi + 4]
call fcn.100d6c40
push ebp
mov ecx, ebx
mov dword [edi], eax
call fcn.100d6d20
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 + 0xbc]
mov eax, dword [esi + 0xb4]
push ebx
call eax
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret