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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x158
mov eax, dword [ebp + 0xc]
push esi
push edi
push dword [0x884adc]
movups xmm0, xmmword [eax + 0x30]
mov ecx, dword [eax + 0x1c]
mov edi, 0x80
mov esi, dword [eax]
movaps xmmword [esp + 0xa4], xmm0
movaps xmmword [esp + 0xe4], xmm0
movaps xmm0, xmmword [eax + 0x40]
subps xmm0, xmmword [eax + 0x30]
mov eax, dword [eax + 0xc]
test eax, eax
mov dword [esp + 0x4c], ecx
cmovg edi, eax
mov eax, dword [esi]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 4]
movaps xmmword [esp + 0x94], xmm0
movaps xmmword [esp + 0xd4], xmm0
mov dword [esp + 0x14], eax
mov dword [esp + 0x68], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
shl edi, 4
add edi, 0x7f
and edi, 0xffffff80
mov dword [esp + 0x4c], edi
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x2c], eax
lea edx, [eax + edi]
cmp edi, dword [ecx + 8]
jg 0x6738a8
cmp edx, dword [ecx + 0x10]
ja 0x6738a8
mov dword [ecx + 0xc], edx
jmp 0x6738b2
push edi
call fcn.0046a3c0
mov dword [esp + 0x2c], eax
mov ecx, dword [ebp + 0x14]
xorps xmm2, xmm2
movaps xmmword [esp + 0x50], xmm2
xorps xmm6, xmm6
mov edi, eax
mov dword [esp + 0x1c], edi
movaps xmm7, xmmword [ecx]
mov ecx, dword [ebp + 0x10]
subps xmm7, xmmword [ecx]
movaps xmm1, xmm7
mulps xmm1, xmm7
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]
movaps xmm2, xmm0
movss xmm0, dword [0x719760]
rsqrtss xmm3, xmm3
mulss xmm1, xmm3
mulss xmm1, xmm3
subss xmm2, xmm1
movaps xmm1, xmm0
mulss xmm1, xmm3
movaps xmm0, xmmword [0x719330]
movups xmm3, xmmword [ecx]
mov ecx, dword [ebp + 0x18]
mulss xmm1, xmm2
movaps xmmword [esp + 0xc0], xmm3
mov eax, dword [ecx]
andnps xmm4, xmm1
movaps xmmword [esp + 0xf0], xmm3
shufps xmm4, xmm4, 0
mulps xmm7, xmm4
mov eax, dword [eax + 0xc]
mulss xmm5, xmm4
movaps xmm4, xmm6
cmpeqps xmm4, xmm7
shufps xmm5, xmm5, 0
andps xmm0, xmm4
movaps xmmword [esp + 0x30], xmm5
movaps xmm2, xmm4
movss dword [esp + 0x28], xmm5
andnps xmm2, xmm7
movaps xmmword [esp + 0x80], xmm7
orps xmm2, xmm0
movaps xmmword [esp + 0x70], xmm4
movaps xmm0, xmm2
movaps xmm5, 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 xmm5, xmm1
movaps xmm0, xmm5
movaps xmmword [esp + 0xb0], xmm5
mulps xmm0, xmmword [esp + 0x90]
mulps xmm0, xmmword [0x7c1720]
movaps xmmword [esp + 0x100], xmm0
movaps xmm0, xmmword [esp + 0xa0]
subps xmm0, xmm3
mulps xmm0, xmm5
movaps xmmword [esp + 0x110], xmm0
call eax
fmul dword [esp + 0x28]
movaps xmm5, xmmword [esp + 0x30]
fstp dword [esp + 0x20]
movss xmm4, dword [esp + 0x20]
comiss xmm5, xmm4
ja 0x673a23
movaps xmm4, xmm5
movaps xmm0, xmmword [esp + 0x70]
movmskps eax, xmm0
and eax, 7
cmp al, 7
je 0x673ee1
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
movss xmm7, dword [0x7c1718]
test edx, edx
jns 0x673b46
movaps xmm6, xmmword [esp + 0x50]
xorps xmm0, xmm0
cmpeqps xmm0, xmmword [esp + 0x80]
movmskps eax, xmm0
mov dword [esp + 0x18], eax
mov eax, dword [esi]
and edx, 3
and eax, 0x7ffffffc
add eax, esi
mov esi, eax
add eax, 8
mov ecx, dword [edx*4 + 0x7bfd70]
mov dword [esp + 0x14], eax
mov eax, ecx
and eax, dword [esp + 0x18]
cmp eax, ecx
jne 0x673def
movzx eax, word [esp + 0x66]
xor ecx, ecx
movss xmm2, dword [esp + edx*4 + 0xd0]
movss xmm1, dword [esp + edx*4 + 0xe0]
movss xmm3, dword [esp + edx*4 + 0xf0]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mov eax, dword [esp + 0x10]
movzx eax, ax
mulss xmm0, xmm7
mulss xmm0, xmm2
addss xmm0, xmm1
addss xmm0, dword [0x780100]
comiss xmm0, xmm3
movd xmm0, eax
cvtdq2ps xmm0, xmm0
setae cl
xor eax, eax
mulss xmm0, xmm7
mulss xmm0, xmm2
addss xmm0, xmm1
subss xmm0, dword [0x780100]
comiss xmm3, xmm0
setae al
test ecx, ecx
je 0x673b1e
test eax, eax
je 0x673b26
mov eax, dword [esp + 0x14]
mov dword [edi], eax
movss dword [edi + 4], xmm6
movss dword [edi + 8], xmm5
add edi, 0x10
mov dword [esp + 0x1c], edi
jmp 0x673b31
test eax, eax
je 0x673d80
mov eax, dword [esp + 0x14]
test ecx, ecx
cmovne eax, esi
mov esi, eax
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x64], ecx
test edx, edx
js 0x673a66
mov eax, edx
xor eax, 0x7fffffff
je 0x673d80
test ecx, ecx
jle 0x673d80
movaps xmm5, xmmword [0x7c1720]
xorps xmm2, xmm2
mulps xmm5, xmmword [esp + 0x90]
movaps xmm0, xmm2
mov esi, dword [esp + 0x48]
and edx, 0x7fffffff
cmpleps xmm0, xmmword [esp + 0xb0]
mov edi, dword [ebp + 0x18]
add esi, 0xe
shl edx, 4
add esi, edx
movaps xmm3, xmm2
shufps xmm4, xmm4, 0
cmpeqps xmm3, xmmword [esp + 0xb0]
movaps xmmword [esp + 0x70], xmm0
xorps xmm6, xmm6
movaps xmm0, xmm3
movaps xmmword [esp + 0x150], xmm5
andps xmm0, xmmword [0x77fb10]
movaps xmmword [esp + 0x120], xmm0
movaps xmm0, xmm3
andps xmm0, xmmword [0x77fb00]
movaps xmmword [esp + 0x130], xmm0
movaps xmm0, xmmword [esp + 0x50]
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x30], xmm3
movaps xmmword [esp + 0x140], xmm4
movaps xmmword [esp + 0x50], xmm0
nop dword [eax]
movups xmm2, xmmword [esi - 0xe]
movzx eax, word [esi - 8]
mov word [esp + 0x20], 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 + 0x22], 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, xmm5
addps xmm6, xmm0
movaps xmm0, xmmword [esp + 0x70]
movaps xmm1, xmm0
addps xmm7, xmmword [esp + 0xa0]
mulps xmm6, xmm5
movaps xmm5, xmm3
movaps xmm4, xmm7
subps xmm4, xmmword [esp + 0xc0]
addps xmm6, xmmword [esp + 0xa0]
cmpleps xmm7, xmmword [esp + 0xc0]
mulps xmm4, xmmword [esp + 0xb0]
movaps xmm2, xmm6
subps xmm2, xmmword [esp + 0xc0]
andps xmm0, xmm4
mulps xmm2, xmmword [esp + 0xb0]
andnps xmm1, xmm2
orps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x70]
andnps xmm5, xmm1
movaps xmm1, xmm0
andnps xmm0, xmm4
orps xmm5, xmmword [esp + 0x120]
andps xmm1, xmm2
movaps xmm4, xmmword [esp + 0x30]
orps xmm1, xmm0
movaps xmm2, xmmword [esp + 0x140]
andnps xmm3, xmm1
orps xmm3, xmmword [esp + 0x130]
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
maxps xmm0, xmm1
cmpltps xmm0, xmm2
andnps xmm4, xmm0
movaps xmm0, xmmword [esp + 0xc0]
cmpleps xmm0, xmm6
andps xmm0, xmm7
andps xmm0, xmm3
orps xmm4, xmm0
movmskps eax, xmm4
and eax, 7
cmp al, 7
jne 0x673d60
push dword [esp + 0x20]
mov eax, dword [edi]
lea ecx, [esp + 0x2b]
push ecx
mov ecx, edi
call dword [eax + 4]
movaps xmm3, xmmword [esp + 0x30]
mov ecx, dword [esp + 0x10]
movaps xmm5, xmmword [esp + 0x150]
add esi, 0x10
sub ecx, 1
xorps xmm6, xmm6
mov dword [esp + 0x10], ecx
jne 0x673bf0
mov edi, dword [esp + 0x1c]
nop
mov esi, dword [esp + 0x2c]
cmp edi, esi
je 0x673ee5
mov esi, dword [edi - 0x10]
sub edi, 0x10
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x1c], edi
mov eax, dword [esi]
movss xmm5, dword [edi + 8]
movss xmm0, dword [edi + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x64], eax
mov eax, dword [ecx]
movaps xmmword [esp + 0x30], xmm5
movaps xmmword [esp + 0x50], xmm0
mov eax, dword [eax + 0xc]
call eax
fmul dword [esp + 0x28]
movaps xmm5, xmmword [esp + 0x30]
fstp dword [esp + 0x18]
movss xmm4, dword [esp + 0x18]
comiss xmm5, xmm4
ja 0x673de0
movaps xmm4, xmm5
movaps xmm0, xmmword [esp + 0x50]
comiss xmm0, xmm4
jae 0x673d80
jmp 0x673a36
mov eax, dword [esp + 0x10]
movss xmm1, dword [esp + edx*4 + 0x100]
movss xmm0, dword [esp + edx*4 + 0x110]
movzx eax, ax
movd xmm2, eax
movzx eax, word [esp + 0x66]
cvtdq2ps xmm2, xmm2
movd xmm3, eax
cvtdq2ps xmm3, xmm3
mulss xmm2, xmm1
mulss xmm3, xmm1
addss xmm2, xmm0
addss xmm3, xmm0
xorps xmm0, xmm0
cmpltps xmm0, xmmword [esp + 0x80]
movmskps eax, xmm0
and eax, ecx
cmp eax, ecx
jne 0x673e48
mov ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x673e55
mov ecx, dword [esp + 0x14]
movaps xmm0, xmm2
movaps xmm2, xmm3
movaps xmm3, xmm0
movaps xmm0, xmmword [esp + 0x50]
comiss xmm0, xmm3
ja 0x673ecf
comiss xmm2, xmm4
jbe 0x673e78
mov esi, ecx
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x64], ecx
jmp 0x673a46
comiss xmm2, xmm0
ja 0x673e80
movaps xmm2, xmm0
mov dword [edi], esi
mov esi, ecx
movss dword [edi + 4], xmm2
movss dword [edi + 8], xmm5
add edi, 0x10
comiss xmm5, xmm3
mov dword [esp + 0x1c], edi
jbe 0x673ea2
movaps xmm5, xmm3
movaps xmmword [esp + 0x30], xmm5
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
fmul dword [esp + 0x28]
movaps xmm5, xmmword [esp + 0x30]
movss xmm7, dword [0x7c1718]
fstp dword [esp + 0x18]
movss xmm4, dword [esp + 0x18]
comiss xmm5, xmm4
ja 0x673ecf
movaps xmm4, xmm5
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x64], ecx
jmp 0x673a46
mov esi, dword [esp + 0x2c]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x4c]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x673f12
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x673f12
cmp dword [eax + 0x14], esi
je 0x673f12
mov dword [eax + 0xc], esi
jmp 0x673f1b
push edx
push esi
mov ecx, eax
call fcn.0046a590
mov eax, dword [ebp + 0x18]
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