Function at 0x5d4be0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x44
mov eax, dword [ebp + 8]
movss xmm1, dword [ebp + 0xc]
push ebx
push esi
mov ecx, dword [eax]
movaps xmm0, xmm1
shufps xmm0, xmm0, 0
push edi
movaps xmmword [esp + 0x40], xmm0
movsx esi, word [ecx + 2]
mov dword [esp + 0x20], esi
test esi, esi
je 0x5d5352
xorps xmm0, xmm0
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jnp 0x5d5352
movsx edx, word [ecx]
movsx ecx, word [ecx + 6]
mov esi, dword [ebp + 8]
mov ebx, ecx
mov eax, dword [ebp + 0x10]
imul ecx, edx
sar ebx, 2
mov dword [esp + 0x10], edx
movsx edi, word [eax + 2]
mov dword [esp + 0x3c], edi
add ecx, 0xf
and ecx, 0xfffffff0
add ecx, dword [esi + 4]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x24], ecx
movsx ecx, word [eax + 6]
movsx eax, word [eax]
imul ecx, eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
add ecx, 0xf
and ecx, 0xfffffff0
add ecx, eax
mov dword [esp + 0xc], ecx
test edi, edi
je 0x5d4ca7
cmp esi, edi
jne 0x5d4d99
push edx
push ecx
push dword [esp + 0x2c]
call fcn.0045d860
add esp, 0xc
test eax, eax
sete al
test al, al
je 0x5d4d99
mov eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
imul ebx, esi
cmp byte [ebp + 0x1c], 0
mov edi, dword [eax + 4]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], ebx
jne 0x5d4cc5
cmp dword [esp + 0x3c], 0
jne 0x5d4cfd
push edx
push dword [esp + 0x28]
push ecx
call fcn.0045d810
lea ecx, [ebx - 1]
add esp, 0xc
test ecx, ecx
js 0x5d4ce3
mov edi, dword [esp + 0x14]
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
lea ecx, [esi - 1]
test ecx, ecx
js 0x5d4cf2
mov edi, dword [ebp + 0x18]
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x10]
mov edi, dword [esp + 0x2c]
mov word [eax + 2], si
xor ecx, ecx
test ebx, ebx
jle 0x5d52ab
cmp ebx, 8
jb 0x5d51d0
mov edx, dword [esp + 0x14]
lea eax, [ebx - 1]
lea eax, [edi + eax*4]
cmp edx, eax
ja 0x5d4d2c
lea eax, [edx - 4]
lea eax, [eax + ebx*4]
cmp eax, edi
jae 0x5d51d0
mov eax, ebx
and eax, 0x80000007
jns 0x5d4d3a
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm2, xmmword [esp + 0x40]
mov esi, edi
mov dword [esp + 0x24], ebx
sub dword [esp + 0x24], eax
sub esi, edx
mov dword [esp + 0x3c], esi
lea eax, [edx + 0x10]
mov esi, dword [esp + 0x20]
mov edx, edi
mov ebx, dword [esp + 0x3c]
nop dword [eax]
movups xmm1, xmmword [edx]
add ecx, 8
add edx, 0x20
movups xmm0, xmmword [eax - 0x10]
mulps xmm1, xmm2
addps xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
movups xmm1, xmmword [ebx + eax]
movups xmm0, xmmword [eax]
mulps xmm1, xmm2
addps xmm1, xmm0
movups xmmword [eax], xmm1
add eax, 0x20
cmp ecx, dword [esp + 0x24]
jl 0x5d4d60
mov ebx, dword [esp + 0x38]
jmp 0x5d51d5
push dword [0x884adc]
mov esi, ebx
imul esi, edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, dword [esp + 0x10]
add edx, 0x7f
and edx, 0xffffff80
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x20], ecx
add ecx, edx
mov dword [esp + 0x3c], edx
cmp edx, dword [eax + 8]
jg 0x5d4dd0
cmp ecx, dword [eax + 0x10]
ja 0x5d4dd0
mov dword [eax + 0xc], ecx
jmp 0x5d4ddc
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x20], eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi*4 + 0x7f]
and edx, 0xffffff80
mov dword [esp + 0x38], edx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x1c], ecx
add ecx, edx
cmp edx, dword [eax + 8]
jg 0x5d4e0e
cmp ecx, dword [eax + 0x10]
ja 0x5d4e0e
mov dword [eax + 0xc], ecx
jmp 0x5d4e1a
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x1c], eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [edi*4 + 0x7f]
and edx, 0xffffff80
mov dword [esp + 0x34], edx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x18], ecx
add ecx, edx
cmp edx, dword [eax + 8]
jg 0x5d4e4c
cmp ecx, dword [eax + 0x10]
ja 0x5d4e4c
mov dword [eax + 0xc], ecx
jmp 0x5d4e58
push edx
mov ecx, eax
call fcn.0046a3c0
mov dword [esp + 0x18], eax
push dword [esp + 0x10]
push dword [esp + 0x10]
push dword [esp + 0x28]
call fcn.0045d810
mov ecx, dword [ebp + 0x14]
add esp, 0xc
mov edx, dword [esp + 0x1c]
test esi, esi
jle 0x5d4e87
mov eax, dword [ecx]
lea edx, [edx + 4]
mov dword [edx - 4], eax
lea ecx, [ecx + 4]
sub esi, 1
jne 0x5d4e77
mov esi, dword [ebp + 0x18]
mov ecx, esi
test edi, edi
jle 0x5d4ea4
mov edx, dword [esp + 0x18]
sub edx, esi
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [edx + ecx - 4], eax
sub edi, 1
jne 0x5d4e96
mov esi, dword [esp + 0x10]
xor edx, edx
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], edx
test esi, esi
jle 0x5d4f66
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
sub ecx, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], ecx
nop
movsx edi, byte [ecx + esi]
cmp edi, 0xffffffff
jne 0x5d4efc
lea ecx, [ebx - 1]
test ecx, ecx
js 0x5d4eed
mov edi, dword [esp + 0x14]
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [ebp + 0x18]
mov dword [ecx + edx*4], 0
mov byte [esi], 0xff
jmp 0x5d4f3d
mov ecx, dword [esp + 0x1c]
mov eax, edi
imul eax, ebx
lea ecx, [ecx + eax*4]
test ebx, ebx
jle 0x5d4f2a
mov esi, dword [esp + 0x14]
mov edx, ebx
sub esi, ecx
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [esi + ecx - 4], eax
sub edx, 1
jne 0x5d4f14
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
mov ecx, dword [ebp + 0x18]
mov eax, dword [eax + edi*4]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x14]
mov byte [esi], dl
lea ecx, [ebx*4]
inc edx
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x30]
inc esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], esi
cmp edx, dword [esp + 0x10]
jl 0x5d4ed0
mov esi, dword [esp + 0x10]
mov edx, dword [ebp + 0x14]
xor eax, eax
mov dword [esp + 0x14], eax
test esi, esi
jle 0x5d5115
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0xc]
sub ecx, edi
movss xmm2, dword [ebp + 0xc]
mov dword [esp + 0x24], ecx
nop word [eax + eax]
movsx ecx, byte [ecx + edi]
cmp ecx, 0xffffffff
jne 0x5d4fa1
lea edx, [edx + ebx*4]
jmp 0x5d50ff
mov eax, dword [ebp + 8]
imul ecx, ebx
cmp byte [ebp + 0x1c], 0
mov eax, dword [eax + 4]
lea esi, [eax + ecx*4]
je 0x5d4fd8
cmp byte [edi], 0xff
je 0x5d4fd8
lea ecx, [ebx - 1]
test ecx, ecx
js 0x5d4fca
inc ecx
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov ecx, dword [ebp + 0x18]
mov dword [ecx + eax*4], 0
xor ecx, ecx
test ebx, ebx
jle 0x5d50e4
cmp ebx, 8
jb 0x5d5040
lea eax, [ebx - 1]
lea eax, [esi + eax*4]
lea edi, [ebx - 1]
lea edi, [edx + edi*4]
cmp edx, eax
ja 0x5d4ffb
cmp edi, esi
jae 0x5d5040
mov eax, ebx
and eax, 0x80000007
jns 0x5d5009
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm3, xmmword [esp + 0x40]
mov edi, ebx
sub edi, eax
movups xmm1, xmmword [esi]
add ecx, 8
movups xmm0, xmmword [edx]
mulps xmm1, xmm3
addps xmm1, xmm0
movups xmmword [edx], xmm1
movups xmm1, xmmword [esi + 0x10]
add esi, 0x20
movups xmm0, xmmword [edx + 0x10]
mulps xmm1, xmm3
addps xmm1, xmm0
movups xmmword [edx + 0x10], xmm1
add edx, 0x20
cmp ecx, edi
jl 0x5d5012
cmp ecx, ebx
jge 0x5d50e0
movss xmm1, dword [ebp + 0xc]
mov eax, ebx
sub eax, ecx
cmp eax, 4
jl 0x5d50b8
mov eax, ebx
sub eax, ecx
sub eax, 4
shr eax, 2
inc eax
lea ecx, [ecx + eax*4]
movss xmm0, dword [esi]
mulss xmm0, xmm1
addss xmm0, dword [edx]
movss dword [edx], xmm0
movss xmm0, dword [esi + 4]
mulss xmm0, xmm1
addss xmm0, dword [edx + 4]
movss dword [edx + 4], xmm0
movss xmm0, dword [esi + 8]
mulss xmm0, xmm1
addss xmm0, dword [edx + 8]
movss dword [edx + 8], xmm0
movss xmm0, dword [esi + 0xc]
add esi, 0x10
mulss xmm0, xmm1
addss xmm0, dword [edx + 0xc]
movss dword [edx + 0xc], xmm0
add edx, 0x10
sub eax, 1
jne 0x5d5064
cmp ecx, ebx
jge 0x5d50db
mov eax, ebx
sub esi, edx
sub eax, ecx
movss xmm0, dword [esi + edx]
mulss xmm0, xmm1
addss xmm0, dword [edx]
movss dword [edx], xmm0
add edx, 4
sub eax, 1
jne 0x5d50c2
movss xmm2, dword [ebp + 0xc]
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov esi, dword [ebp + 0x18]
movss xmm0, dword [esi + eax*4]
addss xmm0, xmm2
movss dword [esi + eax*4], xmm0
mov esi, dword [esp + 0x10]
mov byte [edi], al
mov ecx, dword [esp + 0x24]
inc eax
inc edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], edi
cmp eax, esi
jl 0x5d4f90
mov eax, dword [ebp + 0x10]
mov word [eax + 2], si
push dword [0x884adc]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call esi
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d514f
lea ecx, [edx + ebx]
cmp ecx, dword [eax + 0xc]
jne 0x5d514f
cmp dword [eax + 0x14], ebx
je 0x5d514f
mov dword [eax + 0xc], ebx
jmp 0x5d5158
push edx
push ebx
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call esi
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x1c]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d5185
lea ecx, [edx + ebx]
cmp ecx, dword [eax + 0xc]
jne 0x5d5185
cmp dword [eax + 0x14], ebx
je 0x5d5185
mov dword [eax + 0xc], ebx
jmp 0x5d518e
push edx
push ebx
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call esi
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x20]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d51c0
lea ecx, [edx + ebx]
cmp ecx, dword [eax + 0xc]
jne 0x5d51c0
cmp dword [eax + 0x14], ebx
je 0x5d51c0
mov dword [eax + 0xc], ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push edx
push ebx
mov ecx, eax
call fcn.0046a590
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movaps xmm2, xmmword [esp + 0x40]
cmp ecx, ebx
jge 0x5d52b0
movss xmm1, dword [ebp + 0xc]
mov eax, ebx
sub eax, ecx
cmp eax, 4
jl 0x5d5278
mov eax, dword [esp + 0x14]
lea edx, [ecx + 3]
lea edx, [edi + edx*4]
sub edi, dword [esp + 0x14]
mov dword [esp + 0x3c], edi
mov edi, ebx
mov esi, dword [esp + 0x3c]
sub edi, ecx
sub edi, 4
lea eax, [eax + ecx*4]
shr edi, 2
add eax, 4
inc edi
lea ecx, [ecx + edi*4]
nop dword [eax]
movss xmm0, dword [edx - 0xc]
mulss xmm0, xmm1
addss xmm0, dword [eax - 4]
movss dword [eax - 4], xmm0
movss xmm0, dword [eax + esi]
mulss xmm0, xmm1
addss xmm0, dword [eax]
movss dword [eax], xmm0
movss xmm0, dword [edx - 4]
mulss xmm0, xmm1
addss xmm0, dword [eax + 4]
movss dword [eax + 4], xmm0
movss xmm0, dword [edx]
add edx, 0x10
mulss xmm0, xmm1
addss xmm0, dword [eax + 8]
movss dword [eax + 8], xmm0
add eax, 0x10
sub edi, 1
jne 0x5d5220
mov esi, dword [esp + 0x20]
cmp ecx, ebx
jge 0x5d52b0
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
sub edx, edi
sub ebx, ecx
lea eax, [edi + ecx*4]
nop dword [eax + eax]
movss xmm0, dword [eax + edx]
mulss xmm0, xmm1
addss xmm0, dword [eax]
movss dword [eax], xmm0
add eax, 4
sub ebx, 1
jne 0x5d5290
jmp 0x5d52b0
movaps xmm2, xmmword [esp + 0x40]
xor ecx, ecx
test esi, esi
jle 0x5d5352
cmp esi, 8
jb 0x5d52f6
mov eax, esi
and eax, 0x80000007
jns 0x5d52cd
dec eax
or eax, 0xfffffff8
inc eax
mov ebx, dword [ebp + 0x18]
mov edx, esi
sub edx, eax
mov eax, ebx
movups xmm0, xmmword [eax]
add ecx, 8
addps xmm0, xmm2
movups xmmword [eax], xmm0
movups xmm0, xmmword [eax + 0x10]
addps xmm0, xmm2
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp ecx, edx
jl 0x5d52d6
jmp 0x5d52f9
mov ebx, dword [ebp + 0x18]
cmp ecx, esi
jge 0x5d5352
movss xmm1, dword [ebp + 0xc]
mov eax, esi
sub eax, ecx
cmp eax, 4
jl 0x5d5336
mov edx, esi
shufps xmm1, xmm1, 0
sub edx, ecx
lea eax, [ecx + 2]
sub edx, 4
lea eax, [ebx + eax*4]
shr edx, 2
inc edx
lea ecx, [ecx + edx*4]
movups xmm0, xmmword [eax - 8]
addps xmm0, xmm1
movups xmmword [eax - 8], xmm0
add eax, 0x10
sub edx, 1
jne 0x5d5323
cmp ecx, esi
jge 0x5d5352
nop word [eax + eax]
movaps xmm0, xmm1
addss xmm0, dword [ebx + ecx*4]
movss dword [ebx + ecx*4], xmm0
inc ecx
cmp ecx, esi
jl 0x5d5340
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret