Function at 0x5d44d0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
mov eax, dword [ebp + 0x14]
sub esp, 0x58
mov eax, dword [eax]
push esi
push edi
cmp dword [eax + 4], 2
jle 0x5d44ec
movsx edi, word [eax + 0x32]
jmp 0x5d44ee
xor edi, edi
movsx esi, word [eax + 0x14]
xorps xmm4, xmm4
movss xmm0, dword [0x718824]
add esi, eax
mov eax, dword [ebp + 8]
xorps xmm7, xmm7
movss xmm5, dword [ebp + 0x10]
subss xmm0, xmm5
mov dword [esp + 0x10], edi
movaps xmmword [esi], xmm4
movaps xmmword [esi + 0x10], xmm4
movaps xmmword [esi + 0x20], xmm4
mov eax, dword [eax]
movaps xmm2, xmm0
movss dword [esp + 0x2c], xmm0
shufps xmm2, xmm2, 0
movaps xmm0, xmm2
movaps xmmword [esp + 0x40], xmm2
movsx ecx, word [eax + 0x14]
mulps xmm0, xmmword [ecx + eax]
movaps xmmword [esi], xmm0
movaps xmm0, xmmword [ecx + eax + 0x20]
mulps xmm0, xmm2
addps xmm0, xmmword [esi + 0x20]
movaps xmmword [esi + 0x20], xmm0
movaps xmm3, xmmword [ecx + eax + 0x10]
lea eax, [esp + 0x50]
movaps xmm0, xmmword [esi + 0x10]
mulps xmm0, xmm3
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm7, xmm0
jbe 0x5d458d
movaps xmm0, xmmword [0x719550]
subps xmm0, xmm2
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x50], xmm0
jmp 0x5d4592
movaps xmmword [esp + 0x50], xmm2
movups xmm0, xmmword [eax]
mov eax, dword [ebp + 0xc]
mulps xmm0, xmm3
movaps xmm3, xmm5
shufps xmm3, xmm3, 0
movaps xmmword [esp + 0x30], xmm3
addps xmm0, xmmword [esi + 0x10]
movaps xmmword [esi + 0x10], xmm0
mov eax, dword [eax]
movsx ecx, word [eax + 0x14]
movaps xmm0, xmmword [ecx + eax]
mulps xmm0, xmm3
addps xmm0, xmmword [esi]
movaps xmmword [esi], xmm0
movaps xmm0, xmmword [ecx + eax + 0x20]
mulps xmm0, xmm3
addps xmm0, xmmword [esi + 0x20]
movaps xmmword [esi + 0x20], xmm0
movaps xmm5, xmmword [ecx + eax + 0x10]
lea eax, [esp + 0x50]
movaps xmm0, xmm5
mulps xmm0, xmmword [esi + 0x10]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm7, xmm0
jbe 0x5d4610
movaps xmm0, xmmword [0x719550]
subps xmm0, xmm3
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x50], xmm0
jmp 0x5d4615
movaps xmmword [esp + 0x50], xmm3
movups xmm0, xmmword [eax]
mulps xmm0, xmm5
movss xmm5, dword [0x77f9a4]
addps xmm0, xmmword [esi + 0x10]
movaps xmmword [esi + 0x10], xmm0
movaps xmm1, xmmword [0x719330]
movaps xmm0, xmm1
andps xmm0, xmmword [0x719120]
comiss xmm5, xmm0
jbe 0x5d4654
movaps xmmword [esi], xmm4
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [esi + 0x10], xmm0
jmp 0x5d46db
divps xmm1, xmm1
shufps xmm1, xmm1, 0
movaps xmm0, xmm1
mulps xmm0, xmmword [esi]
movaps xmmword [esi], xmm0
movaps xmm0, xmmword [esi + 0x20]
mulps xmm0, xmm1
movaps xmmword [esi + 0x20], xmm0
movaps xmm0, xmmword [esi + 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 xmm5, xmm0
jbe 0x5d469c
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [esi + 0x10], xmm0
jmp 0x5d46bc
lea ecx, [esi + 0x10]
call fcn.00478080
movaps xmm2, xmmword [esp + 0x40]
xorps xmm4, xmm4
movaps xmm3, xmmword [esp + 0x30]
xorps xmm7, xmm7
movss xmm5, dword [0x77f9a4]
movaps xmm1, xmmword [esi + 0x20]
mulps xmm1, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
comiss xmm5, xmm1
jbe 0x5d46e6
movaps xmm0, xmmword [0x719da0]
movaps xmmword [esi + 0x20], xmm0
mov esi, dword [ebp + 0x14]
mov eax, dword [esi]
cmp dword [eax + 4], 1
jle 0x5d48a2
movsx esi, word [eax + 0x24]
movaps xmm0, xmm2
add esi, eax
mov eax, dword [ebp + 8]
movaps xmmword [esi], xmm4
movaps xmmword [esi + 0x10], xmm4
movaps xmmword [esi + 0x20], xmm4
mov eax, dword [eax]
movsx ecx, word [eax + 0x24]
mulps xmm0, xmmword [ecx + eax]
movaps xmmword [esi], xmm0
movaps xmm0, xmmword [ecx + eax + 0x20]
mulps xmm0, xmm2
addps xmm0, xmmword [esi + 0x20]
movaps xmmword [esi + 0x20], xmm0
movaps xmm6, xmmword [ecx + eax + 0x10]
lea eax, [esp + 0x50]
movaps xmm0, xmm6
mulps xmm0, xmmword [esi + 0x10]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm7, xmm0
jbe 0x5d4767
movaps xmm0, xmmword [0x719550]
subps xmm0, xmm2
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x50], xmm0
jmp 0x5d476c
movaps xmmword [esp + 0x50], xmm2
movups xmm0, xmmword [eax]
mov eax, dword [ebp + 0xc]
mulps xmm6, xmm0
movaps xmm0, xmm3
addps xmm6, xmmword [esi + 0x10]
movaps xmmword [esi + 0x10], xmm6
mov eax, dword [eax]
movsx ecx, word [eax + 0x24]
mulps xmm0, xmmword [ecx + eax]
addps xmm0, xmmword [esi]
movaps xmmword [esi], xmm0
movaps xmm0, xmmword [ecx + eax + 0x20]
mulps xmm0, xmm3
addps xmm0, xmmword [esi + 0x20]
movaps xmmword [esi + 0x20], xmm0
movaps xmm2, xmmword [ecx + eax + 0x10]
lea eax, [esp + 0x50]
movaps xmm0, xmm2
mulps xmm0, xmmword [esi + 0x10]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm7, xmm0
jbe 0x5d47de
movaps xmm0, xmmword [0x719550]
subps xmm0, xmm3
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x50], xmm0
jmp 0x5d47e3
movaps xmmword [esp + 0x50], xmm3
movups xmm0, xmmword [eax]
mulps xmm2, xmm0
addps xmm2, xmmword [esi + 0x10]
movaps xmmword [esi + 0x10], xmm2
movaps xmm1, xmmword [0x719330]
movaps xmm0, xmm1
andps xmm0, xmmword [0x719120]
comiss xmm5, xmm0
jbe 0x5d4817
movaps xmmword [esi], xmm4
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [esi + 0x10], xmm0
jmp 0x5d488b
divps xmm1, xmm1
shufps xmm1, xmm1, 0
movaps xmm0, xmm1
mulps xmm0, xmmword [esi]
movaps xmmword [esi], xmm0
mulps xmm1, xmmword [esi + 0x20]
movaps xmmword [esi + 0x20], xmm1
movaps xmm0, xmmword [esi + 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 xmm5, xmm0
jbe 0x5d485c
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [esi + 0x10], xmm0
jmp 0x5d486c
lea ecx, [esi + 0x10]
call fcn.00478080
movss xmm5, dword [0x77f9a4]
movaps xmm1, xmmword [esi + 0x20]
mulps xmm1, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
comiss xmm5, xmm1
jbe 0x5d4896
movaps xmm0, xmmword [0x719da0]
movaps xmmword [esi + 0x20], xmm0
mov esi, dword [ebp + 0x14]
mov eax, dword [esi]
mov dword [eax + 0x28], 0x3f800000
test edi, edi
jle 0x5d4a16
mov esi, dword [esi]
lea eax, [edi + edi*2]
shl eax, 4
lea edx, [edi + 1]
mov edi, dword [ebp + 8]
mov dword [esp + 0x3c], edx
movsx ecx, word [esi + 0x34]
add ecx, eax
mov dword [esp + 0x5c], edx
mov edi, dword [edi]
add ecx, esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ecx
lea ecx, [edx + 0x1f]
sar ecx, 5
mov dword [esp + 0x34], ecx
or ecx, 0x80000000
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], ecx
movsx ecx, word [edi + 0x34]
add ecx, edi
movss xmm0, dword [ebp + 0x10]
add ecx, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x50], ecx
lea ecx, [edx + 0x1f]
mov edx, dword [ebp + 0xc]
sar ecx, 5
mov dword [esp + 0x54], ecx
or ecx, 0x80000000
mov dword [esp + 0x1c], ecx
mov edx, dword [edx]
mov dword [esp + 0x58], ecx
movsx esi, word [edx + 0x34]
add esi, edx
add esi, eax
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x18], esi
lea ecx, [eax + 0x1f]
sar ecx, 5
lea eax, [esp + 0x30]
mov dword [esp + 0x44], ecx
or ecx, 0x80000000
push eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [ebp + 0x14]
mov esi, dword [ecx]
movsx eax, word [esi + 0x34]
add eax, esi
push eax
push ecx
movss dword [esp], xmm0
lea eax, [esp + 0x4c]
push dword [esp + 0x1c]
push eax
movsx eax, word [edx + 0x34]
add eax, edx
push eax
lea eax, [esp + 0x68]
push eax
movsx eax, word [edi + 0x34]
add eax, edi
push eax
call fcn.005d42a0
mov esi, dword [ebp + 0x14]
add esp, 0x20
mov eax, dword [esi]
mov dword [eax + 0x38], 0x3f800000
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test byte [eax + 0x3c], 1
je 0x5d49b0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
test byte [eax + 0x3c], 1
je 0x5d49b0
mov eax, dword [esi]
or byte [eax + 0x3c], 1
mov eax, dword [esp + 0x14]
test eax, eax
js 0x5d49d2
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x1c]
call dword [eax + 0x10]
mov eax, dword [esp + 0x1c]
test eax, eax
js 0x5d49f4
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x24]
call dword [eax + 0x10]
mov eax, dword [esp + 0x24]
test eax, eax
js 0x5d4a16
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x2c]
call dword [eax + 0x10]
mov eax, dword [esi]
push dword [0x884adc]
mov edi, dword [eax + 4]
mov dword [esp + 0x2c], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
lea eax, [edi*4 + 0x7f]
and eax, 0xffffff80
mov dword [esp + 0x24], eax
mov edi, dword [ecx + 0xc]
mov dword [esp + 0x10], edi
lea edx, [eax + edi]
cmp eax, dword [ecx + 8]
jg 0x5d4a54
cmp edx, dword [ecx + 0x10]
ja 0x5d4a54
mov dword [ecx + 0xc], edx
jmp 0x5d4a60
push eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x28]
add ecx, 0xffffffff
js 0x5d4a6e
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
push esi
call fcn.005d4b90
add esp, 4
mov esi, eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
lea eax, [esi*4 + 0x7f]
and eax, 0xffffff80
mov dword [esp + 0x28], eax
mov edi, dword [ecx + 0xc]
lea edx, [eax + edi]
cmp eax, dword [ecx + 8]
jg 0x5d4aaa
cmp edx, dword [ecx + 0x10]
ja 0x5d4aaa
mov dword [ecx + 0xc], edx
jmp 0x5d4ab2
push eax
call fcn.0046a3c0
mov edi, eax
push dword [ebp + 0x14]
call fcn.005d3480
mov esi, dword [esp + 0x14]
add esp, 4
movss xmm0, dword [esp + 0x2c]
push edi
push esi
push dword [ebp + 0x14]
push ecx
movss dword [esp], xmm0
push dword [ebp + 8]
call fcn.005d3510
movss xmm0, dword [ebp + 0x10]
add esp, 0x14
push edi
push esi
push dword [ebp + 0x14]
push ecx
movss dword [esp], xmm0
push dword [ebp + 0xc]
call fcn.005d3510
push dword [ebp + 0x14]
push edi
push esi
call fcn.005d3b10
mov eax, dword [ebp + 0x14]
add esp, 0x20
mov eax, dword [eax]
mov dword [eax + 0x18], 0x3f800000
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x28]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d4b3b
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x5d4b3b
cmp dword [eax + 0x14], edi
je 0x5d4b3b
mov dword [eax + 0xc], edi
jmp 0x5d4b44
push edx
push edi
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x24]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d4b75
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5d4b75
cmp dword [eax + 0x14], esi
je 0x5d4b75
mov dword [eax + 0xc], esi
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push edx
push esi
mov ecx, eax
call fcn.0046a590
pop edi
pop esi
mov esp, ebp
pop ebp
ret