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

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [0x104654ac]
mov dword [ebp - 4], ecx
push ebx
push esi
push edi
test al, 1
jne 0x10020568
or eax, 1
mov dword [0x104654ac], eax
mov eax, dword [0x1045f944]
mov ebx, dword [eax + 0x30]
jmp 0x1002055c
mov edi, dword [ebx + 0xc]
mov esi, 0x811c9dc5
xor ecx, ecx
nop
inc ecx
cmp byte [ecx + edi], 0
jne 0x10020530
xor edx, edx
test ecx, ecx
je 0x10020559
nop dword [eax]
movsx eax, byte [edx + edi]
inc edx
xor eax, esi
imul esi, eax, 0x1000193
cmp edx, ecx
jb 0x10020540
cmp esi, 0x2437fe
je 0x10020560
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x10020525
mov dword [0x104654a8], ebx
jmp 0x1002056e
mov ebx, dword [0x104654a8]
mov edx, dword [ebx]
xor eax, eax
cmp byte [0x10422dcc], al
mov ecx, 0x3e
cmovne eax, ecx
mov ecx, ebx
push eax
mov eax, dword [edx + 0x40]
call eax
mov eax, dword [0x1045fb34]
mov esi, dword [0x1041cfb8]
add eax, 0xffffffcc
cvttss2si edi, dword [0x10422e58]
xor eax, 0xae997d02
mov dword [0x1041cfbc], 0
cmp dword [eax + esi], 0
jne 0x10020793
mov eax, dword [0x1045f9b8]
cmp dword [eax + 0x4cb0], 1
jg 0x10020793
mov eax, dword [ebp - 4]
cmp byte [eax + 0x2c20e], 0
je 0x10020793
cmp byte [0x103391a4], 0
jne 0x10020793
mov eax, dword [0x1045fb5c]
mov ecx, 0x1041cfb8
add eax, 0xffffffc2
xor eax, 0xae997d0c
mov esi, dword [eax + esi]
mov eax, dword [0x1045f9a4]
movss xmm0, dword [eax + 0x20]
mov eax, esi
sub eax, edi
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
call fcn.1003e750
test al, al
jne 0x10020659
mov eax, edi
not eax
cdq
xor eax, edx
sub eax, edx
sub esi, eax
movd xmm1, esi
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
call fcn.1003e750
test al, al
jne 0x10020644
cmp byte [0x10433620], al
je 0x10020659
inc dword [0x10433628]
mov dword [0x10433638], 0
jmp 0x10020785
mov dword [0x10433628], 0
mov dword [0x10433638], edi
test edi, edi
jle 0x10020785
mov esi, dword [0x1041d348]
test esi, esi
je 0x10020785
mov eax, dword [0x1045fbec]
add eax, 0xffffff9e
xor eax, 0xae997d30
cmp dword [eax + esi], 0
je 0x10020785
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x6f8]
call eax
mov ecx, dword [0x1045fbec]
cmp dword [eax + 0xc8], 0
jne 0x100206c3
lea eax, [ecx - 0x62]
xor eax, 0xae997d30
cmp dword [eax + esi], 0x1f
jne 0x10020785
lea eax, [ecx - 0x62]
xor eax, 0xae997d30
mov eax, dword [eax + esi]
sub eax, 0x2b
cmp eax, 5
jbe 0x10020785
mov edx, dword [0x1045fb5c]
mov ecx, 0x1041cfb8
mov eax, dword [0x1041cfb8]
add edx, 0xffffffc2
xor edx, 0xae997d0c
mov esi, dword [edx + eax]
mov eax, dword [0x1045f9a4]
movss xmm0, dword [eax + 0x20]
mov eax, esi
sub eax, edi
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
call fcn.1003e750
test al, al
je 0x10020785
mov eax, dword [0x1041d3a0]
test byte [eax + 0x30], 1
je 0x10020732
mov dword [0x1041cfbc], edi
mov byte [0x10433630], 1
jmp 0x10020785
cmp byte [0x10433630], 0
je 0x10020785
mov ecx, dword [0x1045fc5c]
mov eax, dword [0x1041d348]
add ecx, 0xffffff82
movd xmm1, esi
xor ecx, 0xae997d4c
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
movss xmm0, dword [ecx + eax]
subss xmm0, xmm1
call fcn.1001f050
comiss xmm0, dword [0x1010d860]
jbe 0x10020785
mov byte [0x1041cfc4], 0
mov dword [0x1041cfc0], edi
mov byte [0x10433630], 0
cmp dword [0x10433638], 0
setne byte [0x10433620]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret