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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1b4
push ebx
mov ebx, ecx
push esi
push edi
test ebx, ebx
je 0x1009dcea
mov eax, dword [0x102187c8]
cmp dword [eax], 0
je 0x1009dcea
mov eax, dword [0x1021663c]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x174]
call eax
test al, al
jne 0x1009dcea
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 0x1009dcea
nop dword [eax + eax]
movsx eax, al
lea edx, [edx + 1]
xor eax, ecx
imul ecx, eax, 0x1000193
mov al, byte [edx]
test al, al
jne 0x1009d6a0
cmp ecx, 0x78a2d0fe
ja 0x1009d8d1
je 0x1009d846
cmp ecx, 0x1b30ddf0
jne 0x1009dcea
cmp dword [0x10323e14], 0
je 0x1009dcea
mov eax, dword [0x102187c8]
mov ecx, dword [eax]
test ecx, ecx
je 0x1009d914
mov eax, dword [ecx]
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x1009d914
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.attacker
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x1021663c]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x102187c8]
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 + 0x68]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xf8]
cmp edi, ecx
jne 0x1009dcea
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.hitgroup
mov eax, dword [eax + 0x18]
call eax
mov edi, eax
lea ecx, [edi - 1]
cmp ecx, 6
ja 0x1009dcea
mov ecx, dword [0x1021663c]
mov edx, dword [ebx]
push 0
push str.userid
mov esi, dword [ecx + 0x10]
mov ecx, ebx
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 [0x10323e0c]
mov esi, eax
movss xmm0, dword [0x10423714]
dec edx
and edx, dword [0x10323e10]
ucomiss xmm0, dword [0x101eca54]
mov ecx, dword [0x10323e08]
mov edx, dword [ecx + edx*4]
lahf
test ah, 0x44
jnp 0x1009d7db
cmp edi, 1
jne 0x1009d7db
cmp esi, 0x41
jae 0x1009dcf1
imul eax, esi, 0x3ee0
movss dword [eax + 0x10226790], xmm0
mov eax, dword [0x1021663c]
push dword [edx + 0x3f04]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword [0x10323e0c]
mov eax, dword [0x10323e08]
dec ecx
and ecx, dword [0x10323e10]
mov esi, dword [eax + ecx*4]
mov ecx, esi
call fcn.1003a950
mov eax, dword [esi]
push 8
push eax
mov dword [esi], 0
call fcn.1015fe24
add esp, 8
add dword [0x10323e14], 0xffffffff
jne 0x1009d839
mov dword [0x10323e10], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc dword [0x10323e10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [0x10323e14], 0
je 0x1009dcea
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x1021663c]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x102187c8]
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 + 0x68]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xf8]
cmp edi, ecx
je 0x1009dcea
mov eax, dword [0x1021663c]
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x41
jae 0x1009dcf1
imul eax, eax, 0x3ee0
mov byte [eax + 0x1022678d], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 0x8b8fcce8
je 0x1009d9b3
cmp ecx, 0xa6abe875
je 0x1009d925
cmp ecx, 0xafcd8f60
jne 0x1009dcea
xor eax, eax
cmp eax, 0xff6e0
jae 0x1009dcf1
mov dword [eax + 0x10226788], 0
add eax, 0x3ee0
cmp eax, 0xff6e0
jl 0x1009d8f8
mov ecx, 0x10323e04
call fcn.100a3f80
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [0x10323e14], 0
je 0x1009dcea
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x1021663c]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x102187c8]
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 + 0x68]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0xf8]
cmp edi, ecx
je 0x1009dcea
mov eax, dword [0x1021663c]
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x41
jae 0x1009dcf1
imul eax, eax, 0x3ee0
mov dword [eax + 0x10226788], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [0x10323e14], 0
je 0x1009dcea
mov eax, dword [0x1021663c]
mov esi, dword [eax + 0x10]
mov eax, dword [0x102187c8]
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 + 0x68]
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 + 0xfc]
push str.userid
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
jne 0x1009dcea
mov ecx, dword [0x10323e0c]
mov eax, dword [0x10323e08]
dec ecx
and ecx, dword [0x10323e10]
mov esi, dword [eax + ecx*4]
cmp byte [esi + 0x3efc], 0
jne 0x1009dad6
mov eax, dword [0x10216630]
movd xmm0, dword [0x104eee88]
cvtdq2ps xmm0, xmm0
push ecx
mov eax, dword [eax + 0xc]
mov ecx, ebx
mov dword [esp], 0
push 0x101ae324
mulss xmm0, dword [eax + 0x20]
movss dword [esi + 0x3f00], 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 + 0x14]
mov eax, dword [eax + 0x20]
push 0x101ae320
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 0x101ae328
call eax
movss xmm0, dword [esp + 0x10]
movss dword [esi + 0x3ef0], xmm0
movss xmm0, dword [esp + 0x18]
movss dword [esi + 0x3ef4], xmm0
fstp dword [esp + 0x14]
movss xmm0, dword [esp + 0x14]
movss dword [esi + 0x3ef8], xmm0
mov byte [esi + 0x3efc], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [esi + 0x3eb5], 0
je 0x1009dcea
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
push 0x101ae324
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 0x101ae320
call eax
movss xmm0, dword [esp + 0x14]
mov eax, dword [ebx]
push ecx
fstp dword [esp + 0x1c]
movss dword [esp + 0x2c], xmm0
mov ecx, ebx
movss xmm0, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
mov dword [esp], 0
push 0x101ae328
movss dword [esp + 0x34], xmm0
call eax
mov eax, dword [0x1021663c]
push dword [esi + 0x3f04]
fstp dword [esp + 0x34]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword [ebx]
mov edi, eax
push 0
push str.userid
mov edx, dword [ecx + 0x18]
mov ecx, ebx
call edx
push ecx
push dword [0x104ed98c]
lea ecx, [esp + 0x64]
mov dword [esp + 0x18], eax
push dword [0x104ed988]
call fcn.100a4050
mov ebx, dword [esp + 0x60]
mov eax, ebx
mov esi, dword [esp + 0x5c]
mov edx, ebx
mov byte [esp + 0x14], 0
sub eax, esi
push dword [esp + 0x14]
sar eax, 2
mov ecx, esi
push dword [esp + 0x18]
push eax
call fcn.100a42c0
cmp esi, ebx
je 0x1009dce1
mov ecx, dword [esp + 0x10]
nop dword [eax]
mov eax, dword [esi]
cmp dword [eax + 0x80], ecx
jne 0x1009dcd6
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x1009dcd2
mov eax, dword [edi]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, edi
mov eax, dword [eax + 0x2a4]
call eax
movss xmm0, dword [esp + 0x1c]
movss xmm1, dword [esp + 0x20]
movss xmm2, dword [esp + 0x24]
movss xmm3, dword [esp + 0x28]
movss xmm4, dword [esp + 0x2c]
movss xmm5, dword [esp + 0x30]
call fcn.1009dd00
mov eax, dword [0x102187c8]
lea edx, [esp + 0x50]
push edx
movss dword [esp + 0x4c], xmm1
movss dword [esp + 0x48], xmm0
mov ecx, dword [eax]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2a4]
call eax
movss xmm0, dword [esp + 0x1c]
movss xmm1, dword [esp + 0x20]
movss xmm2, dword [esp + 0x24]
movss xmm3, dword [esp + 0x50]
movss xmm4, dword [esp + 0x54]
movss xmm5, dword [esp + 0x58]
call fcn.1009dd00
movss dword [esp + 0x3c], xmm1
movaps xmm1, xmm0
subss xmm1, dword [esp + 0x44]
movss dword [esp + 0x38], xmm0
movss xmm0, dword [esp + 0x3c]
subss xmm0, dword [esp + 0x48]
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm0, xmm1
xorps xmm1, xmm1
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x1009dca6
sqrtsd xmm0, xmm0
jmp 0x1009dcab
call fcn.10187f60
movss xmm1, dword [0x101ecd44]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x1009dcd2
mov ecx, dword [0x10216634]
cmp byte [ecx + 0xd14], 0
sete al
mov byte [ecx + 0xd14], al
mov ecx, dword [esp + 0x10]
add esi, 4
cmp esi, ebx
jne 0x1009dbc0
lea ecx, [esp + 0x5c]
call fcn.1002d810
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.10090640
int3