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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x17c
mov eax, dword [0x1020f0c0]
xor eax, esp
mov dword [esp + 0x178], eax
push ebx
mov ebx, ecx
mov dword [esp + 0xc], ebx
push esi
push edi
test ebx, ebx
je 0x100a9556
mov eax, dword [0x1022ee74]
cmp dword [eax], 0
je 0x100a9556
mov eax, dword [0x1022ccd0]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x174]
call eax
test al, al
jne 0x100a9556
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 4]
call eax
mov edx, eax
mov ecx, 0x811c9dc5
mov al, byte [edx]
test al, al
je 0x100a9556
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 0x100a9070
cmp ecx, 0x78a2d0fe
ja 0x100a9278
je 0x100a91df
cmp ecx, 0x1b30ddf0
jne 0x100a9556
cmp dword [0x1033e7d4], 0
je 0x100a9556
mov eax, dword [0x1022ee74]
mov ecx, dword [eax]
test ecx, ecx
je 0x100a92bb
mov eax, dword [ecx]
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x100a92bb
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.attacker
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x1022ccd0]
mov ebx, eax
mov edi, dword [ecx + 0x10]
mov ecx, dword [0x1022ee74]
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 + 0x28]
push ecx
push eax
mov ecx, edi
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xb8]
cmp ebx, ecx
jne 0x100a9556
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 ebx, eax
lea edx, [ebx - 1]
cmp edx, 6
ja 0x100a9556
mov edx, dword [0x1022ccd0]
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 [0x1033e7cc]
mov esi, eax
movss xmm0, dword [0x1045694c]
dec edx
and edx, dword [0x1033e7d0]
ucomiss xmm0, dword [0x10200d18]
mov ecx, dword [0x1033e7c8]
mov edx, dword [ecx + edx*4]
lahf
test ah, 0x44
jnp 0x100a91b0
cmp ebx, 1
jne 0x100a91b0
cmp esi, 0x41
jae 0x100a956b
imul eax, esi, 0x3ef0
movss dword [eax + 0x10236728], xmm0
mov eax, dword [0x1022ccd0]
push dword [edx + 0x3f14]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
call fcn.100b0eb0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x178]
xor ecx, esp
call fcn.101a1d25
mov esp, ebp
pop ebp
ret
cmp dword [0x1033e7d4], 0
je 0x100a9556
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x1022ccd0]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x1022ee74]
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 + 0x28]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xb8]
cmp edi, ecx
je 0x100a9556
mov eax, dword [0x1022ccd0]
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x41
jae 0x100a956b
imul eax, eax, 0x3ef0
mov byte [eax + 0x10236725], 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x178]
xor ecx, esp
call fcn.101a1d25
mov esp, ebp
pop ebp
ret
cmp ecx, 0x8b8fcce8
je 0x100a9376
cmp ecx, 0xa6abe875
je 0x100a92da
cmp ecx, 0xafcd8f60
jne 0x100a9556
xor eax, eax
cmp eax, 0xffaf0
jae 0x100a956b
mov dword [eax + 0x10236720], 0
add eax, 0x3ef0
cmp eax, 0xffaf0
jl 0x100a929f
mov ecx, 0x1033e7c4
call fcn.100b11c0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x178]
xor ecx, esp
call fcn.101a1d25
mov esp, ebp
pop ebp
ret
cmp dword [0x1033e7d4], 0
je 0x100a9556
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x1022ccd0]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x1022ee74]
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 + 0x28]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xb8]
cmp edi, ecx
je 0x100a9556
mov eax, dword [0x1022ccd0]
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x41
jae 0x100a956b
imul eax, eax, 0x3ef0
mov dword [eax + 0x10236720], 0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x178]
xor ecx, esp
call fcn.101a1d25
mov esp, ebp
pop ebp
ret
cmp dword [0x1033e7d4], 0
je 0x100a9556
mov eax, dword [0x1022ccd0]
mov esi, dword [eax + 0x10]
mov eax, dword [0x1022ee74]
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 + 0x28]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or esi, 0xffffffff
mov ecx, ebx
test al, al
mov eax, dword [ebx]
push 0
cmovne esi, dword [esp + 0xbc]
push str.userid
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
jne 0x100a9556
mov ecx, dword [0x1033e7cc]
mov eax, dword [0x1033e7c8]
dec ecx
and ecx, dword [0x1033e7d0]
mov esi, dword [eax + ecx*4]
cmp byte [esi + 0x3f0c], 0
jne 0x100a94a7
mov eax, dword [0x1022ccc4]
movd xmm0, dword [0x105223dc]
cvtdq2ps xmm0, xmm0
push ecx
mov eax, dword [eax + 0x10]
mov ecx, ebx
mov dword [esp], 0
push 0x101f237c
mulss xmm0, dword [eax + 0x20]
movss dword [esi + 0x3f10], xmm0
mov eax, dword [ebx]
mov eax, dword [eax + 0x20]
call eax
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x18]
mov eax, dword [eax + 0x20]
push 0x101f2390
call eax
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
push 0x101f238c
call eax
movss xmm0, dword [esp + 0x14]
movss dword [esi + 0x3f00], xmm0
movss xmm0, dword [esp + 0x18]
movss dword [esi + 0x3f04], xmm0
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
movss dword [esi + 0x3f08], xmm0
mov byte [esi + 0x3f0c], 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x178]
xor ecx, esp
call fcn.101a1d25
mov esp, ebp
pop ebp
ret
cmp byte [esi + 0x3ec5], 0
je 0x100a9556
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
push 0x101f237c
mov eax, dword [eax + 0x20]
mov dword [esp + 0x18], eax
call dword [esp + 0x18]
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x20]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x14], eax
push 0x101f2390
call dword [esp + 0x18]
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x24]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x14], eax
push 0x101f238c
call dword [esp + 0x18]
mov eax, dword [0x1022ccd0]
push dword [esi + 0x3f14]
fstp dword [esp + 0x28]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword [ebx]
mov esi, eax
push 0
push str.userid
mov edx, dword [ecx + 0x18]
mov ecx, ebx
call edx
movss xmm0, dword [esp + 0x1c]
mov edx, esi
movss xmm1, dword [esp + 0x20]
mov ecx, eax
movss xmm2, dword [esp + 0x24]
call fcn.100aa0f0
mov ecx, dword [esp + 0x184]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.101a1d25
mov esp, ebp
pop ebp
ret
call fcn.10092100
int3