Function at 0x53fb40
Capabilities:
Get thread local storage value

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x24
movzx eax, word [eax + 0x18]
test ax, ax
je 0x5402aa
push esi
push edi
push dword [0x884adc]
mov esi, eax
mov dword [esp + 0x24], esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 8], 0x80
mov edx, dword [eax + 0xc]
mov dword [esp + 0x24], edx
lea ecx, [edx + 0x80]
jl 0x53fb88
cmp ecx, dword [eax + 0x10]
ja 0x53fb88
mov dword [eax + 0xc], ecx
jmp 0x53fb9a
push 0x80
mov ecx, eax
call fcn.0046a3c0
mov edx, eax
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x34]
xor eax, eax
mov dword [esp + 0x28], 1
mov word [edx], ax
nop dword [eax + eax]
mov eax, dword [esp + 0x30]
xor ecx, ecx
movaps xmm4, xmmword [0x719550]
shufps xmm4, xmm4, 0
movaps xmm0, xmm4
mov dword [esp + 0x14], ecx
mov edx, dword [eax]
movzx eax, si
shl eax, 5
add eax, edx
shufps xmm0, xmm4, 0
mov dword [esp + 0x10], eax
movaps xmm5, xmmword [eax + 0x10]
movaps xmm1, xmm5
movaps xmm6, xmmword [eax]
unpckhps xmm1, xmm0
shufps xmm5, xmm1, 0xc4
cmp dword [edi + 0xc], ecx
jle 0x53fc9b
mov eax, dword [edi + 8]
mov dword [esp + 0x1c], eax
nop dword [eax + eax]
movaps xmm3, xmmword [eax]
movaps xmm2, xmm3
movaps xmm0, xmm3
mulps xmm0, xmm5
mulps xmm2, xmm6
shufps xmm3, xmm3, 0xff
movaps xmm1, xmm2
minps xmm1, xmm0
maxps xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
shufps xmm1, xmm1, 0
addss xmm2, xmm0
movaps xmm0, xmm3
addps xmm0, xmm1
shufps xmm2, xmm2, 0
addps xmm3, xmm2
shufps xmm0, xmm0, 0
shufps xmm3, xmm3, 0
mulps xmm3, xmm0
shufps xmm3, xmm3, 0
movmskps eax, xmm3
test al, 1
je 0x53fc6e
or ecx, 2
jmp 0x53fc7c
movmskps eax, xmm0
test al, 1
je 0x540249
or ecx, 1
mov eax, dword [esp + 0x14]
add dword [esp + 0x1c], 0x10
inc eax
cmp eax, dword [edi + 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
jl 0x53fc00
mov eax, dword [esp + 0x10]
test cl, 2
jne 0x53fde5
cmp word [eax + 0x1c], 0
je 0x53fda7
movzx eax, word [eax + 0x1c]
mov dword [esp + 0x1c], eax
test ax, ax
je 0x540249
movzx ecx, ax
shl ecx, 5
mov dword [esp + 0x20], ecx
cmp word [edx + ecx + 0x1c], 0
jne 0x53fd23
movzx ecx, word [edx + ecx + 0x1e]
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x10], edx
lea eax, [eax + ecx*8]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 8]
and eax, 0x3fffffff
cmp dword [edx + 4], eax
jne 0x53fd08
push 4
push edx
push 0x7d8954
call fcn.00467c00
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [edx + 4]
mov eax, dword [edx]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
mov dword [ecx], eax
inc dword [edx + 4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov edx, dword [edx]
add ecx, edx
mov dword [esp + 0x10], ecx
movzx ecx, word [ecx + 0x1c]
test cx, cx
je 0x53fd3c
mov eax, ecx
jmp 0x53fd95
movzx edi, ax
mov eax, dword [esp + 0x10]
movzx ecx, word [eax + 0xc]
cmp cx, si
je 0x53fd6a
nop dword [eax]
movzx eax, cx
shl eax, 5
cmp word [eax + edx + 0x1e], di
jne 0x53fd6a
movzx edi, cx
movzx ecx, word [eax + edx + 0xc]
cmp cx, si
jne 0x53fd50
test cx, cx
je 0x53fd7c
movzx eax, cx
shl eax, 5
movzx eax, word [eax + edx + 0x1e]
jmp 0x53fd7f
movzx eax, di
movzx eax, ax
cmp cx, si
jne 0x53fd8e
cmp ax, di
jne 0x53fd8e
xor eax, eax
mov edi, dword [esp + 0x34]
movzx eax, ax
mov dword [esp + 0x1c], eax
test ax, ax
jne 0x53fcc0
jmp 0x540249
movzx ecx, word [eax + 0x1e]
mov eax, dword [edi]
mov esi, dword [edi + 4]
lea eax, [eax + ecx*8]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp dword [esi + 4], eax
jne 0x53fdd4
push 4
push esi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov eax, dword [esi]
mov ecx, dword [esi + 4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x10]
jmp 0x540242
movzx ecx, word [eax + 0x1c]
mov dword [esp + 0x10], ecx
test cx, cx
je 0x540209
cmp dword [esp + 0x28], 0x20
jge 0x53fecd
mov word [esp + 0x18], cx
movaps xmm0, xmm4
mov cx, word [eax + 0x1e]
mov eax, dword [esp + 0x10]
shufps xmm0, xmm4, 0
movzx eax, ax
shl eax, 5
mov word [esp + 0x1a], cx
movzx ecx, cx
shl ecx, 5
movaps xmm3, xmmword [eax + edx + 0x10]
movaps xmm1, xmm3
mov esi, dword [esp + 0x24]
unpckhps xmm1, xmm0
movaps xmm2, xmmword [ecx + edx + 0x10]
shufps xmm3, xmm1, 0xc4
movaps xmm0, xmm2
unpckhps xmm0, xmm4
movaps xmm4, xmmword [edi + 0x10]
shufps xmm2, xmm0, 0xc4
movaps xmm0, xmm4
mulps xmm4, xmmword [eax + edx]
movaps xmm1, xmmword [edi + 0x10]
mulps xmm0, xmm3
minps xmm4, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0x55
addss xmm0, xmm4
shufps xmm4, xmm4, 0xaa
addss xmm4, xmm0
movaps xmm0, xmm1
mulps xmm1, xmmword [ecx + edx]
mov edx, dword [esp + 0x28]
mulps xmm0, xmm2
shufps xmm4, xmm4, 0
minps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
shufps xmm1, xmm1, 0
subps xmm4, xmm1
shufps xmm4, xmm4, 0
movmskps eax, xmm4
not al
movsx eax, al
and eax, 1
lea ecx, [eax + eax]
lea eax, [esp + 0x1a]
sub eax, ecx
mov ax, word [eax]
mov word [esi + edx*2], ax
inc edx
movzx esi, word [esp + ecx + 0x18]
mov dword [esp + 0x28], edx
jmp 0x54025e
movzx edi, cx
mov esi, dword [esp + 0x34]
xor ecx, ecx
movaps xmm4, xmmword [0x719550]
movzx eax, di
shl eax, 5
mov esi, dword [esi + 0xc]
mov dword [esp + 8], eax
add eax, edx
shufps xmm4, xmm4, 0
test esi, esi
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x20]
movaps xmm5, xmmword [eax + 0x10]
movaps xmm6, xmmword [eax]
movaps xmm0, xmm5
unpckhps xmm0, xmm4
mov dword [esp + 0xc], eax
shufps xmm5, xmm0, 0xc4
mov dword [esp + 0x14], ecx
jle 0x53ffc0
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 8]
mov dword [esp + 0x1c], eax
movaps xmm3, xmmword [eax]
movaps xmm2, xmm3
movaps xmm0, xmm3
mulps xmm0, xmm5
mulps xmm2, xmm6
shufps xmm3, xmm3, 0xff
movaps xmm1, xmm2
minps xmm1, xmm0
maxps xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
shufps xmm1, xmm1, 0
addss xmm2, xmm0
movaps xmm0, xmm3
addps xmm0, xmm1
shufps xmm2, xmm2, 0
addps xmm3, xmm2
shufps xmm0, xmm0, 0
shufps xmm3, xmm3, 0
mulps xmm3, xmm0
shufps xmm3, xmm3, 0
movmskps eax, xmm3
test al, 1
je 0x53ff92
or ecx, 2
jmp 0x53ffa0
movmskps eax, xmm0
test al, 1
je 0x540192
or ecx, 1
mov eax, dword [esp + 0x14]
add dword [esp + 0x1c], 0x10
inc eax
cmp eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
jl 0x53ff24
mov eax, dword [esp + 0xc]
test cl, 2
jne 0x5400cb
cmp word [eax + 0x1c], 0
je 0x540146
movzx eax, word [eax + 0x1c]
mov dword [esp + 0x1c], eax
test ax, ax
je 0x540192
movzx ecx, ax
shl ecx, 5
mov dword [esp + 0x10], ecx
cmp word [edx + ecx + 0x1c], 0
jne 0x540044
movzx ecx, word [edx + ecx + 0x1e]
mov edx, dword [esp + 0x34]
mov eax, dword [edx]
mov esi, dword [edx + 4]
lea eax, [eax + ecx*8]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp dword [esi + 4], eax
jne 0x540029
push 4
push esi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov ecx, dword [esi + 4]
mov eax, dword [esi]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
mov dword [ecx], eax
inc dword [esi + 4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov edx, dword [edx]
add ecx, edx
mov dword [esp + 0xc], ecx
movzx ecx, word [ecx + 0x1c]
test cx, cx
je 0x54005d
mov eax, ecx
jmp 0x5400b5
movzx esi, ax
mov eax, dword [esp + 0xc]
movzx eax, word [eax + 0xc]
cmp ax, di
je 0x54008a
nop dword [eax]
movzx ecx, ax
shl ecx, 5
cmp word [ecx + edx + 0x1e], si
jne 0x54008a
movzx esi, ax
movzx eax, word [ecx + edx + 0xc]
cmp ax, di
jne 0x540070
test ax, ax
je 0x54009c
movzx ecx, ax
shl ecx, 5
movzx ecx, word [ecx + edx + 0x1e]
jmp 0x54009f
movzx ecx, si
movzx ecx, cx
cmp ax, di
jne 0x5400b0
cmp cx, si
jne 0x5400b0
xor eax, eax
jmp 0x5400b2
mov eax, ecx
movzx eax, ax
mov dword [esp + 0x1c], eax
test ax, ax
jne 0x53ffe5
mov esi, dword [esp + 0x20]
jmp 0x540192
cmp word [eax + 0x1c], 0
je 0x540146
test di, di
je 0x540249
movzx ecx, word [eax + 0x1c]
test cx, cx
je 0x5400eb
mov edi, ecx
jmp 0x5401fe
movzx ecx, word [eax + 0xc]
movzx edi, di
cmp cx, si
je 0x54011a
nop word [eax + eax]
movzx eax, cx
shl eax, 5
cmp word [eax + edx + 0x1e], di
jne 0x54011a
movzx edi, cx
movzx ecx, word [eax + edx + 0xc]
cmp cx, si
jne 0x540100
test cx, cx
je 0x54012c
movzx eax, cx
shl eax, 5
movzx eax, word [eax + edx + 0x1e]
jmp 0x54012f
movzx eax, di
movzx eax, ax
cmp cx, si
jne 0x54013e
cmp ax, di
jne 0x54013e
xor eax, eax
movzx edi, ax
jmp 0x5401fe
mov edx, dword [esp + 0x34]
movzx ecx, word [eax + 0x1e]
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 0xc], edx
lea eax, [eax + ecx*8]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 8]
and eax, 0x3fffffff
cmp dword [edx + 4], eax
jne 0x54017f
push 4
push edx
push 0x7d8954
call fcn.00467c00
mov edx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [edx]
mov ecx, dword [edx + 4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov dword [ecx], eax
inc dword [edx + 4]
movzx eax, di
mov dword [esp + 0x14], eax
test di, di
je 0x540249
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [esp + 8]
movzx ecx, word [eax + edx + 0xc]
cmp cx, si
je 0x5401da
nop word [eax + eax]
movzx eax, cx
shl eax, 5
cmp word [eax + edx + 0x1e], di
jne 0x5401da
movzx edi, cx
movzx ecx, word [eax + edx + 0xc]
cmp cx, si
jne 0x5401c0
test cx, cx
je 0x5401ec
movzx eax, cx
shl eax, 5
movzx eax, word [eax + edx + 0x1e]
jmp 0x5401ef
movzx eax, di
movzx eax, ax
cmp cx, si
jne 0x5401fc
cmp ax, di
je 0x540249
mov edi, eax
test di, di
jne 0x53fed0
jmp 0x540249
movzx ecx, word [eax + 0x1e]
mov eax, dword [edi]
mov esi, dword [edi + 4]
lea eax, [eax + ecx*8]
mov dword [esp + 8], eax
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp dword [esi + 4], eax
jne 0x540236
push 4
push esi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov eax, dword [esi]
mov ecx, dword [esi + 4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 8]
mov eax, dword [eax]
mov dword [ecx], eax
inc dword [esi + 4]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
dec eax
mov edi, dword [esp + 0x34]
mov dword [esp + 0x28], eax
movzx esi, word [ecx + eax*2]
mov dword [esp + 0x20], esi
test si, si
jne 0x53fbb0
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, dword [esp + 0x24]
pop edi
pop esi
cmp dword [eax + 8], 0x80
jl 0x54029d
lea ecx, [edx + 0x80]
cmp ecx, dword [eax + 0xc]
jne 0x54029d
cmp dword [eax + 0x14], edx
je 0x54029d
mov dword [eax + 0xc], edx
add esp, 0x24
ret
push 0x80
push edx
mov ecx, eax
call fcn.0046a590
add esp, 0x24
ret