Function at 0x53e680
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 0x14
push esi
mov esi, dword [esp + 0x1c]
push edi
mov edi, ecx
mov dword [esp + 0x14], edi
mov eax, dword [esi + 8]
mov dword [esi + 4], 0
test eax, eax
js 0x53e6b5
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 5
push eax
mov eax, dword [0x7d8954]
push dword [esi]
call dword [eax + 0x10]
xor eax, eax
mov dword [esi], 0
mov dword [esi + 8], connect
mov word [esi + 0xc], ax
mov word [esi + 0x18], ax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], eax
movzx eax, word [edi + 0x18]
test ax, ax
je 0x53ea04
xor edi, edi
mov edx, eax
cmp di, dx
movzx eax, di
movzx ecx, dx
cmova ecx, eax
mov eax, dword [esp + 0x14]
movzx edi, cx
movzx ecx, dx
shl ecx, 5
mov esi, dword [eax]
movzx eax, word [ecx + esi + 0x1c]
test ax, ax
je 0x53e70c
mov edx, eax
jmp 0x53e74f
movzx ecx, word [ecx + esi + 0xc]
movzx edx, dx
test cx, cx
je 0x53e73a
nop dword [eax]
movzx eax, cx
shl eax, 5
cmp word [eax + esi + 0x1e], dx
jne 0x53e79a
movzx edx, cx
movzx ecx, word [eax + esi + 0xc]
test cx, cx
jne 0x53e720
movzx eax, dx
movzx eax, ax
test cx, cx
jne 0x53e74c
cmp ax, dx
jne 0x53e74c
xor eax, eax
movzx edx, ax
test dx, dx
jne 0x53e6e3
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
lea esi, [edi*2 + 0x81]
and esi, 0xffffff80
mov dword [esp + 8], esi
mov eax, dword [edx + 0xc]
mov dword [esp + 0x18], eax
lea ecx, [eax + esi]
cmp esi, dword [edx + 8]
jg 0x53e7ac
cmp ecx, dword [edx + 0x10]
ja 0x53e7ac
mov dword [edx + 0xc], ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, dword [esp + 0x14]
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x10], eax
jmp 0x53e7d4
test cx, cx
je 0x53e73a
movzx eax, cx
shl eax, 5
movzx eax, word [eax + esi + 0x1e]
jmp 0x53e73d
push esi
mov ecx, edx
call fcn.0046a3c0
xor ecx, ecx
mov dword [esp + 0x18], eax
mov word [eax], cx
mov ecx, dword [esp + 0x14]
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x10], eax
jmp 0x53e7d4
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx]
mov ecx, dword [esp + 0x20]
movzx edi, ax
mov eax, edi
shl eax, 5
mov dword [esp + 0xc], eax
add esi, eax
call fcn.00540600
movaps xmm2, xmmword [esi]
movaps xmm3, xmmword [esi + 0x10]
movaps xmm1, xmmword [0x719550]
movaps xmm0, xmm3
movzx edx, ax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl ecx, 5
shufps xmm1, xmm1, 0
unpckhps xmm0, xmm1
add ecx, dword [eax]
movzx eax, word [esi + 0xc]
or eax, 0x3f000000
shufps xmm3, xmm0, 0xc4
movaps xmm0, xmm2
mov dword [ecx + 0xc], eax
movzx eax, word [esi + 0x1c]
mov word [ecx + 0x1c], ax
movzx eax, word [esi + 0x1e]
mov word [ecx + 0x1e], ax
movaps xmm1, xmmword [ecx]
mov eax, dword [esp + 0x18]
shufps xmm1, xmm1, 0xff
unpckhps xmm0, xmm1
shufps xmm2, xmm0, 0xc4
movaps xmm0, xmm3
movaps xmmword [ecx], xmm2
movaps xmm1, xmmword [ecx + 0x10]
shufps xmm1, xmm1, 0xff
unpckhps xmm0, xmm1
shufps xmm3, xmm0, 0xc4
movaps xmmword [ecx + 0x10], xmm3
mov word [eax + edi*2], dx
mov eax, dword [esp + 0x10]
test ax, ax
je 0x53e8d5
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0xc]
mov esi, dword [esi]
movzx ecx, word [esi + edi + 0x1c]
test cx, cx
je 0x53e886
mov eax, ecx
jmp 0x53e8c6
movzx ecx, word [esi + edi + 0xc]
movzx edx, ax
test cx, cx
je 0x53e8b1
movzx eax, cx
shl eax, 5
cmp word [eax + esi + 0x1e], dx
jne 0x53e944
movzx edx, cx
movzx ecx, word [eax + esi + 0xc]
test cx, cx
jne 0x53e893
movzx eax, dx
movzx eax, ax
test cx, cx
jne 0x53e8c3
cmp ax, dx
jne 0x53e8c3
xor eax, eax
movzx eax, ax
xor ecx, ecx
mov dword [esp + 0x10], eax
cmp cx, ax
jne 0x53e7d0
mov esi, dword [esp + 0x20]
mov eax, 1
mov edx, eax
mov word [esi + 0x18], ax
mov ecx, dword [esi]
mov esi, dword [esp + 0x18]
movzx edi, dx
shl edi, 5
add ecx, edi
movzx eax, word [ecx + 0xc]
movzx eax, word [esi + eax*2]
mov esi, dword [esp + 0x20]
or eax, 0x3f000000
mov dword [ecx + 0xc], eax
movzx eax, word [ecx + 0x1c]
test ax, ax
je 0x53e92b
mov esi, dword [esp + 0x18]
movzx eax, word [esi + eax*2]
mov word [ecx + 0x1c], ax
movzx eax, word [ecx + 0x1e]
movzx eax, word [esi + eax*2]
mov esi, dword [esp + 0x20]
mov word [ecx + 0x1e], ax
test dx, dx
je 0x53e9c4
mov esi, dword [esi]
movzx eax, word [edi + esi + 0x1c]
test ax, ax
je 0x53e95d
mov edx, eax
jmp 0x53e9b5
test cx, cx
je 0x53e8b1
movzx eax, cx
shl eax, 5
movzx eax, word [eax + esi + 0x1e]
jmp 0x53e8b4
movzx eax, word [edi + esi + 0xc]
movzx edx, dx
test ax, ax
je 0x53e98a
nop word [eax + eax]
movzx ecx, ax
shl ecx, 5
cmp word [ecx + esi + 0x1e], dx
jne 0x53e99e
movzx edx, ax
movzx eax, word [ecx + esi + 0xc]
test ax, ax
jne 0x53e970
movzx ecx, dx
movzx ecx, cx
test ax, ax
jne 0x53e9b0
cmp cx, dx
jne 0x53e9b0
xor eax, eax
jmp 0x53e9b2
test ax, ax
je 0x53e98a
movzx ecx, ax
shl ecx, 5
movzx ecx, word [ecx + esi + 0x1e]
jmp 0x53e98d
mov eax, ecx
movzx edx, ax
mov esi, dword [esp + 0x20]
xor eax, eax
cmp ax, dx
jne 0x53e8e4
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
mov eax, dword [esp + 8]
lea edi, [eax + 0xf]
and edi, 0xfffffff0
cmp eax, dword [edx + 8]
mov eax, dword [esp + 0x18]
jg 0x53e9f7
lea ecx, [edi + eax]
cmp ecx, dword [edx + 0xc]
jne 0x53e9f7
cmp dword [edx + 0x14], eax
je 0x53e9f7
mov dword [edx + 0xc], eax
jmp 0x53ea00
push edi
push eax
mov ecx, edx
call fcn.0046a590
mov edi, dword [esp + 0x14]
mov eax, dword [edi + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x14]
pop edi
mov dword [esi + 0x14], eax
pop esi
add esp, 0x14
ret 4