Function at 0x70a480
Capabilities:
Encrypt data using rc4 prga
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x168
mov eax, dword [ebp + 0xc]
push esi
push edi
push dword [0x884adc]
movups xmm0, xmmword [eax + 0x30]
mov edi, dword [eax]
mov ecx, dword [eax + 0x1c]
movaps xmmword [esp + 0x114], xmm0
movaps xmmword [esp + 0xa4], xmm0
movaps xmm0, xmmword [eax + 0x40]
subps xmm0, xmmword [eax + 0x30]
mov eax, dword [eax + 0xc]
test eax, eax
mov esi, dword [edi]
mov dword [esp + 0x50], ecx
mov ecx, 0x80
cmovg ecx, eax
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 4]
movaps xmmword [esp + 0x104], xmm0
movaps xmmword [esp + 0x94], xmm0
mov dword [esp + 0x14], ecx
mov dword [esp + 0x68], ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, dword [esp + 0x1c]
mov ecx, eax
shl edx, 4
add edx, 0x7f
and edx, 0xffffff80
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x1c], edx
add edx, eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
cmp eax, dword [ecx + 8]
mov eax, dword [esp + 0x20]
jg 0x70a523
cmp edx, dword [ecx + 0x10]
ja 0x70a523
mov dword [ecx + 0xc], edx
jmp 0x70a530
push dword [esp + 0x1c]
call fcn.0046a3c0
mov dword [esp + 0x20], eax
mov ecx, dword [ebp + 0x10]
xorps xmm2, xmm2
movaps xmmword [esp + 0x50], xmm2
mov dword [esp + 0x18], eax
movups xmm0, xmmword [ecx]
movups xmm6, xmmword [ecx + 0x10]
subps xmm6, xmm0
movaps xmm1, xmm6
mulps xmm1, xmm6
movaps xmm0, xmm1
movaps xmm5, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm5, xmm1, 0xaa
addss xmm5, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
shufps xmm5, xmm5, 0
addss xmm1, xmm0
movaps xmm0, xmm2
shufps xmm1, xmm1, 0
movaps xmm3, xmm1
movaps xmm4, xmm1
cmpeqss xmm4, xmm0
movss xmm0, dword [0x719764]
rsqrtss xmm3, xmm3
mulss xmm1, xmm3
movaps xmm2, xmm0
movss xmm0, dword [0x719760]
mulss xmm1, xmm3
subss xmm2, xmm1
movaps xmm1, xmm0
movups xmm0, xmmword [ecx + 0x20]
mulss xmm1, xmm3
movaps xmmword [esp + 0xb0], xmm0
mulss xmm1, xmm2
movaps xmm2, xmmword [0x719330]
andnps xmm4, xmm1
movss xmm1, dword [ebp + 0x18]
shufps xmm4, xmm4, 0
mulss xmm5, xmm4
mulps xmm6, xmm4
shufps xmm5, xmm5, 0
movaps xmmword [esp + 0x30], xmm5
movss dword [esp + 0x2c], xmm5
xorps xmm5, xmm5
shufps xmm1, xmm1, 0
movaps xmm4, xmm5
addps xmm1, xmm0
movaps xmmword [esp + 0xd0], xmm6
movups xmm0, xmmword [ecx]
mov ecx, dword [ebp + 0x14]
cmpeqps xmm4, xmm6
mov eax, dword [ecx]
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0xc0], xmm0
andps xmm2, xmm4
movaps xmm0, xmm4
movaps xmmword [esp + 0x120], xmm1
andnps xmm0, xmm6
mov eax, dword [eax + 0xc]
orps xmm2, xmm0
movaps xmmword [esp + 0x70], xmm4
movaps xmm0, xmm2
movaps xmm3, xmm4
unpckhps xmm0, xmmword [0x719330]
shufps xmm2, xmm0, 0xc4
rcpps xmm1, xmm2
movaps xmm0, xmm1
mulps xmm0, xmm2
mulps xmm0, xmm1
addps xmm1, xmm1
subps xmm1, xmm0
andps xmm1, xmmword [0x719150]
andnps xmm3, xmm1
movaps xmmword [esp + 0xe0], xmm3
movaps xmmword [esp + 0xf0], xmm3
call eax
fmul dword [esp + 0x2c]
movaps xmm6, xmmword [esp + 0x30]
fstp dword [esp + 0x24]
movss xmm5, dword [esp + 0x24]
comiss xmm6, xmm5
ja 0x70a698
movaps xmm5, xmm6
movaps xmm0, xmmword [esp + 0x70]
movmskps eax, xmm0
and eax, 7
cmp al, 7
je 0x70abca
mov edx, dword [esp + 0x10]
nop
test esi, esi
jns 0x70a7c9
movaps xmm7, xmmword [esp + 0x50]
xorps xmm0, xmm0
cmpeqps xmm0, xmmword [esp + 0xd0]
movmskps eax, xmm0
mov dword [esp + 0x14], eax
mov eax, dword [edi]
and esi, 3
and eax, 0x7ffffffc
add eax, edi
mov edi, eax
add eax, 8
mov ecx, dword [esi*4 + 0x7bfd70]
mov dword [esp + 0x10], eax
mov eax, ecx
and eax, dword [esp + 0x14]
cmp eax, ecx
jne 0x70aa8f
movzx eax, word [esp + 0x66]
xor ecx, ecx
movss xmm3, dword [esp + esi*4 + 0x90]
movss xmm2, dword [esp + esi*4 + 0xa0]
movss xmm1, dword [esp + esi*4 + 0xb0]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, dx
movss xmm4, dword [esp + esi*4 + 0xc0]
mulss xmm0, dword [0x7c1718]
mulss xmm0, xmm3
addss xmm0, xmm2
addss xmm0, xmm1
addss xmm0, dword [0x780100]
comiss xmm0, xmm4
movd xmm0, eax
cvtdq2ps xmm0, xmm0
setae cl
xor eax, eax
mulss xmm0, dword [0x7c1718]
mulss xmm0, xmm3
addss xmm0, xmm2
subss xmm0, xmm1
subss xmm0, dword [0x780100]
comiss xmm4, xmm0
setae al
test ecx, ecx
je 0x70a7a1
test eax, eax
je 0x70a7a9
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
movss dword [eax + 4], xmm7
movss dword [eax + 8], xmm6
add eax, 0x10
mov dword [esp + 0x18], eax
jmp 0x70a7b4
test eax, eax
je 0x70aa20
mov eax, dword [esp + 0x10]
test ecx, ecx
cmovne eax, edi
mov edi, eax
mov esi, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x64], edx
test esi, esi
js 0x70a6d0
mov eax, esi
xor eax, 0x7fffffff
je 0x70aa20
test edx, edx
jle 0x70aa20
movaps xmm4, xmmword [esp + 0x100]
xorps xmm2, xmm2
mulps xmm4, xmmword [0x7c1720]
movaps xmm0, xmm2
mov eax, dword [esp + 0x4c]
and esi, 0x7fffffff
cmpleps xmm0, xmmword [esp + 0xe0]
shl esi, 4
add eax, 0xe
add esi, eax
movaps xmm3, xmm2
shufps xmm5, xmm5, 0
cmpeqps xmm3, xmmword [esp + 0xe0]
movaps xmmword [esp + 0x70], xmm0
xorps xmm6, xmm6
movaps xmm0, xmm3
movaps xmmword [esp + 0x150], xmm5
andps xmm0, xmmword [0x77fb10]
movaps xmm5, xmmword [esp + 0x80]
movaps xmmword [esp + 0x130], xmm0
movaps xmm0, xmm3
andps xmm0, xmmword [0x77fb00]
movaps xmmword [esp + 0x140], xmm0
movaps xmm0, xmmword [esp + 0x50]
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x160], xmm4
movaps xmmword [esp + 0x30], xmm3
movaps xmmword [esp + 0x50], xmm0
nop word [eax + eax]
movups xmm2, xmmword [esi - 0xe]
movzx eax, word [esi - 8]
mov word [esp + 0x24], ax
movaps xmm1, xmm2
movzx eax, word [esi]
punpcklwd xmm1, xmm6
movaps xmm0, xmm1
punpckhwd xmm2, xmm6
psrld xmm0, 0x10
pslld xmm1, 0x10
cvtdq2ps xmm7, xmm0
mov word [esp + 0x26], ax
psrld xmm1, 0x10
mulps xmm7, xmmword [0x78d130]
cvtdq2ps xmm0, xmm1
addps xmm7, xmm0
movaps xmm0, xmm2
psrld xmm0, 0x10
pslld xmm2, 0x10
cvtdq2ps xmm6, xmm0
psrld xmm2, 0x10
mulps xmm6, xmmword [0x78d130]
cvtdq2ps xmm0, xmm2
mulps xmm7, xmm4
addps xmm6, xmm0
movaps xmm0, xmmword [esp + 0x70]
movaps xmm1, xmm0
addps xmm7, xmmword [esp + 0x110]
mulps xmm6, xmm4
subps xmm7, xmmword [esp + 0x120]
addps xmm6, xmmword [esp + 0x110]
movaps xmm4, xmm7
subps xmm4, xmm5
addps xmm6, xmmword [esp + 0x120]
mulps xmm4, xmmword [esp + 0xe0]
movaps xmm2, xmm6
subps xmm2, xmm5
movaps xmm5, xmm3
andps xmm0, xmm4
mulps xmm2, xmmword [esp + 0xe0]
andnps xmm1, xmm2
orps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x70]
andnps xmm5, xmm1
movaps xmm1, xmm0
andnps xmm0, xmm4
orps xmm5, xmmword [esp + 0x130]
andps xmm1, xmm2
movaps xmm4, xmmword [esp + 0x30]
orps xmm1, xmm0
movaps xmm2, xmmword [esp + 0x150]
andnps xmm3, xmm1
orps xmm3, xmmword [esp + 0x140]
movaps xmm0, xmm3
movaps xmm1, xmm3
shufps xmm0, xmm3, 0x55
shufps xmm1, xmm3, 0
minps xmm1, xmm0
shufps xmm3, xmm3, 0xaa
movaps xmm0, xmm5
minps xmm1, xmm3
shufps xmm0, xmm5, 0x55
minps xmm2, xmm1
movaps xmm1, xmm5
movaps xmm3, xmmword [esp + 0x30]
shufps xmm1, xmm5, 0
maxps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x50]
shufps xmm5, xmm5, 0xaa
maxps xmm1, xmm5
movaps xmm5, xmmword [esp + 0x80]
maxps xmm0, xmm1
cmpleps xmm7, xmm5
cmpltps xmm0, xmm2
andnps xmm4, xmm0
movaps xmm0, xmm5
cmpleps xmm0, xmm6
andps xmm0, xmm7
andps xmm0, xmm3
orps xmm4, xmm0
movmskps eax, xmm4
and eax, 7
cmp al, 7
jne 0x70a9fd
mov ecx, dword [ebp + 0x14]
lea edx, [esp + 0x2b]
push dword [esp + 0x24]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
movaps xmm3, xmmword [esp + 0x30]
movaps xmm5, xmmword [esp + 0x80]
mov edx, dword [esp + 0x10]
movaps xmm4, xmmword [esp + 0x160]
add esi, 0x10
sub edx, 1
xorps xmm6, xmm6
mov dword [esp + 0x10], edx
jne 0x70a880
nop dword [eax + eax]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
cmp eax, esi
je 0x70abce
mov edi, dword [eax - 0x10]
sub eax, 0x10
mov dword [esp + 0x18], eax
mov ecx, dword [edi + 4]
movss xmm5, dword [eax + 8]
movss xmm0, dword [eax + 4]
mov esi, dword [edi]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x64], ecx
mov ecx, dword [ebp + 0x14]
movaps xmmword [esp + 0x30], xmm5
movaps xmmword [esp + 0x50], xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
fmul dword [esp + 0x2c]
movaps xmm6, xmmword [esp + 0x30]
fstp dword [esp + 0x14]
movss xmm5, dword [esp + 0x14]
comiss xmm6, xmm5
ja 0x70aa80
movaps xmm5, xmm6
movaps xmm0, xmmword [esp + 0x50]
comiss xmm0, xmm5
jae 0x70aa20
jmp 0x70a6ab
movss xmm4, dword [esp + esi*4 + 0x90]
movss xmm3, dword [esp + esi*4 + 0xa0]
movzx eax, dx
movss xmm2, dword [esp + esi*4 + 0xb0]
movss xmm1, dword [esp + esi*4 + 0xc0]
movss xmm0, dword [esp + esi*4 + 0xf0]
movd xmm7, eax
movzx eax, word [esp + 0x66]
cvtdq2ps xmm7, xmm7
movd xmm6, eax
mulss xmm7, dword [0x7c1718]
cvtdq2ps xmm6, xmm6
mulss xmm7, xmm4
mulss xmm6, dword [0x7c1718]
addss xmm7, xmm3
mulss xmm6, xmm4
subss xmm7, xmm2
movaps xmm4, xmm6
movss dword [esp + 0x14], xmm6
addss xmm4, xmm3
movaps xmm6, xmmword [esp + 0x30]
subss xmm7, xmm1
addss xmm4, xmm2
mulss xmm7, xmm0
subss xmm4, xmm1
mulss xmm4, xmm0
xorps xmm0, xmm0
cmpltps xmm0, xmmword [esp + 0xd0]
movmskps eax, xmm0
and eax, ecx
cmp eax, ecx
jne 0x70ab35
mov eax, edi
mov edi, dword [esp + 0x10]
jmp 0x70ab42
mov eax, dword [esp + 0x10]
movaps xmm0, xmm7
movaps xmm7, xmm4
movaps xmm4, xmm0
movaps xmm0, xmmword [esp + 0x50]
comiss xmm0, xmm4
ja 0x70abb8
comiss xmm7, xmm5
jbe 0x70ab65
mov edi, eax
mov edx, dword [edi + 4]
mov esi, dword [edi]
mov dword [esp + 0x10], edx
mov dword [esp + 0x64], edx
jmp 0x70a6b0
comiss xmm7, xmm0
ja 0x70ab6d
movaps xmm7, xmm0
mov ecx, dword [esp + 0x18]
mov dword [ecx], edi
mov edi, eax
movss dword [ecx + 4], xmm7
movss dword [ecx + 8], xmm6
add ecx, 0x10
comiss xmm6, xmm4
mov dword [esp + 0x18], ecx
jbe 0x70ab93
movaps xmm5, xmm4
movaps xmmword [esp + 0x30], xmm5
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
fmul dword [esp + 0x2c]
movaps xmm6, xmmword [esp + 0x30]
fstp dword [esp + 0x14]
movss xmm5, dword [esp + 0x14]
comiss xmm6, xmm5
ja 0x70abb8
movaps xmm5, xmm6
mov edx, dword [edi + 4]
mov esi, dword [edi]
mov dword [esp + 0x10], edx
mov dword [esp + 0x64], edx
jmp 0x70a6b0
mov esi, dword [esp + 0x20]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x70abfb
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x70abfb
cmp dword [eax + 0x14], esi
je 0x70abfb
mov dword [eax + 0xc], esi
jmp 0x70ac04
push edx
push esi
mov ecx, eax
call fcn.0046a590
mov eax, dword [ebp + 0x14]
mov ecx, eax
mov esi, dword [ebp + 8]
push esi
mov edx, dword [eax]
call dword [edx + 8]
pop edi
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret