Function at 0x5a1700
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 0x28
push ebx
mov ebx, ecx
mov dword [esp + 0xc], ebx
mov eax, dword [ebx + 0x2c]
test eax, eax
je 0x5a0ef1
push esi
mov esi, dword [eax + 0xc]
cmp esi, 1
jle 0x5a0ef0
movss xmm0, dword [ebx + 0x40]
comiss xmm0, dword [0x718814]
movss dword [esp + 0xc], xmm0
ja 0x5a0c7b
call fcn.0059fee0
fstp dword [esp + 0x1c]
movss xmm0, dword [esp + 0x1c]
movss dword [esp + 0xc], xmm0
push ebp
push edi
push dword [0x884adc]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call edi
lea ecx, [esi*4 + 0x7f]
and ecx, 0xffffff80
mov ebp, dword [eax + 0xc]
mov dword [esp + 0x1c], ebp
lea edx, [ecx + ebp]
cmp ecx, dword [eax + 8]
jg 0x5a0cae
cmp edx, dword [eax + 0x10]
ja 0x5a0cae
mov dword [eax + 0xc], edx
jmp 0x5a0cbc
push ecx
mov ecx, eax
call fcn.0046a3c0
mov ebp, eax
mov dword [esp + 0x1c], eax
xor ecx, ecx
mov dword [esp + 0x34], esi
test esi, esi
jle 0x5a0d0b
xor edx, edx
mov eax, dword [ebx + 0x2c]
mov eax, dword [eax + 8]
add eax, edx
cmp byte [eax + 0xd], 0
movss xmm0, dword [eax]
jne 0x5a0cfd
cmp byte [eax + 0xc], 0
movss xmm1, dword [esp + 0x14]
je 0x5a0cea
addss xmm0, xmm1
xorps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x5a0cf5
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x5a0cfd
movaps xmm0, xmm1
movss dword [ebp + ecx*4], xmm0
add edx, 0x10
inc ecx
cmp ecx, esi
jl 0x5a0cc8
dec esi
xor edx, edx
mov dword [esp + 0x20], esi
mov al, 1
mov dword [esp + 0x24], edx
test esi, esi
jle 0x5a0ea6
mov dword [esp + 0x14], esi
mov ecx, esi
test al, al
je 0x5a0ea0
xor al, al
xor edi, edi
mov byte [esp + 0x11], al
test esi, esi
jle 0x5a0e8e
mov ecx, dword [esp + 0x14]
xor esi, esi
movss xmm0, dword [ebp + edi*4]
comiss xmm0, dword [ebp + edi*4 + 4]
jbe 0x5a0edf
mov eax, dword [ebx + 0x2c]
mov ebp, dword [eax + 8]
mov eax, dword [ebp + esi + 4]
add ebp, esi
mov dword [esp + 0x30], eax
movss xmm0, dword [ebp]
mov ebx, dword [ebp + 8]
movss dword [esp + 0x2c], xmm0
test ebx, ebx
je 0x5a0d7e
mov ecx, ebx
call fcn.0045c0c0
mov al, byte [ebp + 0xc]
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x11], al
mov al, byte [ebp + 0xd]
mov byte [esp + 0x12], al
mov al, byte [ebp + 0xe]
mov byte [esp + 0x13], al
mov eax, dword [ecx + 0x2c]
mov ebp, dword [eax + 8]
mov eax, dword [esi + ebp + 0x10]
mov dword [esi + ebp], eax
mov eax, dword [esi + ebp + 0x14]
mov dword [esi + ebp + 4], eax
mov eax, dword [esi + ebp + 0x18]
mov dword [esp + 0x28], eax
test eax, eax
je 0x5a0dbf
mov ecx, eax
call fcn.0045c0c0
mov ecx, dword [esi + ebp + 8]
test ecx, ecx
je 0x5a0dcc
call fcn.0045c160
mov eax, dword [esp + 0x28]
mov dword [esi + ebp + 8], eax
movzx eax, byte [esi + ebp + 0x1c]
movss xmm0, dword [esp + 0x2c]
mov byte [esi + ebp + 0xc], al
movzx eax, byte [esi + ebp + 0x1d]
mov byte [esi + ebp + 0xd], al
movzx eax, byte [esi + ebp + 0x1e]
mov byte [esi + ebp + 0xe], al
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x2c]
mov ebp, dword [eax + 8]
mov eax, dword [esp + 0x30]
movss dword [esi + ebp + 0x10], xmm0
mov dword [esi + ebp + 0x14], eax
test ebx, ebx
je 0x5a0e18
mov ecx, ebx
call fcn.0045c0c0
mov ecx, dword [esi + ebp + 0x18]
test ecx, ecx
je 0x5a0e25
call fcn.0045c160
mov al, byte [esp + 0x11]
mov dword [esi + ebp + 0x18], ebx
mov byte [esi + ebp + 0x1c], al
mov al, byte [esp + 0x12]
mov byte [esi + ebp + 0x1d], al
mov al, byte [esp + 0x13]
mov byte [esi + ebp + 0x1e], al
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp + edi*4 + 4]
movss xmm0, dword [ebp + edi*4]
mov dword [ebp + edi*4], eax
mov al, 1
movss dword [ebp + edi*4 + 4], xmm0
mov byte [esp + 0x11], al
test ebx, ebx
je 0x5a0e6e
mov ecx, ebx
call fcn.0045c160
mov al, byte [esp + 0x11]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
inc edi
add esi, 0x10
cmp edi, ecx
jl 0x5a0d44
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
inc edx
dec esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x14], esi
cmp edx, ecx
jl 0x5a0d26
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, dword [esp + 0x34]
push dword [0x884adc]
lea esi, [esi*4 + 0x7f]
and esi, 0xffffff80
call edi
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x5a0ee5
lea ecx, [edx + ebp]
cmp ecx, dword [eax + 0xc]
jne 0x5a0ee5
cmp dword [eax + 0x14], ebp
je 0x5a0ee5
pop edi
mov dword [eax + 0xc], ebp
pop ebp
pop esi
pop ebx
add esp, 0x28
ret
mov al, byte [esp + 0x11]
jmp 0x5a0e76
push edx
push ebp
mov ecx, eax
call fcn.0046a590
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x28
ret
sub esp, 0xc
push esi
mov esi, ecx
mov eax, dword [esi + 0x58]
movss xmm0, dword [esi + 0x30]
comiss xmm0, dword [eax + 8]
movss dword [eax + 0x7c], xmm0
jbe 0x5a171e
movss dword [eax + 8], xmm0
mov ecx, dword [esi + 0x58]
mov eax, dword [ecx + 0x28]
test eax, eax
je 0x5a1756
cmp dword [eax + 0xc], 0
je 0x5a1756
movss xmm0, dword [esi + 0x34]
movss dword [ecx + 0x80], xmm0
mov eax, dword [eax + 0xc]
movss xmm1, dword [eax + 0xc]
subss xmm1, xmm0
movss xmm0, dword [ecx + 8]
comiss xmm0, xmm1
jb 0x5a1756
movss dword [ecx + 8], xmm1
cmp byte [esi + 0x4a], 2
jne 0x5a1788
mov ecx, esi
call fcn.0059fee0
fmul dword [esi + 0x44]
mov eax, dword [esi + 0x58]
fadd dword [esi + 0x30]
fstp dword [esp + 8]
movss xmm0, dword [esp + 8]
movss dword [esi + 0xac], xmm0
movss dword [eax + 8], xmm0
jmp 0x5a1827
cmp byte [esi + 0xc1], 0
jne 0x5a17b5
mov ecx, esi
call fcn.005a0be0
fadd dword [esi + 0x30]
mov eax, dword [esi + 0x58]
fstp dword [esp + 8]
movss xmm0, dword [esp + 8]
movss dword [esi + 0xac], xmm0
movss dword [eax + 8], xmm0
movss xmm0, dword [esi + 0xac]
mov ecx, esi
push edi
mov edi, dword [esi + 0x58]
movss xmm1, dword [edi + 0x7c]
subss xmm0, xmm1
movss dword [esp + 0x10], xmm1
movss dword [esp + 8], xmm0
call fcn.0059fee0
movss xmm0, dword [esp + 8]
xorps xmm1, xmm1
comiss xmm1, dword [esi + 0x3c]
fstp dword [esp + 0xc]
jbe 0x5a1801
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x5a180f
movss xmm0, dword [esp + 0xc]
jmp 0x5a180f
ucomiss xmm0, dword [esp + 0xc]
lahf
test ah, 0x44
jp 0x5a180f
movaps xmm0, xmm1
movss xmm1, dword [esp + 0x10]
addss xmm1, xmm0
movss dword [esi + 0xac], xmm1
movss dword [edi + 8], xmm1
pop edi
mov byte [esi + 0xc0], 0
xorps xmm0, xmm0
movaps xmmword [esi + 0x70], xmm0
mov ecx, esi
movaps xmm0, xmmword [0x7195b0]
movaps xmmword [esi + 0x80], xmm0
movaps xmm0, xmmword [0x719da0]
movaps xmmword [esi + 0x90], xmm0
mov byte [esi + 0xc2], 0
mov eax, dword [esi + 0x44]
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb4], eax
pop esi
add esp, 0xc
jmp 0x5a0c30