Function at 0x5d5360
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
mov ecx, dword [ebp + 8]
movss xmm2, dword [ebp + 0xc]
push esi
movaps xmm1, xmm2
movaps xmmword [esp + 0x5c], xmm2
mov edx, dword [ecx]
shufps xmm1, xmm1, 0
push edi
movaps xmmword [esp + 0x90], xmm1
movsx esi, word [edx + 2]
mov dword [esp + 0x10], esi
test esi, esi
je 0x5d5c59
xorps xmm5, xmm5
ucomiss xmm2, xmm5
lahf
test ah, 0x44
jnp 0x5d5c59
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 2]
mov dword [esp + 0x24], eax
test eax, eax
jne 0x5d5632
ucomiss xmm2, dword [0x718824]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x44], ecx
lahf
test ah, 0x44
jp 0x5d53fd
movsx edx, word [edx + 6]
imul edx, esi
mov esi, dword [ebp + 0x14]
sar edx, 2
test edx, edx
jle 0x5d55d6
mov eax, dword [ecx]
lea esi, [esi + 4]
mov dword [esi - 4], eax
lea ecx, [ecx + 4]
sub edx, 1
jne 0x5d53e8
jmp 0x5d55d6
cmp byte [edx + 0xd], 1
jne 0x5d54ab
test esi, esi
jle 0x5d55da
mov eax, dword [ebp + 0x14]
add ecx, 0x10
xorps xmm3, xmm3
shufps xmm2, xmm2, 0
add eax, 0x10
nop
movaps xmmword [eax - 0x10], xmm3
movaps xmmword [eax + 0x10], xmm3
movaps xmmword [eax], xmm3
movaps xmm0, xmmword [ecx - 0x10]
mulps xmm0, xmm2
addps xmm0, xmm3
movaps xmmword [eax - 0x10], xmm0
movaps xmm0, xmmword [ecx + 0x10]
mulps xmm0, xmm2
addps xmm0, xmm3
movaps xmmword [eax + 0x10], xmm0
movaps xmm0, xmm3
movaps xmm4, xmmword [ecx]
mulps xmm0, xmm4
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
comiss xmm5, xmm0
jbe 0x5d5482
movaps xmm0, xmmword [0x719550]
lea edx, [esp + 0x60]
subps xmm0, xmm2
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x60], xmm0
jmp 0x5d548b
movaps xmmword [esp + 0x70], xmm2
lea edx, [esp + 0x70]
movups xmm0, xmmword [edx]
add ecx, 0x30
mulps xmm0, xmm4
addps xmm0, xmm3
movaps xmmword [eax], xmm0
add eax, 0x30
sub esi, 1
jne 0x5d5420
jmp 0x5d55d6
mov edi, dword [ebp + 0x14]
xor edx, edx
mov dword [esp + 0x14], edi
test esi, esi
jle 0x5d55da
cmp esi, 8
jb 0x5d551a
mov eax, dword [esp + 0x10]
dec esi
dec eax
lea esi, [edi + esi*4]
lea eax, [ecx + eax*4]
cmp edi, eax
ja 0x5d54d5
cmp esi, ecx
jae 0x5d5516
mov esi, dword [esp + 0x10]
mov eax, esi
and eax, 0x80000007
jns 0x5d54e7
dec eax
or eax, 0xfffffff8
inc eax
mov edi, esi
mov esi, ecx
sub edi, eax
mov eax, dword [ebp + 0x14]
movups xmm0, xmmword [esi]
add edx, 8
lea eax, [eax + 0x20]
lea esi, [esi + 0x20]
mulps xmm0, xmm1
movups xmmword [eax - 0x20], xmm0
movups xmm0, xmmword [esi - 0x10]
mulps xmm0, xmm1
movups xmmword [eax - 0x10], xmm0
cmp edx, edi
jl 0x5d54f0
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
cmp edx, esi
jge 0x5d55da
mov eax, esi
sub eax, edx
cmp eax, 4
jl 0x5d55ab
lea eax, [edi + 4]
mov edi, ecx
sub edi, dword [esp + 0x14]
lea esi, [ecx + 0xc]
mov dword [esp + 0x1c], edi
lea esi, [esi + edx*4]
mov edi, dword [esp + 0x10]
lea eax, [eax + edx*4]
mov ecx, dword [esp + 0x1c]
sub edi, edx
sub edi, 4
shr edi, 2
inc edi
lea edx, [edx + edi*4]
nop dword [eax]
movss xmm0, dword [esi - 0xc]
lea eax, [eax + 0x10]
mulss xmm0, xmm2
lea esi, [esi + 0x10]
movss dword [eax - 0x14], xmm0
movss xmm0, dword [ecx + eax - 0x10]
mulss xmm0, xmm2
movss dword [eax - 0x10], xmm0
movss xmm0, dword [esi - 0x14]
mulss xmm0, xmm2
movss dword [eax - 0xc], xmm0
movaps xmm0, xmm2
mulss xmm0, dword [esi - 0x10]
movss dword [eax - 8], xmm0
sub edi, 1
jne 0x5d5560
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x10]
cmp edx, esi
jge 0x5d55da
mov esi, dword [esp + 0x14]
sub ecx, esi
lea eax, [esi + edx*4]
mov esi, dword [esp + 0x10]
sub esi, edx
nop
movss xmm0, dword [eax + ecx]
lea eax, [eax + 4]
mulss xmm0, xmm2
movss dword [eax - 4], xmm0
sub esi, 1
jne 0x5d55c0
mov esi, dword [esp + 0x10]
mov edx, dword [ebp + 8]
push esi
mov eax, dword [edx]
movsx ecx, word [eax + 6]
movsx eax, word [eax]
imul ecx, eax
mov eax, dword [ebp + 0x10]
add ecx, 0xf
and ecx, 0xfffffff0
add ecx, dword [edx + 4]
movsx edx, word [eax + 6]
movsx eax, word [eax]
imul edx, eax
push ecx
add edx, 0xf
and edx, 0xfffffff0
add edx, dword [ebp + 0x14]
push edx
call fcn.0045d810
mov eax, dword [ebp + 0x10]
add esp, 0xc
mov word [eax + 2], si
test esi, esi
jle 0x5d5c59
mov edi, dword [ebp + 0x18]
mov ecx, esi
mov eax, dword [ebp + 0xc]
rep stosd dword es:[edi], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movsx edi, word [edx + 6]
push dword [0x884adc]
shl edi, 2
mov esi, edi
mov dword [esp + 0x2c], edi
imul esi, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi*4 + 0x7f]
and edx, 0xffffff80
mov dword [esp + 0x5c], edx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x40], ecx
add ecx, edx
cmp edx, dword [eax + 8]
jg 0x5d5674
cmp ecx, dword [eax + 0x10]
ja 0x5d5674
mov dword [eax + 0xc], ecx
jmp 0x5d5680
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x40], eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, dword [esp + 0x24]
add edx, 0x7f
and edx, 0xffffff80
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x20], ecx
add ecx, edx
mov dword [esp + 0x58], edx
cmp edx, dword [eax + 8]
jg 0x5d56b2
cmp ecx, dword [eax + 0x10]
ja 0x5d56b2
mov dword [eax + 0xc], ecx
jmp 0x5d56be
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x20], eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x24]
lea edx, [ecx*4 + 0x7f]
mov ecx, dword [eax + 0xc]
and edx, 0xffffff80
mov dword [esp + 0x3c], ecx
add ecx, edx
mov dword [esp + 0x54], edx
cmp edx, dword [eax + 8]
jg 0x5d56f4
cmp ecx, dword [eax + 0x10]
ja 0x5d56f4
mov dword [eax + 0xc], ecx
jmp 0x5d5700
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x3c], eax
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x40]
movsx eax, word [ecx + 6]
movsx ecx, word [ecx]
imul eax, ecx
mov ecx, dword [ebp + 0x14]
add eax, 0xf
and eax, 0xfffffff0
add eax, ecx
mov dword [esp + 0x1c], eax
test esi, esi
jle 0x5d5738
mov eax, dword [ecx]
lea edx, [edx + 4]
mov dword [edx - 4], eax
lea ecx, [ecx + 4]
sub esi, 1
jne 0x5d5724
mov eax, dword [esp + 0x1c]
push dword [esp + 0x24]
push eax
push dword [esp + 0x28]
call fcn.0045d810
mov eax, dword [ebp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0x24]
mov ecx, eax
mov dword [esp + 0x34], eax
test edx, edx
jle 0x5d576e
mov esi, dword [esp + 0x3c]
sub esi, eax
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [esi + ecx - 4], eax
sub edx, 1
jne 0x5d5760
mov eax, dword [ebp + 0x10]
xor ecx, ecx
mov byte [esp + 0x38], cl
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x48], ecx
mov word [eax + 2], cx
mov eax, dword [esp + 0x40]
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x10]
mov byte [esp + 0x1c], cl
mov ecx, dword [ebp + 8]
mov dword [esp + 0x18], edx
movsx esi, word [eax + 6]
movsx eax, word [eax]
imul esi, eax
mov eax, dword [ebp + 8]
mov ecx, dword [ecx + 4]
mov dword [esp + 0xc], ecx
mov eax, dword [eax]
add esi, 0xf
and esi, 0xfffffff0
add esi, edx
mov dword [esp + 0x14], esi
movsx esi, word [eax + 6]
movsx eax, word [eax]
imul esi, eax
mov eax, dword [esp + 0x38]
add esi, 0xf
and esi, 0xfffffff0
add esi, ecx
mov dword [esp + 0x30], esi
nop dword [eax + eax]
cmp byte [esp + 0x1c], 0
jne 0x5d5bad
mov esi, 2
test al, al
jne 0x5d586f
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x2c]
mov al, byte [ecx + eax*2]
mov ecx, dword [esp + 0x30]
mov cl, byte [ecx + edi]
mov edi, dword [esp + 0x28]
cmp cl, al
jg 0x5d586f
jge 0x5d5874
mov esi, dword [esp + 0xc]
push edi
push esi
push edx
call fcn.0045d810
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [esp + 0x14]
movaps xmm0, xmmword [esp + 0x60]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
lea eax, [edi*4]
mov edx, dword [esp + 0x34]
add esi, eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0xc], esi
movss dword [edx], xmm0
mov edx, dword [esp + 0x2c]
inc edx
cmp edx, dword [esp + 0x10]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x18]
jl 0x5d5b92
mov byte [esp + 0x38], 1
jmp 0x5d5b92
mov esi, 1
cmp byte [ebp + 0x1c], 0
je 0x5d58a1
cmp esi, 2
jne 0x5d58a1
lea ecx, [edi - 1]
test ecx, ecx
js 0x5d5891
inc ecx
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x48]
mov dword [eax], 0
jmp 0x5d58c0
push edi
push dword [esp + 0x48]
push edx
call fcn.0045d810
mov ecx, dword [esp + 0x54]
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x34]
mov eax, dword [eax + ecx*4]
mov dword [edx], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov al, byte [eax + ecx]
inc ecx
mov byte [edx], al
lea eax, [edi*4]
add dword [esp + 0x44], eax
mov edx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x24]
mov dword [esp + 0x48], ecx
mov ecx, 1
movzx edx, dl
cmovge edx, ecx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x18]
cmp esi, 2
jne 0x5d5b92
cmp byte [ebp + 0x1c], 0
movaps xmm2, xmmword [esp + 0x60]
je 0x5d5943
ucomiss xmm2, dword [0x718824]
lahf
test ah, 0x44
jp 0x5d5943
mov esi, dword [esp + 0xc]
mov ecx, esi
test edi, edi
jle 0x5d5b5d
mov esi, edx
mov edx, edi
sub esi, ecx
nop dword [eax]
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [esi + ecx - 4], eax
sub edx, 1
jne 0x5d5930
jmp 0x5d5b59
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp byte [eax + 0xd], cl
jne 0x5d59ea
mov esi, dword [esp + 0xc]
movaps xmm3, xmm2
shufps xmm3, xmm3, 0
movaps xmm0, xmm3
mulps xmm0, xmmword [esi]
addps xmm0, xmmword [edx]
movaps xmmword [edx], xmm0
movaps xmm0, xmmword [esi + 0x20]
mulps xmm0, xmm3
addps xmm0, xmmword [edx + 0x20]
movaps xmmword [edx + 0x20], xmm0
movaps xmm2, xmmword [esi + 0x10]
movaps xmm0, xmm2
mulps xmm0, xmmword [edx + 0x10]
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
xorps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x5d59c8
movaps xmm0, xmmword [0x719550]
lea eax, [esp + 0x70]
subps xmm0, xmm3
shufps xmm0, xmm0, 0
movaps xmmword [esp + 0x70], xmm0
movups xmm0, xmmword [eax]
mulps xmm2, xmm0
addps xmm2, xmmword [edx + 0x10]
movaps xmmword [edx + 0x10], xmm2
jmp 0x5d5b5d
lea eax, [esp + 0x80]
movaps xmmword [esp + 0x80], xmm3
movups xmm0, xmmword [eax]
mulps xmm2, xmm0
addps xmm2, xmmword [edx + 0x10]
movaps xmmword [edx + 0x10], xmm2
jmp 0x5d5b5d
xor ecx, ecx
test edi, edi
jle 0x5d5b59
mov esi, dword [esp + 0xc]
cmp edi, 8
jb 0x5d5a88
lea eax, [esi - 4]
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x5d5a15
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, esi
jae 0x5d5a88
mov eax, edi
and eax, 0x80000007
jns 0x5d5a23
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm3, xmmword [esp + 0x90]
mov esi, edi
mov edi, dword [esp + 0xc]
sub esi, eax
mov dword [esp + 0x4c], esi
lea eax, [edx + 0x10]
mov esi, edi
sub edi, edx
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x50]
nop word [eax + eax]
movups xmm1, xmmword [esi]
add ecx, 8
add esi, 0x20
movups xmm0, xmmword [eax - 0x10]
mulps xmm1, xmm3
addps xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
movups xmm1, xmmword [edx + eax]
movups xmm0, xmmword [eax]
mulps xmm1, xmm3
addps xmm1, xmm0
movups xmmword [eax], xmm1
add eax, 0x20
cmp ecx, dword [esp + 0x4c]
jl 0x5d5a50
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
cmp ecx, edi
jge 0x5d5b5d
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x5d5b27
mov edi, dword [esp + 0xc]
lea eax, [ecx + 1]
sub edi, edx
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x28]
lea esi, [esi + ecx*4]
sub edx, ecx
mov dword [esp + 0x4c], edi
sub edx, 4
add esi, 0xc
shr edx, 2
inc edx
lea ecx, [ecx + edx*4]
nop dword [eax]
nop word [eax + eax]
movss xmm0, dword [esi - 0xc]
mulss xmm0, xmm2
addss xmm0, dword [eax - 4]
movss dword [eax - 4], xmm0
movss xmm0, dword [eax + edi]
mulss xmm0, xmm2
addss xmm0, dword [eax]
movss dword [eax], xmm0
movss xmm0, dword [esi - 4]
mulss xmm0, xmm2
addss xmm0, dword [eax + 4]
movss dword [eax + 4], xmm0
movaps xmm0, xmm2
mulss xmm0, dword [esi]
add esi, 0x10
addss xmm0, dword [eax + 8]
movss dword [eax + 8], xmm0
add eax, 0x10
sub edx, 1
jne 0x5d5ad0
mov edi, dword [esp + 0x28]
cmp ecx, edi
jge 0x5d5b59
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
sub esi, edx
lea eax, [edx + ecx*4]
mov edx, edi
sub edx, ecx
nop dword [eax]
movss xmm0, dword [eax + esi]
mulss xmm0, xmm2
addss xmm0, dword [eax]
movss dword [eax], xmm0
add eax, 4
sub edx, 1
jne 0x5d5b40
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x2c]
lea eax, [edi*4]
mov edx, dword [esp + 0x38]
inc ecx
inc dword [esp + 0x30]
add esi, eax
cmp ecx, dword [esp + 0x10]
mov dword [esp + 0x2c], ecx
mov ecx, 1
movzx edx, dl
cmovge edx, ecx
mov dword [esp + 0xc], esi
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x18]
add dword [esp + 0x34], 4
add edx, eax
inc dword [esp + 0x14]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x18], edx
test al, al
je 0x5d57e0
push dword [0x884adc]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call edi
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x3c]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d5be0
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5d5be0
cmp dword [eax + 0x14], esi
je 0x5d5be0
mov dword [eax + 0xc], esi
jmp 0x5d5be9
push edx
push esi
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call edi
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x20]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d5c16
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5d5c16
cmp dword [eax + 0x14], esi
je 0x5d5c16
mov dword [eax + 0xc], esi
jmp 0x5d5c1f
push edx
push esi
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call edi
mov ecx, dword [esp + 0x5c]
mov esi, dword [esp + 0x40]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d5c50
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5d5c50
cmp dword [eax + 0x14], esi
je 0x5d5c50
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