Function at 0x5a3020
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
movss xmm2, dword [ebp + 0xc]
sub esp, 0x68
movss xmm1, dword [0x718824]
push esi
push edi
mov edi, ecx
cmp byte [edi + 0xb0], 0
jne 0x5a333e
cmp dword [edi + 0xc8], 0
je 0x5a333e
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x5a333e
call fcn.005cca00
mov dword [esp + 0x20], eax
test eax, eax
je 0x5a3331
mov eax, dword [eax + 0x2c]
xorps xmm0, xmm0
push dword [0x884adc]
movaps xmmword [esp + 0x44], xmm0
movaps xmm0, xmmword [0x719da0]
movaps xmmword [esp + 0x64], xmm0
movaps xmm0, xmmword [edi + 0x80]
movaps xmmword [esp + 0x54], xmm0
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + esi*2]
mov ecx, eax
shl edx, 4
add edx, 0x7f
and edx, 0xffffff80
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], eax
lea esi, [eax + edx]
cmp edx, dword [ecx + 8]
jg 0x5a30d6
cmp esi, dword [ecx + 0x10]
ja 0x5a30d6
mov dword [ecx + 0xc], esi
jmp 0x5a30e0
push edx
call fcn.0046a3c0
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x24]
push eax
call fcn.0058a320
mov ecx, dword [esp + 0x1c]
push dword [0x884adc]
mov esi, dword [ecx + 0x1c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
lea eax, [esi + esi*2]
shl eax, 4
add eax, 0x7f
and eax, 0xffffff80
mov esi, dword [ecx + 0xc]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], esi
lea edx, [esi + eax]
cmp eax, dword [ecx + 8]
jg 0x5a312d
cmp edx, dword [ecx + 0x10]
ja 0x5a312d
mov dword [ecx + 0xc], edx
jmp 0x5a3139
push eax
call fcn.0046a3c0
mov esi, eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
push ecx
mov dword [esp], 0x3f800000
push esi
push dword [esp + 0x20]
push dword [eax + 0x1c]
push 0
call fcn.005ce9c0
mov ecx, dword [edi + 0xc8]
lea eax, [edi + 0xc0]
add esp, 0x14
push eax
push esi
call fcn.007033a0
mov esi, eax
xor eax, eax
test esi, esi
cmovs esi, eax
mov eax, dword [edi + 0xb4]
cmp eax, 0xffffffff
jne 0x5a31bb
xor ecx, ecx
mov dword [edi + 0xb4], esi
cmp dword [edi + 0x44], ecx
jle 0x5a31a3
nop dword [eax + eax]
mov eax, dword [edi + 0x40]
mov eax, dword [eax + ecx*4]
inc ecx
mov dword [eax + 0x28], 0
cmp ecx, dword [edi + 0x44]
jl 0x5a3190
mov ecx, dword [edi + 0xb4]
mov eax, dword [edi + 0x40]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0x28], 0x3f800000
jmp 0x5a32bd
cmp esi, dword [edi + 0xb8]
jne 0x5a31da
movss xmm0, dword [edi + 0xbc]
addss xmm0, dword [ebp + 0xc]
movss dword [edi + 0xbc], xmm0
jmp 0x5a31e4
mov dword [edi + 0xbc], 0
mov dword [edi + 0xb8], esi
cmp esi, eax
je 0x5a322c
movss xmm1, dword [edi + 0xc0]
movss xmm2, dword [0x718824]
movss xmm0, dword [edi + 0x9c]
subss xmm2, xmm1
mulss xmm0, xmm1
mov byte [esp + 0x17], 1
mulss xmm2, dword [edi + 0x98]
addss xmm2, xmm0
movss xmm0, dword [edi + 0xbc]
comiss xmm0, xmm2
ja 0x5a3231
mov byte [esp + 0x17], 0
movzx eax, word [edi + 0xae]
xorps xmm1, xmm1
movaps xmmword [esp + 0x30], xmm1
test ax, ax
js 0x5a329d
mov ecx, dword [esp + 0x1c]
cwde
cmp eax, dword [ecx + 0x1c]
jge 0x5a329d
mov ecx, dword [esp + 0x20]
push eax
call fcn.005a33b0
test eax, eax
je 0x5a3298
movzx ecx, word [edi + 0xae]
movsx eax, cx
mov ecx, dword [esp + 0x20]
push eax
call fcn.005a33b0
movaps xmm1, xmmword [eax + 0x1b0]
mulps xmm1, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
sqrtss xmm1, xmm1
shufps xmm1, xmm1, 0
jmp 0x5a329d
movaps xmm1, xmmword [esp + 0x30]
comiss xmm1, dword [edi + 0x94]
jb 0x5a32bd
cmp byte [esp + 0x17], 0
je 0x5a32bd
mov dword [edi + 0xb4], esi
mov dword [edi + 0xbc], 0
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea esi, [ecx + 0xf]
and esi, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5a32ee
lea ecx, [esi + edx]
cmp ecx, dword [eax + 0xc]
jne 0x5a32ee
cmp dword [eax + 0x14], edx
je 0x5a32ee
mov dword [eax + 0xc], edx
jmp 0x5a32f7
push esi
push edx
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x18]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5a3328
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5a3328
cmp dword [eax + 0x14], esi
je 0x5a3328
mov dword [eax + 0xc], esi
jmp 0x5a3331
push edx
push esi
mov ecx, eax
call fcn.0046a590
movss xmm1, dword [0x718824]
movss xmm2, dword [ebp + 0xc]
xor ecx, ecx
cmp dword [edi + 0x44], ecx
jle 0x5a33a5
nop word [eax + eax]
mov eax, dword [edi + 0x40]
movss xmm0, dword [edi + 0x90]
mulss xmm0, xmm2
mov eax, dword [eax + ecx*4]
cmp ecx, dword [edi + 0xb4]
jne 0x5a337e
addss xmm0, dword [eax + 0x28]
comiss xmm0, xmm1
jbe 0x5a3377
movaps xmm0, xmm1
movss dword [eax + 0x28], xmm0
jmp 0x5a339f
movss xmm1, dword [eax + 0x28]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x5a3392
movaps xmm1, xmm0
movss dword [eax + 0x28], xmm1
movss xmm1, dword [0x718824]
inc ecx
cmp ecx, dword [edi + 0x44]
jl 0x5a3350
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8