Function at 0x5a0f00
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x68
push esi
push edi
mov edi, ecx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x14], edi
mov eax, dword [edi + 0x58]
mov esi, dword [eax + 0x28]
mov dword [esp + 0x24], esi
test esi, esi
je 0x5a0f4a
mov ecx, dword [esi + 0xc]
mov eax, 1
test ecx, ecx
je 0x5a0f3d
call fcn.0045c0c0
mov eax, 1
mov esi, dword [esi + 0xc]
mov dword [esp + 0x3c], esi
mov ecx, dword [esp + 0x3c]
jmp 0x5a0f59
xor ecx, ecx
mov eax, 2
mov dword [esp + 0x3c], ecx
mov esi, dword [esp + 0x3c]
lea edx, [esp + 0x3c]
mov edx, dword [edx]
mov dword [esp + 0x28], edx
test al, 2
je 0x5a0f7b
and eax, 0xfffffffd
mov dword [esp + 0x48], eax
test ecx, ecx
je 0x5a0f7b
call fcn.0045c160
mov eax, dword [esp + 0x48]
test al, 1
je 0x5a0f8a
test esi, esi
je 0x5a0f8a
mov ecx, esi
call fcn.0045c160
mov eax, dword [esp + 0x28]
test eax, eax
je 0x5a16f8
cmp dword [edi + 0x60], 0
je 0x5a0fa1
mov esi, dword [eax + 0x10]
jmp 0x5a0fbb
push dword [eax + 0x10]
mov eax, dword [esp + 0x28]
push dword [ebp + 0x10]
push 0
push dword [eax + 0x10]
call fcn.0057e140
add esp, 0x10
lea esi, [eax + 1]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
movzx eax, word [eax + 0x16]
cmp ax, 0xffff
jle 0x5a0fd0
cwde
cmp eax, esi
cmovl esi, eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea ecx, [esi + esi*2]
shl ecx, 4
mov dword [esp + 0x40], ecx
mov edi, dword [eax + 0xc]
mov dword [esp + 0x44], edi
lea edx, [ecx + 0x7f]
and edx, 0xffffff80
mov dword [esp + 0x38], edx
lea ecx, [edi + edx]
cmp edx, dword [eax + 8]
jg 0x5a1009
cmp ecx, dword [eax + 0x10]
ja 0x5a1009
mov dword [eax + 0xc], ecx
jmp 0x5a1017
push edx
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x44], eax
cmp dword [ebp + 0x18], 0
jle 0x5a102a
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x20], eax
jmp 0x5a1032
mov dword [esp + 0x20], 0
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x20]
mov edx, dword [eax + 0xc]
lea ecx, [ecx*4 + 0x7f]
mov dword [esp + 0x1c], edx
and ecx, 0xffffff80
mov dword [esp + 0x48], ecx
add ecx, edx
mov edx, dword [esp + 0x48]
cmp edx, dword [eax + 8]
jg 0x5a106c
cmp ecx, dword [eax + 0x10]
ja 0x5a106c
mov dword [eax + 0xc], ecx
jmp 0x5a1078
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
cmp dword [eax + 0xa4], 0
jne 0x5a10d1
push dword [ebp + 0x1c]
mov ecx, dword [esp + 0x2c]
push dword [esp + 0x20]
movss xmm0, dword [eax + 0xac]
push dword [esp + 0x28]
mov edx, dword [ecx]
push edi
push esi
push ecx
movss dword [esp], xmm0
call dword [edx + 0x10]
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x5a14c7
push dword [ebp + 0x14]
push dword [esp + 0x28]
push eax
push dword [esp + 0x28]
push dword [esp + 0x30]
call fcn.005dce00
add esp, 0x14
jmp 0x5a14c7
push dword [esp + 0x40]
push 0
push edi
call fcn.0045d830
mov eax, dword [esp + 0x20]
add esp, 0xc
xorps xmm4, xmm4
mov dword [esp + 0x30], 0
movss dword [esp + 0x3c], xmm4
mov eax, dword [eax + 0xa4]
inc eax
test eax, eax
jle 0x5a138a
mov dword [esp + 0x34], 0
nop dword [eax]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x38]
mov edx, dword [eax + 0xc]
add ecx, edx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x38]
cmp edx, dword [eax + 8]
jg 0x5a113c
cmp ecx, dword [eax + 0x10]
ja 0x5a113c
mov dword [eax + 0xc], ecx
jmp 0x5a1148
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
cmp eax, dword [ecx + 0xa4]
sete al
mov byte [esp + 0x13], al
test al, al
je 0x5a1166
xorps xmm1, xmm1
jmp 0x5a1175
mov eax, dword [ecx + 0xa0]
mov edx, dword [esp + 0x34]
movss xmm1, dword [edx + eax]
mov eax, dword [ecx + 0x58]
lea edx, [esp + 0x4c]
push edx
lea edx, [esp + 0x44]
push edx
movss xmm0, dword [eax + 0x40]
mov dword [eax + 0x40], 0x3f800000
mov ecx, dword [ecx + 0x58]
push ecx
movss dword [esp + 0x38], xmm0
movss dword [esp], xmm1
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [esp + 0x14]
movss xmm0, dword [esp + 0x2c]
mov eax, dword [ecx + 0x58]
movss dword [eax + 0x40], xmm0
cmp byte [ecx + 0x4a], 0
jne 0x5a11e0
cmp dword [esp + 0x4c], 0
je 0x5a11e0
mov ecx, dword [ecx + 0x58]
mov eax, dword [ecx + 0x28]
mov eax, dword [eax + 0xc]
movss xmm0, dword [eax + 0xc]
addss xmm0, dword [ecx + 0x7c]
mov ecx, dword [esp + 0x14]
movss dword [esp + 0x40], xmm0
jmp 0x5a11e6
movss xmm0, dword [esp + 0x40]
cmp byte [esp + 0x13], 0
movss xmm2, dword [esp + 0x3c]
je 0x5a1201
movss xmm1, dword [0x718824]
subss xmm1, xmm2
jmp 0x5a1211
mov eax, dword [ecx + 0xa0]
mov edx, dword [esp + 0x34]
movss xmm1, dword [eax + edx + 4]
mov eax, dword [esp + 0x30]
movss dword [esp + 0x2c], xmm1
cmp eax, dword [ecx + 0xa4]
jl 0x5a1226
xorps xmm1, xmm1
push dword [ebp + 0x1c]
mov ecx, dword [esp + 0x2c]
addss xmm1, xmm2
push dword [esp + 0x20]
push dword [esp + 0x28]
mov eax, dword [ecx]
push dword [esp + 0x24]
movss dword [esp + 0x4c], xmm1
push esi
push ecx
movss dword [esp], xmm0
call dword [eax + 0x10]
xor edx, edx
test esi, esi
jle 0x5a12fe
movss xmm2, dword [esp + 0x2c]
xor eax, eax
shufps xmm2, xmm2, 0
xorps xmm3, xmm3
nop dword [eax + eax]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*2]
add eax, eax
movaps xmm0, xmm2
mulps xmm0, xmmword [ecx + eax*8]
addps xmm0, xmmword [edi + eax*8]
movaps xmmword [edi + eax*8], xmm0
movaps xmm0, xmmword [ecx + eax*8 + 0x20]
mulps xmm0, xmm2
addps xmm0, xmmword [edi + eax*8 + 0x20]
movaps xmmword [edi + eax*8 + 0x20], xmm0
movaps xmm4, xmmword [ecx + eax*8 + 0x10]
movaps xmm0, xmm4
mulps xmm0, xmmword [edi + eax*8 + 0x10]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm3, xmm0
jbe 0x5a12d9
movaps xmm0, xmmword [0x719550]
lea ecx, [esp + 0x50]
subps xmm0, xmm2
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x50], xmm0
jmp 0x5a12e2
movaps xmmword [esp + 0x60], xmm2
lea ecx, [esp + 0x60]
movups xmm0, xmmword [ecx]
inc edx
mulps xmm0, xmm4
addps xmm0, xmmword [edi + eax*8 + 0x10]
movaps xmmword [edi + eax*8 + 0x10], xmm0
movsx eax, dx
cmp eax, esi
jl 0x5a1270
mov eax, dword [ebp + 0x18]
movss xmm3, dword [esp + 0x2c]
test eax, eax
jle 0x5a1329
push dword [ebp + 0x14]
push ecx
movss dword [esp], xmm3
push dword [esp + 0x2c]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x34]
call fcn.005dce50
add esp, 0x18
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x38]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
mov ecx, dword [esp + 0x18]
jg 0x5a135d
add ecx, edx
cmp ecx, dword [eax + 0xc]
mov ecx, dword [esp + 0x18]
jne 0x5a135d
cmp dword [eax + 0x14], ecx
je 0x5a135d
mov dword [eax + 0xc], ecx
jmp 0x5a1366
push edx
push ecx
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
add dword [esp + 0x34], 0x10
inc ecx
mov dword [esp + 0x30], ecx
mov eax, dword [eax + 0xa4]
inc eax
cmp ecx, eax
jl 0x5a1110
xorps xmm4, xmm4
xor ecx, ecx
test esi, esi
jle 0x5a14c7
movaps xmm6, xmmword [0x719da0]
xor eax, eax
movss xmm7, dword [0x77f9a4]
nop word [eax + eax]
lea eax, [eax + eax*2]
movaps xmm0, xmm6
andps xmm0, xmmword [0x719120]
shl eax, 4
add eax, edi
comiss xmm7, xmm0
jbe 0x5a13dd
xorps xmm0, xmm0
movaps xmmword [eax], xmm0
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [eax + 0x10], xmm0
jmp 0x5a14b4
movaps xmm1, xmmword [0x719330]
divps xmm1, xmm6
shufps xmm1, xmm1, 0
movaps xmm0, xmm1
mulps xmm0, xmmword [eax]
movaps xmmword [eax], xmm0
mulps xmm1, xmmword [eax + 0x20]
movaps xmmword [eax + 0x20], xmm1
movaps xmm0, xmmword [eax + 0x10]
mulps xmm0, xmm0
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm7, xmm0
jbe 0x5a1429
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [eax + 0x10], xmm0
jmp 0x5a1495
movaps xmm5, xmmword [eax + 0x10]
movaps xmm0, xmm5
mulps xmm0, xmm5
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm4
movaps xmm3, xmm1
shufps xmm3, xmm1, 0xb1
addps xmm3, xmm1
shufps xmm3, xmm3, 0
movaps xmm2, xmm3
movaps xmm4, xmm3
rsqrtss xmm2, xmm2
cmpeqss xmm4, xmm0
mulss xmm3, xmm2
movss xmm0, dword [0x719764]
movaps xmm1, xmm0
mulss xmm3, xmm2
subss xmm1, xmm3
movss xmm3, dword [0x719760]
movaps xmm0, xmm3
mulss xmm0, xmm2
mulss xmm0, xmm1
andnps xmm4, xmm0
shufps xmm4, xmm4, 0
mulps xmm4, xmm5
movaps xmmword [eax + 0x10], xmm4
movaps xmm1, xmmword [eax + 0x20]
mulps xmm1, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
comiss xmm7, xmm1
jbe 0x5a14b8
movaps xmmword [eax + 0x20], xmm6
inc ecx
xorps xmm4, xmm4
movsx eax, cx
cmp eax, esi
jl 0x5a13b0
mov eax, dword [esp + 0x14]
test byte [eax + 0x4b], 4
je 0x5a14e8
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x2c]
call fcn.005955d0
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
jmp 0x5a14f0
mov dword [esp + 0x34], 0
mov ecx, dword [eax + 0x60]
mov dword [esp + 0x4c], ecx
test ecx, ecx
jne 0x5a1506
mov ecx, edi
mov dword [esp + 0x18], ecx
jmp 0x5a15f0
mov eax, dword [ecx + 8]
push dword [0x884adc]
mov esi, dword [ecx + 0x28]
mov dword [esp + 0x40], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea ecx, [esi + esi*2]
shl ecx, 4
add ecx, 0x7f
and ecx, 0xffffff80
mov eax, dword [edx + 0xc]
mov dword [esp + 0x18], eax
add eax, ecx
cmp ecx, dword [edx + 8]
jg 0x5a1542
cmp eax, dword [edx + 0x10]
ja 0x5a1542
mov dword [edx + 0xc], eax
jmp 0x5a154e
push ecx
mov ecx, edx
call fcn.0046a3c0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x40], 0
mov eax, dword [eax + 0x14]
add eax, 0x24
mov dword [esp + 0x30], eax
test esi, esi
jle 0x5a15b9
mov edi, dword [esp + 0x18]
xor edx, edx
nop
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x24]
movsx eax, word [eax + edx*2]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x30]
shl ecx, 4
add ecx, dword [eax]
lea eax, [edx + edx*2]
add eax, eax
movaps xmm0, xmmword [ecx]
movaps xmmword [edi + eax*8], xmm0
movaps xmm0, xmmword [ecx + 0x10]
movaps xmmword [edi + eax*8 + 0x10], xmm0
movaps xmm0, xmmword [ecx + 0x20]
movaps xmmword [edi + eax*8 + 0x20], xmm0
mov eax, dword [esp + 0x40]
inc eax
movsx edx, ax
mov dword [esp + 0x40], eax
cmp edx, esi
jl 0x5a1570
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x60]
mov eax, dword [eax + 0x58]
mov eax, dword [eax + 0x28]
cmp byte [eax + 0x28], 1
sete al
movzx eax, al
push eax
push dword [ecx + 0x18]
push dword [ecx + 0xc]
push dword [esp + 0x24]
push edi
push dword [esp + 0x50]
call fcn.00569cf0
mov eax, dword [esp + 0x2c]
add esp, 0x18
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x60]
test eax, eax
jne 0x5a1600
mov eax, dword [esp + 0x24]
lea edx, [eax + 0x10]
jmp 0x5a1607
lea edx, [eax + 0x24]
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x28], 1
push 1
push dword [esp + 0x38]
sete al
movzx eax, al
push eax
push edx
push dword [ebp + 0x20]
push dword [ebp + 0xc]
push dword [ebp + 0x10]
push ecx
push esi
call fcn.005dcce0
mov eax, dword [esp + 0x38]
add esp, 0x24
cmp dword [eax + 0x60], 0
je 0x5a1682
push dword [0x884adc]
lea esi, [esi + esi*2]
shl esi, 4
add esi, 0x7f
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea eax, [esi + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x18]
cmp esi, dword [edx + 8]
mov esi, dword [esp + 0x44]
jg 0x5a1679
lea ecx, [esi + eax]
cmp ecx, dword [edx + 0xc]
jne 0x5a1679
cmp dword [edx + 0x14], eax
je 0x5a1679
mov dword [edx + 0xc], eax
jmp 0x5a1682
push esi
push eax
mov ecx, edx
call fcn.0046a590
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x1c]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5a16b3
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5a16b3
cmp dword [eax + 0x14], esi
je 0x5a16b3
mov dword [eax + 0xc], esi
jmp 0x5a16bc
push edx
push esi
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x38]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5a16ef
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x5a16ef
cmp dword [eax + 0x14], edi
je 0x5a16ef
mov dword [eax + 0xc], edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x1c
push edx
push edi
mov ecx, eax
call fcn.0046a590
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x1c