Function at 0x69cc80
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 8
push ebx
mov ebx, dword [esp + 0x14]
push ebp
mov ebp, dword [esp + 0x14]
mov dword [esp + 0xc], ebx
test dword [ebp + ebx*4 + 0x14], 0xfffffffc
jne 0x69ce9a
push esi
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0xc
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, eax
test esi, esi
je 0x69cce0
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], 0
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], connect
jmp 0x69cce2
xor esi, esi
lea eax, [ebx*4 + 8]
mov ebx, 9
add eax, ebp
mov dword [esp + 0xc], eax
push edi
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp dword [esi + 4], eax
jne 0x69cd12
push 0x40
push esi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov eax, dword [esi + 4]
shl eax, 6
add eax, dword [esi]
je 0x69cd24
xorps xmm0, xmm0
movq qword [eax + 0x20], xmm0
mov eax, dword [esi + 4]
mov edx, ebx
mov ecx, eax
inc eax
shl ecx, 6
add ecx, dword [esi]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
lea ecx, [eax + eax]
sar edx, cl
mov ecx, dword [esp + 0x10]
and edx, 3
mov eax, dword [edi + edx*4 + 8]
cmp eax, dword [ecx]
je 0x69cda8
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
test dword [edi + edx*4 + 0x14], 0xfffffffc
je 0x69cd97
nop
mov ecx, dword [edi + edx*4 + 0x14]
mov edi, ecx
and ecx, 3
mov edx, ebx
add ecx, ecx
and edi, 0xfffffffc
sar edx, cl
and edx, 3
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
test dword [edi + edx*4 + 0x14], 0xfffffffc
jne 0x69cd70
mov ecx, dword [esp + 0x14]
lea eax, [edx + edi]
add ecx, ebp
cmp eax, ecx
jne 0x69ccf5
mov edx, dword [esi + 4]
test edx, edx
jle 0x69cddb
mov eax, dword [esi]
mov edi, ebx
shl edx, 6
mov ecx, dword [edx + eax - 0x3c]
mov edx, dword [edx + eax - 0x40]
add ecx, ecx
sar edi, cl
mov ecx, dword [eax + 4]
and edi, 3
mov eax, dword [eax]
mov eax, dword [eax + ecx*4 + 8]
cmp eax, dword [edx + edi*4 + 8]
je 0x69cddb
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 3
jge 0x69ce90
cmp eax, 2
jne 0x69ce3c
mov eax, dword [esi]
mov edi, dword [eax + 0x40]
mov dword [esp + 0x14], edi
test edi, edi
je 0x69ce90
mov ebp, dword [eax + 0x44]
mov edx, ebx
mov ecx, dword [eax]
mov edi, dword [eax]
mov dword [esp + 0x10], ecx
lea ecx, [ebp*2]
sar edx, cl
mov ecx, dword [eax + 4]
and edx, 3
mov eax, dword [edi + ecx*4 + 8]
mov edi, dword [esp + 0x14]
cmp eax, dword [edi + edx*4 + 8]
jne 0x69ce3c
mov eax, dword [esp + 0x10]
add ecx, ecx
sar ebx, cl
and ebx, 3
mov eax, dword [eax + ebx*4 + 8]
cmp eax, dword [edi + ebp*4 + 8]
je 0x69ce90
mov dword [esi + 4], 0
mov eax, dword [esi + 8]
test eax, eax
js 0x69ce62
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 6
push eax
mov eax, dword [0x7d8954]
push dword [esi]
call dword [eax + 0x10]
mov dword [esi], 0
mov dword [esi + 8], connect
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0xc
push esi
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 8
ret
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret