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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1b8
mov eax, dword [0x102090c0]
xor eax, esp
mov dword [esp + 0x1b4], eax
push esi
push edi
mov edi, ecx
mov dword [esp + 0x14], edi
test edi, edi
je 0x100a7766
mov eax, dword [0x10228e54]
cmp dword [eax], 0
je 0x100a7766
mov eax, dword [0x10226cb0]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x174]
call eax
test al, al
jne 0x100a7766
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 4]
call eax
mov edx, eax
mov ecx, 0x811c9dc5
mov al, byte [edx]
test al, al
je 0x100a7766
nop dword [eax]
movsx eax, al
lea edx, [edx + 1]
xor eax, ecx
imul ecx, eax, 0x1000193
mov al, byte [edx]
test al, al
jne 0x100a7110
cmp ecx, 0x78a2d0fe
ja 0x100a731e
je 0x100a7286
cmp ecx, 0x1b30ddf0
jne 0x100a7766
cmp dword [0x103387b4], 0
je 0x100a7766
mov eax, dword [0x10228e54]
mov ecx, dword [eax]
test ecx, ecx
je 0x100a7361
mov eax, dword [ecx]
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x100a7361
mov eax, dword [edi]
mov ecx, edi
push 0
push str.attacker
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10226cb0]
mov dword [esp + 0x10], eax
mov edi, dword [ecx + 0x10]
mov ecx, dword [0x10228e54]
mov esi, dword [ecx]
mov ecx, dword [esi + 8]
mov edx, dword [ecx + 0x28]
lea ecx, [esi + 8]
call edx
mov ecx, dword [edi]
mov edx, dword [ecx + 0x20]
lea ecx, [esp + 0x60]
push ecx
push eax
mov ecx, edi
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xf0]
cmp dword [esp + 0x10], ecx
jne 0x100a7766
mov edi, dword [esp + 0x14]
mov ecx, edi
push 0
push str.hitgroup
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
call eax
mov dword [esp + 0x14], eax
lea edx, [eax - 1]
cmp edx, 6
ja 0x100a7766
mov edx, dword [0x10226cb0]
mov ecx, edi
push 0
push str.userid
mov esi, dword [edx + 0x10]
mov edx, dword [edi]
mov edx, dword [edx + 0x18]
call edx
mov edx, dword [esi]
mov ecx, esi
push eax
mov edx, dword [edx + 0x24]
call edx
mov edx, dword [0x103387ac]
mov esi, eax
movss xmm0, dword [0x1045092c]
dec edx
and edx, dword [0x103387b0]
ucomiss xmm0, dword [0x101fa6e8]
mov ecx, dword [0x103387a8]
mov edx, dword [ecx + edx*4]
lahf
test ah, 0x44
jnp 0x100a7258
cmp dword [esp + 0x14], 1
jne 0x100a7258
cmp esi, 0x41
jae 0x100a777a
imul eax, esi, 0x3ef0
movss dword [eax + 0x10230708], xmm0
mov eax, dword [0x10226cb0]
push dword [edx + 0x3f14]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
call fcn.100ad460
pop edi
pop esi
mov ecx, dword [esp + 0x1b4]
xor ecx, esp
call fcn.1019ba64
mov esp, ebp
pop ebp
ret
cmp dword [0x103387b4], 0
je 0x100a7766
mov eax, dword [edi]
mov ecx, edi
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10226cb0]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10228e54]
mov ecx, dword [ecx]
add ecx, 8
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
call edx
mov edx, dword [esi]
lea ecx, [esp + 0x60]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xf0]
cmp edi, ecx
je 0x100a7766
mov eax, dword [0x10226cb0]
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x41
jae 0x100a777a
imul eax, eax, 0x3ef0
mov byte [eax + 0x10230705], 1
pop edi
pop esi
mov ecx, dword [esp + 0x1b4]
xor ecx, esp
call fcn.1019ba64
mov esp, ebp
pop ebp
ret
cmp ecx, 0x8b8fcce8
je 0x100a741a
cmp ecx, 0xa6abe875
je 0x100a737f
cmp ecx, 0xafcd8f60
jne 0x100a7766
xor eax, eax
cmp eax, 0xffaf0
jae 0x100a777a
mov dword [eax + 0x10230700], 0
add eax, 0x3ef0
cmp eax, 0xffaf0
jl 0x100a7345
mov ecx, 0x103387a4
call fcn.100ad810
pop edi
pop esi
mov ecx, dword [esp + 0x1b4]
xor ecx, esp
call fcn.1019ba64
mov esp, ebp
pop ebp
ret
cmp dword [0x103387b4], 0
je 0x100a7766
mov eax, dword [edi]
mov ecx, edi
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10226cb0]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10228e54]
mov ecx, dword [ecx]
add ecx, 8
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
call edx
mov edx, dword [esi]
lea ecx, [esp + 0x60]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xf0]
cmp edi, ecx
je 0x100a7766
mov eax, dword [0x10226cb0]
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x41
jae 0x100a777a
imul eax, eax, 0x3ef0
mov dword [eax + 0x10230700], 0
pop edi
pop esi
mov ecx, dword [esp + 0x1b4]
xor ecx, esp
call fcn.1019ba64
mov esp, ebp
pop ebp
ret
cmp dword [0x103387b4], 0
je 0x100a7766
mov eax, dword [0x10226cb0]
mov esi, dword [eax + 0x10]
mov eax, dword [0x10228e54]
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x28]
call eax
mov edx, dword [esi]
lea ecx, [esp + 0x60]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or esi, 0xffffffff
mov ecx, edi
test al, al
mov eax, dword [edi]
push 0
cmovne esi, dword [esp + 0xf4]
push str.userid
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
jne 0x100a7766
mov ecx, dword [0x103387ac]
mov eax, dword [0x103387a8]
dec ecx
and ecx, dword [0x103387b0]
mov esi, dword [eax + ecx*4]
cmp byte [esi + 0x3f0c], 0
jne 0x100a754a
mov eax, dword [0x10226ca4]
movd xmm0, dword [0x1051c3ac]
cvtdq2ps xmm0, xmm0
push ecx
mov eax, dword [eax + 0x10]
mov ecx, edi
mov dword [esp], 0
push 0x101ec214
mulss xmm0, dword [eax + 0x20]
movss dword [esi + 0x3f10], xmm0
mov eax, dword [edi]
mov eax, dword [eax + 0x20]
call eax
mov eax, dword [edi]
push ecx
mov dword [esp], 0
mov ecx, edi
fstp dword [esp + 0x18]
mov eax, dword [eax + 0x20]
push 0x101ec210
call eax
mov eax, dword [edi]
push ecx
mov dword [esp], 0
mov ecx, edi
fstp dword [esp + 0x14]
mov eax, dword [eax + 0x20]
push 0x101ec218
call eax
movss xmm0, dword [esp + 0x14]
movss dword [esi + 0x3f00], xmm0
movss xmm0, dword [esp + 0x10]
movss dword [esi + 0x3f04], xmm0
fstp dword [esp + 0xc]
movss xmm0, dword [esp + 0xc]
movss dword [esi + 0x3f08], xmm0
mov byte [esi + 0x3f0c], 1
pop edi
pop esi
mov ecx, dword [esp + 0x1b4]
xor ecx, esp
call fcn.1019ba64
mov esp, ebp
pop ebp
ret
cmp byte [esi + 0x3ec5], 0
je 0x100a7766
mov eax, dword [edi]
push ecx
mov dword [esp], 0
mov ecx, edi
push 0x101ec214
mov eax, dword [eax + 0x20]
mov dword [esp + 0x14], eax
call dword [esp + 0x14]
mov eax, dword [edi]
push ecx
mov dword [esp], 0
mov ecx, edi
fstp dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x10], eax
push 0x101ec210
call dword [esp + 0x14]
mov eax, dword [edi]
push ecx
mov dword [esp], 0
mov ecx, edi
fstp dword [esp + 0x20]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x10], eax
push 0x101ec218
call dword [esp + 0x14]
mov eax, dword [0x10226cb0]
push dword [esi + 0x3f14]
fstp dword [esp + 0x24]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword [edi]
push 0
push str.userid
mov dword [esp + 0x1c], eax
mov edx, dword [ecx + 0x18]
mov ecx, edi
call edx
push ecx
push dword [0x1051ada8]
mov edi, eax
lea ecx, [esp + 0x2c]
push dword [0x1051ada4]
mov dword [esp + 0x1c], edi
call fcn.100ad900
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
sub eax, esi
mov edx, dword [esp + 0x28]
mov ecx, esi
mov byte [esp + 0xc], 0
push dword [esp + 0xc]
sar eax, 2
push dword [esp + 0x10]
push eax
call fcn.100adcb0
cmp esi, dword [esp + 0x28]
je 0x100a775d
nop dword [eax]
mov eax, dword [esi]
cmp dword [eax + 0x80], edi
jne 0x100a7750
mov edi, dword [esp + 0x14]
mov ecx, edi
mov eax, dword [edi]
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x100a774c
mov eax, dword [edi]
lea ecx, [esp + 0x48]
push ecx
mov ecx, edi
mov eax, dword [eax + 0x2a4]
call eax
movss xmm0, dword [esp + 0x48]
movss xmm1, dword [esp + 0x4c]
movss xmm2, dword [esp + 0x50]
movss xmm3, dword [esp + 0x18]
movss xmm4, dword [esp + 0x1c]
movss xmm5, dword [esp + 0x20]
call fcn.100a7780
mov eax, dword [0x10228e54]
lea edx, [esp + 0x54]
push edx
movss dword [esp + 0x44], xmm1
movss dword [esp + 0x40], xmm0
mov ecx, dword [eax]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2a4]
call eax
movss xmm0, dword [esp + 0x48]
movss xmm1, dword [esp + 0x4c]
movss xmm2, dword [esp + 0x50]
movss xmm3, dword [esp + 0x54]
movss xmm4, dword [esp + 0x58]
movss xmm5, dword [esp + 0x5c]
call fcn.100a7780
movss dword [esp + 0x34], xmm1
movaps xmm1, xmm0
subss xmm1, dword [esp + 0x3c]
movss dword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0x34]
subss xmm0, dword [esp + 0x40]
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm0, xmm1
xorps xmm1, xmm1
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x100a771a
sqrtsd xmm0, xmm0
jmp 0x100a771f
call fcn.101c3ef0
movss xmm1, dword [0x101faa24]
mov edi, dword [esp + 0x10]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x100a7750
mov ecx, dword [0x10226ca8]
cmp byte [ecx + 0xd0c], 0
sete al
mov byte [ecx + 0xd0c], al
jmp 0x100a7750
mov edi, dword [esp + 0x10]
add esi, 4
cmp esi, dword [esp + 0x28]
jne 0x100a7630
lea ecx, [esp + 0x24]
call fcn.1002c130
mov ecx, dword [esp + 0x1bc]
pop edi
pop esi
xor ecx, esp
call fcn.1019ba64
mov esp, ebp
pop ebp
ret
call fcn.10090c80
int3