Function at 0x5cfb00
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xd8
push esi
push edi
mov edi, ecx
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x24], edi
cmp ecx, 0xffffffff
jne 0x5cfb23
movsx ecx, word [edi + 0x50]
mov dword [ebp + 0x20], ecx
mov edx, dword [ebp + 0x24]
cmp edx, 0xffffffff
jne 0x5cfb32
movsx edx, word [edi + 0x52]
mov dword [ebp + 0x24], edx
cmp dword [ebp + 0x28], 0xffffffff
jne 0x5cfb3f
movsx eax, word [edi + 0x54]
mov dword [ebp + 0x28], eax
cmp byte [ebp + 0x1c], 0
mov eax, dword [edi + 0x74]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov eax, dword [eax + 0x2c]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x18], eax
je 0x5cfd7d
cmp ecx, 0xffffffff
je 0x5cfd7d
cmp edx, 0xffffffff
je 0x5cfd7d
cmp dword [ebp + 0x28], 0xffffffff
je 0x5cfd7d
mov ecx, edi
call fcn.005cc8c0
test al, al
je 0x5cfd7d
mov ecx, edi
call fcn.005cc8e0
test al, al
je 0x5cfd7d
mov esi, dword [esp + 0x18]
push dword [0x884adc]
mov esi, dword [esi + 0x1c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea eax, [esi + esi*2]
shl eax, 4
add eax, 0x7f
and eax, 0xffffff80
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], ecx
lea esi, [ecx + eax]
cmp eax, dword [edx + 8]
jg 0x5cfbd4
cmp esi, dword [edx + 0x10]
ja 0x5cfbd4
mov dword [edx + 0xc], esi
jmp 0x5cfbe2
push eax
mov ecx, edx
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 0x1c], eax
push ecx
push dword [esp + 0x1c]
push dword [ebp + 0xc]
call fcn.005df220
mov ecx, dword [edi + 0x78]
add esp, 0xc
mov eax, dword [ecx + 0x2c]
push dword [0x884adc]
mov dword [esp + 0x14], eax
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x2c], esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea eax, [esi + esi*2]
shl eax, 4
add eax, 0x7f
and eax, 0xffffff80
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
lea esi, [ecx + eax]
cmp eax, dword [edx + 8]
jg 0x5cfc3a
cmp esi, dword [edx + 0x10]
ja 0x5cfc3a
mov dword [edx + 0xc], esi
jmp 0x5cfc48
push eax
mov ecx, edx
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
push ecx
push dword [eax + 0x24]
push dword [eax + 0xc]
push dword [esp + 0x34]
call fcn.0057e2a0
mov eax, dword [ebp + 8]
push 2
push dword [esp + 0x28]
mov eax, dword [eax]
mov esi, dword [eax + 0x2c]
mov eax, dword [esp + 0x28]
push dword [eax + 0x24]
push dword [esp + 0x38]
push dword [esi + 0x1c]
call fcn.00569220
mov eax, dword [esi + 0x24]
lea ecx, [esp + 0xa4]
add esp, 0x24
add eax, 0x20
push eax
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
call fcn.00703360
lea eax, [esp + 0x50]
mov ecx, edi
push eax
lea eax, [esp + 0xb4]
push eax
call fcn.005cca10
push eax
push dword [esp + 0x20]
lea ecx, [esp + 0x90]
call fcn.007034e0
lea ecx, [esp + 0x80]
call fcn.005ad220
mov ecx, dword [ebp + 0xc]
movaps xmm0, xmmword [esp + 0x50]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov eax, dword [ecx]
movsx ecx, word [eax + 0x14]
movaps xmmword [ecx + eax], xmm0
movaps xmm0, xmmword [esp + 0x60]
movaps xmmword [ecx + eax + 0x10], xmm0
movaps xmm0, xmmword [esp + 0x70]
movaps xmmword [ecx + eax + 0x20], xmm0
push dword [0x884adc]
call esi
mov ecx, dword [esp + 0x20]
mov edx, eax
lea eax, [ecx + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp ecx, dword [edx + 8]
jg 0x5cfd2f
mov ecx, dword [esp + 0x10]
add ecx, eax
cmp ecx, dword [edx + 0xc]
jne 0x5cfd2f
cmp dword [edx + 0x14], eax
je 0x5cfd2f
mov dword [edx + 0xc], eax
jmp 0x5cfd3b
push dword [esp + 0x10]
mov ecx, edx
push eax
call fcn.0046a590
push dword [0x884adc]
call esi
mov ecx, dword [esp + 0x2c]
mov edx, eax
lea eax, [ecx + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
cmp ecx, dword [edx + 8]
jg 0x5cfd71
mov ecx, dword [esp + 0x10]
add ecx, eax
cmp ecx, dword [edx + 0xc]
jne 0x5cfd71
cmp dword [edx + 0x14], eax
je 0x5cfd71
mov dword [edx + 0xc], eax
jmp 0x5cfd7d
push dword [esp + 0x10]
mov ecx, edx
push eax
call fcn.0046a590
mov ecx, edi
call fcn.005cc8c0
test al, al
je 0x5cfdf8
cmp byte [edi + 0x56], 4
jne 0x5cfdf8
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
movsx eax, word [ecx + 0x14]
movss xmm0, dword [eax + ecx + 0x20]
lea eax, [esp + 0x50]
mov ecx, dword [edi + 0x78]
push eax
push 0
movaps xmmword [esp + 0x48], xmm0
call fcn.0058aba0
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0x54]
push eax
push 0
call fcn.005cea30
mov eax, dword [ebp + 0xc]
add esp, 0xc
movaps xmm0, xmmword [esp + 0x80]
movaps xmm1, xmmword [esp + 0x40]
shufps xmm1, xmm1, 0
mov eax, dword [eax]
movsx ecx, word [eax + 0x14]
movaps xmmword [ecx + eax], xmm0
movaps xmm0, xmmword [esp + 0x90]
movaps xmmword [ecx + eax + 0x10], xmm0
movaps xmmword [ecx + eax + 0x20], xmm1
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp dword [eax + 4], 2
jle 0x5cfe09
movsx edi, word [eax + 0x32]
jmp 0x5cfe0b
xor edi, edi
movsx ecx, word [eax + 0x34]
push dword [0x884adc]
add ecx, eax
mov dword [esp + 0x2c], ecx
call esi
mov edx, eax
mov eax, edi
shl eax, 4
add eax, 0x7f
mov dword [esp + 0x2c], edx
and eax, 0xffffff80
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], ecx
lea edx, [ecx + eax]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x2c]
cmp eax, dword [edx + 8]
jg 0x5cfe5f
mov ecx, dword [esp + 0x10]
cmp ecx, dword [edx + 0x10]
mov ecx, dword [esp + 0x1c]
ja 0x5cfe5f
mov eax, dword [esp + 0x10]
mov dword [edx + 0xc], eax
jmp 0x5cfe6d
push eax
mov ecx, edx
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 0x1c], eax
test edi, edi
jle 0x5cfe97
mov edx, dword [esp + 0x28]
mov esi, edi
add edx, 0x20
nop word [eax + eax]
movaps xmm0, xmmword [edx]
lea edx, [edx + 0x30]
movaps xmmword [ecx], xmm0
lea ecx, [ecx + 0x10]
sub esi, 1
jne 0x5cfe80
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov eax, dword [esp + 0x24]
push dword [0x884adc]
mov eax, dword [eax + 0x78]
mov eax, dword [eax + 0x2c]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x18], eax
call esi
mov ecx, eax
mov eax, dword [esp + 0x14]
mov edx, dword [ecx + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
add eax, 0x7f
mov dword [esp + 0x10], edx
and eax, 0xffffff80
mov dword [esp + 0x38], eax
lea esi, [edx + eax]
cmp eax, dword [ecx + 8]
jg 0x5cfedf
cmp esi, dword [ecx + 0x10]
ja 0x5cfedf
mov dword [ecx + 0xc], esi
jmp 0x5cfeeb
push eax
call fcn.0046a3c0
mov edx, eax
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xc]
push edx
mov ecx, dword [eax]
movsx esi, word [ecx + 0x14]
add esi, ecx
mov ecx, dword [esp + 0x28]
call fcn.005cca10
push eax
mov eax, dword [esp + 0x1c]
push esi
push eax
call fcn.0057e4b0
mov eax, dword [esp + 0x28]
add esp, 0x10
mov esi, dword [eax + 0x1c]
push dword [0x884adc]
mov dword [esp + 0x30], esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea esi, [esi + esi*2]
mov ecx, eax
shl esi, 4
add esi, 0x7f
and esi, 0xffffff80
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x20], esi
mov dword [esp + 0x14], eax
lea edx, [eax + esi]
cmp esi, dword [ecx + 8]
jg 0x5cff51
cmp edx, dword [ecx + 0x10]
ja 0x5cff51
mov dword [ecx + 0xc], edx
jmp 0x5cff5b
push esi
call fcn.0046a3c0
mov dword [esp + 0x14], eax
push eax
push dword [esp + 0x1c]
push dword [ebp + 0xc]
call fcn.005df220
mov eax, dword [ebp + 8]
push dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, dword [ecx + 0x2c]
push dword [eax + 0x18]
push dword [ebp + 0xc]
push dword [esp + 0x28]
call fcn.005df3b0
add esp, 0x1c
cmp byte [ebp + 0x18], 0
je 0x5d0160
mov ecx, dword [esp + 0x24]
xorps xmm2, xmm2
movss xmm0, dword [ebp + 0x10]
movss xmm1, dword [ebp + 0x14]
movss xmm4, dword [ecx + 0x90]
comiss xmm4, xmm0
jbe 0x5cffb7
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jnp 0x5cffdf
movss xmm3, dword [ecx + 0x94]
comiss xmm3, xmm1
jbe 0x5cffcd
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x5cffdf
comiss xmm4, xmm0
jbe 0x5d0160
comiss xmm3, xmm1
jbe 0x5d0160
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x24], eax
lea edx, [eax + esi]
cmp esi, dword [ecx + 8]
jg 0x5d0006
cmp edx, dword [ecx + 0x10]
ja 0x5d0006
mov dword [ecx + 0xc], edx
jmp 0x5d0010
push esi
call fcn.0046a3c0
mov dword [esp + 0x24], eax
push eax
mov eax, dword [esp + 0x1c]
push dword [esp + 0x18]
push dword [eax + 0xc]
push dword [esp + 0x38]
call fcn.0057e3c0
add esp, 0x10
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea eax, [edi + edi*2]
shl eax, 4
mov dword [esp + 0x30], eax
lea ecx, [eax + 0x7f]
mov eax, dword [edx + 0xc]
and ecx, 0xffffff80
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], ecx
lea esi, [eax + ecx]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x20]
cmp ecx, dword [edx + 8]
jg 0x5d0076
lea esi, [eax + ecx]
cmp esi, dword [edx + 0x10]
mov esi, dword [esp + 0x20]
ja 0x5d0076
mov ecx, dword [esp + 0x2c]
mov dword [edx + 0xc], ecx
jmp 0x5d0082
push ecx
mov ecx, edx
call fcn.0046a3c0
mov dword [esp + 0x18], eax
movss xmm1, dword [ebp + 0x10]
movss xmm0, dword [ebp + 0x14]
comiss xmm1, xmm0
ja 0x5d0094
movaps xmm1, xmm0
mov ecx, dword [ebp + 0xc]
movss xmm0, dword [0x718824]
push eax
subss xmm0, xmm1
mov ecx, dword [ecx]
push ecx
movsx eax, word [ecx + 0x34]
movss dword [esp], xmm0
add eax, ecx
push eax
push dword [esp + 0x30]
push edi
call fcn.0057eab0
mov eax, dword [ebp + 0xc]
push dword [esp + 0x44]
push dword [esp + 0x30]
mov ecx, dword [eax]
movsx eax, word [ecx + 0x34]
add eax, ecx
push eax
call fcn.0045d810
add esp, 0x20
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
mov eax, dword [esp + 0x34]
lea ecx, [eax + 0xf]
and ecx, 0xfffffff0
cmp eax, dword [edx + 8]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
jg 0x5d0113
add ecx, eax
cmp ecx, dword [edx + 0xc]
jne 0x5d010f
cmp dword [edx + 0x14], eax
je 0x5d010f
mov dword [edx + 0xc], eax
jmp 0x5d011c
mov ecx, dword [esp + 0x20]
push ecx
push eax
mov ecx, edx
call fcn.0046a590
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea eax, [esi + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x24]
cmp esi, dword [edx + 8]
jg 0x5d0152
mov ecx, dword [esp + 0x20]
add ecx, eax
cmp ecx, dword [edx + 0xc]
jne 0x5d0152
cmp dword [edx + 0x14], eax
je 0x5d0152
mov dword [edx + 0xc], eax
jmp 0x5d0180
push dword [esp + 0x20]
mov ecx, edx
push eax
call fcn.0046a590
jmp 0x5d0180
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
movsx edx, word [eax + 0x34]
add edx, eax
mov eax, dword [esp + 0x18]
push edx
push dword [esp + 0x18]
push dword [eax + 0xc]
push edi
call fcn.0057e3c0
add esp, 0x10
mov ecx, dword [ebp + 0xc]
call fcn.005dd090
test edi, edi
jle 0x5d01a8
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
add ecx, 0x20
movaps xmm0, xmmword [eax]
lea eax, [eax + 0x10]
movaps xmmword [ecx], xmm0
lea ecx, [ecx + 0x30]
sub edi, 1
jne 0x5d0197
push dword [0x884adc]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call edi
mov edx, eax
lea eax, [esi + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
cmp esi, dword [edx + 8]
mov esi, dword [esp + 0x28]
jg 0x5d01e1
lea ecx, [esi + eax]
cmp ecx, dword [edx + 0xc]
jne 0x5d01e1
cmp dword [edx + 0x14], eax
je 0x5d01e1
mov dword [edx + 0xc], eax
jmp 0x5d01ea
push esi
push eax
mov ecx, edx
call fcn.0046a590
push dword [0x884adc]
call edi
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
lea esi, [ecx + 0xf]
and esi, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d0217
lea ecx, [esi + edx]
cmp ecx, dword [eax + 0xc]
jne 0x5d0217
cmp dword [eax + 0x14], edx
je 0x5d0217
mov dword [eax + 0xc], edx
jmp 0x5d0220
push esi
push edx
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
call edi
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
lea esi, [ecx + 0xf]
and esi, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5d0253
lea ecx, [esi + edx]
cmp ecx, dword [eax + 0xc]
jne 0x5d0253
cmp dword [eax + 0x14], edx
je 0x5d0253
mov dword [eax + 0xc], edx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x24
push esi
push edx
mov ecx, eax
call fcn.0046a590
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x24