1a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/*
2a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikCopyright (c) 2014, Intel Corporation
3a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikAll rights reserved.
4a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
5a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikRedistribution and use in source and binary forms, with or without
6a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchikmodification, are permitted provided that the following conditions are met:
7a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
8a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * Redistributions of source code must retain the above copyright notice,
9a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * this list of conditions and the following disclaimer.
10a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
11a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * Redistributions in binary form must reproduce the above copyright notice,
12a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * this list of conditions and the following disclaimer in the documentation
13a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * and/or other materials provided with the distribution.
14a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
15a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * Neither the name of Intel Corporation nor the names of its contributors
16a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * may be used to endorse or promote products derived from this software
17a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik    * without specific prior written permission.
18a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
19a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik*/
30a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
31a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
32a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
33a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef STRCPY
34a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#  define STRCPY	strcpy
35a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
36a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
37a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef L
38a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#  define L(label)	.L##label
39a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
40a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
41a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef cfi_startproc
42a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#  define cfi_startproc	.cfi_startproc
43a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
44a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
45a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef cfi_endproc
46a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#  define cfi_endproc	.cfi_endproc
47a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
48a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
49a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef ENTRY
50a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#  define ENTRY(name)	\
51a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.type name, @function;	\
52a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.globl name;	\
53a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4;	\
54a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchikname:	\
55a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cfi_startproc
56a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
57a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
58a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef END
59a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#  define END(name)	\
60a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cfi_endproc;	\
61a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.size name, .-name
62a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
63a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
64a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
65a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
66a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#define JMPTBL(I, B)	I - B
67a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)	\
68a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	TABLE(%rip), %r11;	\
69a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movslq	(%r11, INDEX, SCALE), %rcx;	\
70a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	(%r11, %rcx), %rcx;	\
71a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	*%rcx
72a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
73a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
74a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
75a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# define RETURN ret
76a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
77a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik.text
78a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikENTRY (STRCPY)
79a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifdef USE_AS_STRNCPY
80a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, %r8
81a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%r8, %r8
82a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jz	L(ExitZero)
83a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
84a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rsi, %rcx
85a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef USE_AS_STPCPY
86a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdi, %rax      /* save result */
87a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
88a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
89a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
90a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$63, %rcx
91a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	$32, %rcx
92a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(SourceStringAlignmentLess32)
93a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
94a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$-16, %rsi
95a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$15, %rcx
96a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pxor	%xmm0, %xmm0
97a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pxor	%xmm1, %xmm1
98a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
99a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	(%rsi), %xmm1
100a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm1, %rdx
101a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	shr	%cl, %rdx
102a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
103a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# if defined USE_AS_STPCPY || defined USE_AS_STRCAT
104a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	$16, %r10
105a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rcx, %r10
106a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r10, %r8
107a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# else
108a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	$17, %r10
109a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rcx, %r10
110a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r10, %r8
111a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
112a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesTailCase2OrCase3)
113a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
114a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
115a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesTail)
116a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
117a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	16(%rsi), %xmm0
118a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
119a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
120a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %r10
121a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r10, %r8
122a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To32BytesCase2OrCase3)
123a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
124a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
125a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To32Bytes)
126a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
127a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi, %rcx), %xmm1   /* copy 16 bytes */
128a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm1, (%rdi)
129a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
130a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/* If source adress alignment != destination adress alignment */
131a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
132a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Unalign16Both):
133a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rcx, %rdi
134a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
135a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %r8
136a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
137a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	$16, %rcx
138a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	(%rsi, %rcx), %xmm1
139a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi, %rcx), %xmm2
140a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm1, (%rdi, %rcx)
141a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm2, %xmm0
142a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
143a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
144a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
145a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$48, %r8
146a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
147a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
148a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
149a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
150a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm2)
151a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
152a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
153a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
154a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
155a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi, %rcx), %xmm3
156a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, (%rdi, %rcx)
157a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm3, %xmm0
158a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
159a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
160a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
161a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
162a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
163a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
164a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
165a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
166a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm3)
167a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
168a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
169a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
170a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
171a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi, %rcx), %xmm4
172a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm3, (%rdi, %rcx)
173a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm4, %xmm0
174a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
175a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
176a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
177a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
178a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
179a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
180a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
181a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
182a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm4)
183a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
184a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
185a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
186a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
187a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi, %rcx), %xmm1
188a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi, %rcx)
189a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm1, %xmm0
190a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
191a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
192a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
193a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
194a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
195a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
196a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
197a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
198a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm1)
199a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
200a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
201a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
202a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
203a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi, %rcx), %xmm2
204a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm1, (%rdi, %rcx)
205a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm2, %xmm0
206a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
207a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
208a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
209a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
210a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
211a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
212a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
213a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
214a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm2)
215a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
216a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
217a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
218a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
219a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi, %rcx), %xmm3
220a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, (%rdi, %rcx)
221a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm3, %xmm0
222a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
223a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
224a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
225a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
226a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
227a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
228a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
229a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
230a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm3)
231a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
232a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
233a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
234a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
235a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm3, (%rdi, %rcx)
236a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rsi, %rdx
237a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rsi, %rcx), %rsi
238a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$-0x40, %rsi
239a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rsi, %rdx
240a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rdx, %rdi
241a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
242a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	128(%r8, %rdx), %r8
243a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
244a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Unaligned64Loop):
245a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	(%rsi), %xmm2
246a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	%xmm2, %xmm4
247a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi), %xmm5
248a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	32(%rsi), %xmm3
249a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	%xmm3, %xmm6
250a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	48(%rsi), %xmm7
251a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pminub	%xmm5, %xmm2
252a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pminub	%xmm7, %xmm3
253a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pminub	%xmm2, %xmm3
254a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm0, %xmm3
255a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm3, %rdx
256a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
257a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$64, %r8
258a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(UnalignedLeaveCase2OrCase3)
259a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
260a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
261a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(Unaligned64Leave)
262a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
263a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Unaligned64Loop_start):
264a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$64, %rdi
265a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$64, %rsi
266a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, -64(%rdi)
267a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	(%rsi), %xmm2
268a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm2, %xmm4
269a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, -48(%rdi)
270a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	16(%rsi), %xmm5
271a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pminub	%xmm5, %xmm2
272a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	32(%rsi), %xmm3
273a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm6, -32(%rdi)
274a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	%xmm3, %xmm6
275a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm7, -16(%rdi)
276a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movaps	48(%rsi), %xmm7
277a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pminub	%xmm7, %xmm3
278a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pminub	%xmm2, %xmm3
279a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm0, %xmm3
280a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm3, %rdx
281a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
282a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$64, %r8
283a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(UnalignedLeaveCase2OrCase3)
284a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
285a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
286a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jz	L(Unaligned64Loop_start)
287a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
288a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Unaligned64Leave):
289a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pxor	%xmm1, %xmm1
290a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
291a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm4, %xmm0
292a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm5, %xmm1
293a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
294a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm1, %rcx
295a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
296a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnaligned_0)
297a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rcx, %rcx
298a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnaligned_16)
299a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
300a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm6, %xmm0
301a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm7, %xmm1
302a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
303a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm1, %rcx
304a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
305a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnaligned_32)
306a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
307a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rcx, %rdx
308a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi)
309a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, 16(%rdi)
310a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm6, 32(%rdi)
311a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
312a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifdef USE_AS_STPCPY
313a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	48(%rdi, %rdx), %rax
314a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
315a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm7, 48(%rdi)
316a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$15, %r8
317a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rdx, %r8
318a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	49(%rdi, %rdx), %rdi
319a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(StrncpyFillTailWithZero)
320a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
321a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$48, %rsi
322a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$48, %rdi
323a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
324a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
325a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
326a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/* If source adress alignment == destination adress alignment */
327a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
328a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(SourceStringAlignmentLess32):
329a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pxor	%xmm0, %xmm0
330a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm1
331a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	16(%rsi), %xmm2
332a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm1, %xmm0
333a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
334a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
335a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
336a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# if defined USE_AS_STPCPY || defined USE_AS_STRCAT
337a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	$16, %r8
338a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# else
339a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	$17, %r8
340a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
341a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesTail1Case2OrCase3)
342a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
343a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
344a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesTail1)
345a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
346a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm2, %xmm0
347a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm1, (%rdi)
348a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
349a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
350a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
351a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# if defined USE_AS_STPCPY || defined USE_AS_STRCAT
352a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	$32, %r8
353a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# else
354a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	$33, %r8
355a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
356a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To32Bytes1Case2OrCase3)
357a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
358a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
359a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To32Bytes1)
360a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
361a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$15, %rcx
362a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$-16, %rsi
363a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
364a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(Unalign16Both)
365a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
366a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/*------End of main part with loops---------------------*/
367a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
368a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/* Case1 */
369a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
370a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if (!defined USE_AS_STRNCPY) || (defined USE_AS_STRCAT)
371a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
372a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16Bytes):
373a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rdi
374a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
375a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
376a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
377a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
378a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
379a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesTail):
380a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
381a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
382a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
383a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
384a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
385a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To32Bytes1):
386a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rsi
387a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdi
388a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
389a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
390a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
391a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesTail1):
392a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
393a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
394a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
395a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
396a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To32Bytes):
397a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
398a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
399a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdx
400a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rcx, %rdx
401a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
402a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
403a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
404a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnaligned_0):
405a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
406a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
407a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifdef USE_AS_STPCPY
408a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	(%rdi, %rdx), %rax
409a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
410a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi)
411a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$63, %r8
412a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rdx, %r8
413a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	1(%rdi, %rdx), %rdi
414a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(StrncpyFillTailWithZero)
415a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
416a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
417a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
418a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
419a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
420a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnaligned_16):
421a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rcx, %rdx
422a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi)
423a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
424a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifdef USE_AS_STPCPY
425a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rdi, %rdx), %rax
426a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
427a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, 16(%rdi)
428a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$47, %r8
429a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rdx, %r8
430a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	17(%rdi, %rdx), %rdi
431a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(StrncpyFillTailWithZero)
432a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
433a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rsi
434a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdi
435a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
436a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
437a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
438a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
439a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnaligned_32):
440a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
441a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi)
442a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, 16(%rdi)
443a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
444a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifdef USE_AS_STPCPY
445a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	32(%rdi, %rdx), %rax
446a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
447a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm6, 32(%rdi)
448a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$31, %r8
449a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rdx, %r8
450a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	33(%rdi, %rdx), %rdi
451a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(StrncpyFillTailWithZero)
452a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
453a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$32, %rsi
454a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$32, %rdi
455a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
456a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
457a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
458a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
459a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef USE_AS_STRCAT
460a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
461a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnalignedXmm6):
462a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm6, (%rdi, %rcx)
463a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(CopyFrom1To16BytesXmmExit)
464a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
465a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
466a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnalignedXmm5):
467a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, (%rdi, %rcx)
468a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(CopyFrom1To16BytesXmmExit)
469a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
470a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
471a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnalignedXmm4):
472a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi, %rcx)
473a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(CopyFrom1To16BytesXmmExit)
474a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
475a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
476a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnalignedXmm3):
477a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm3, (%rdi, %rcx)
478a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(CopyFrom1To16BytesXmmExit)
479a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
480a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
481a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnalignedXmm1):
482a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm1, (%rdi, %rcx)
483a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jmp	L(CopyFrom1To16BytesXmmExit)
484a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
485a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
486a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
487a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesExit):
488a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %rdx, 4)
489a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
490a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/* Case2 */
491a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
492a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
493a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesCase2):
494a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %r8
495a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rdi
496a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
497a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
498a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r8, %rdx
499a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesExit)
500a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
501a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
502a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
503a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To32BytesCase2):
504a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
505a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
506a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdx
507a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rcx, %rdx
508a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r8, %rdx
509a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesExit)
510a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
511a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
512a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesTailCase2):
513a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
514a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
515a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r8, %rdx
516a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesExit)
517a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
518a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
519a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesTail1Case2):
520a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
521a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r8, %rdx
522a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesExit)
523a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
524a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
525a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/* Case2 or Case3,  Case3 */
526a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
527a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
528a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesCase2OrCase3):
529a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
530a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesCase2)
531a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesCase3):
532a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %r8
533a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rdi
534a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
535a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
536a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
537a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
538a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To32BytesCase2OrCase3):
539a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
540a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To32BytesCase2)
541a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
542a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
543a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
544a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
545a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesTailCase2OrCase3):
546a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
547a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesTailCase2)
548a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rsi
549a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
550a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
551a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
552a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To32Bytes1Case2OrCase3):
553a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdi
554a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rsi
555a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
556a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesTail1Case2OrCase3):
557a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
558a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesTail1Case2)
559a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
560a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
561a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
562a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
563a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/*------------End labels regarding with copying 1-16 bytes--and 1-32 bytes----*/
564a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
565a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
566a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit1):
567a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, (%rdi)
568a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
569a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	(%rdi), %rax
570a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
571a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
572a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$1, %r8
573a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	1(%rdi), %rdi
574a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
575a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
576a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
577a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
578a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
579a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit2):
580a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %dx
581a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, (%rdi)
582a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
583a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	1(%rdi), %rax
584a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
585a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
586a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$2, %r8
587a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	2(%rdi), %rdi
588a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
589a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
590a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
591a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
592a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
593a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit3):
594a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %cx
595a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cx, (%rdi)
596a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, 2(%rdi)
597a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
598a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	2(%rdi), %rax
599a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
600a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
601a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$3, %r8
602a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	3(%rdi), %rdi
603a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
604a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
605a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
606a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
607a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
608a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit4):
609a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %edx
610a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, (%rdi)
611a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
612a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	3(%rdi), %rax
613a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
614a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
615a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$4, %r8
616a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	4(%rdi), %rdi
617a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
618a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
619a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
620a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
621a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
622a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit5):
623a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %ecx
624a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, 4(%rdi)
625a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, (%rdi)
626a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
627a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	4(%rdi), %rax
628a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
629a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
630a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$5, %r8
631a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	5(%rdi), %rdi
632a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
633a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
634a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
635a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
636a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
637a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit6):
638a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %ecx
639a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	4(%rsi), %dx
640a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, (%rdi)
641a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, 4(%rdi)
642a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
643a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	5(%rdi), %rax
644a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
645a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
646a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$6, %r8
647a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	6(%rdi), %rdi
648a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
649a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
650a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
651a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
652a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
653a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit7):
654a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %ecx
655a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	3(%rsi), %edx
656a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, (%rdi)
657a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 3(%rdi)
658a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
659a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	6(%rdi), %rax
660a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
661a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
662a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$7, %r8
663a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	7(%rdi), %rdi
664a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
665a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
666a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
667a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
668a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
669a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit8):
670a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rdx
671a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
672a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
673a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	7(%rdi), %rax
674a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
675a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
676a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$8, %r8
677a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	8(%rdi), %rdi
678a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
679a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
680a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
681a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
682a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
683a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit9):
684a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
685a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, 8(%rdi)
686a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
687a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
688a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	8(%rdi), %rax
689a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
690a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
691a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$9, %r8
692a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	9(%rdi), %rdi
693a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
694a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
695a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
696a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
697a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
698a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit10):
699a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
700a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	8(%rsi), %dx
701a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
702a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, 8(%rdi)
703a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
704a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	9(%rdi), %rax
705a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
706a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
707a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$10, %r8
708a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	10(%rdi), %rdi
709a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
710a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
711a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
712a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
713a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
714a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit11):
715a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
716a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	7(%rsi), %edx
717a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
718a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 7(%rdi)
719a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
720a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	10(%rdi), %rax
721a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
722a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
723a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$11, %r8
724a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	11(%rdi), %rdi
725a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
726a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
727a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
728a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
729a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
730a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit12):
731a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
732a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	8(%rsi), %edx
733a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
734a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 8(%rdi)
735a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
736a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	11(%rdi), %rax
737a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
738a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
739a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$12, %r8
740a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	12(%rdi), %rdi
741a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
742a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
743a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
744a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
745a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
746a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit13):
747a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
748a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	5(%rsi), %rdx
749a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
750a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 5(%rdi)
751a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
752a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	12(%rdi), %rax
753a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
754a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
755a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$13, %r8
756a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	13(%rdi), %rdi
757a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
758a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
759a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
760a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
761a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
762a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit14):
763a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
764a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	6(%rsi), %rdx
765a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
766a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 6(%rdi)
767a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
768a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	13(%rdi), %rax
769a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
770a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
771a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$14, %r8
772a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	14(%rdi), %rdi
773a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
774a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
775a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
776a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
777a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
778a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit15):
779a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
780a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	7(%rsi), %rdx
781a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
782a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 7(%rdi)
783a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
784a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	14(%rdi), %rax
785a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
786a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
787a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$15, %r8
788a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	15(%rdi), %rdi
789a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
790a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
791a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
792a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
793a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
794a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit16):
795a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
796a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
797a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
798a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	15(%rdi), %rax
799a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
800a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
801a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
802a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rdi), %rdi
803a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
804a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
805a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
806a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
807a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
808a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit17):
809a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
810a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
811a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, 16(%rdi)
812a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
813a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rdi), %rax
814a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
815a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
816a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$17, %r8
817a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	17(%rdi), %rdi
818a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
819a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
820a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
821a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
822a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
823a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit18):
824a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
825a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %cx
826a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
827a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cx, 16(%rdi)
828a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
829a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	17(%rdi), %rax
830a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
831a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
832a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$18, %r8
833a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	18(%rdi), %rdi
834a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
835a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
836a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
837a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
838a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
839a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit19):
840a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
841a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	15(%rsi), %ecx
842a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
843a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 15(%rdi)
844a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
845a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	18(%rdi), %rax
846a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
847a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
848a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$19, %r8
849a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	19(%rdi), %rdi
850a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
851a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
852a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
853a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
854a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
855a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit20):
856a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
857a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %ecx
858a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
859a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 16(%rdi)
860a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
861a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	19(%rdi), %rax
862a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
863a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
864a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$20, %r8
865a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	20(%rdi), %rdi
866a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
867a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
868a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
869a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
870a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
871a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit21):
872a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
873a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %ecx
874a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
875a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 16(%rdi)
876a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, 20(%rdi)
877a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
878a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	20(%rdi), %rax
879a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
880a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
881a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$21, %r8
882a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	21(%rdi), %rdi
883a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
884a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
885a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
886a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
887a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
888a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit22):
889a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
890a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	14(%rsi), %rcx
891a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
892a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 14(%rdi)
893a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
894a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	21(%rdi), %rax
895a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
896a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
897a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$22, %r8
898a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	22(%rdi), %rdi
899a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
900a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
901a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
902a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
903a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
904a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit23):
905a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
906a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	15(%rsi), %rcx
907a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
908a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 15(%rdi)
909a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
910a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	22(%rdi), %rax
911a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
912a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
913a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$23, %r8
914a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	23(%rdi), %rdi
915a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
916a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
917a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
918a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
919a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
920a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit24):
921a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
922a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rcx
923a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
924a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 16(%rdi)
925a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
926a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	23(%rdi), %rax
927a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
928a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
929a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$24, %r8
930a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	24(%rdi), %rdi
931a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
932a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
933a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
934a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
935a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
936a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit25):
937a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
938a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rcx
939a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
940a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 16(%rdi)
941a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dh, 24(%rdi)
942a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
943a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	24(%rdi), %rax
944a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
945a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
946a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$25, %r8
947a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	25(%rdi), %rdi
948a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
949a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
950a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
951a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
952a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
953a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit26):
954a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
955a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
956a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	24(%rsi), %cx
957a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
958a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
959a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cx, 24(%rdi)
960a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
961a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	25(%rdi), %rax
962a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
963a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
964a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$26, %r8
965a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	26(%rdi), %rdi
966a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
967a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
968a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
969a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
970a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
971a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit27):
972a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
973a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
974a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	23(%rsi), %ecx
975a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
976a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
977a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 23(%rdi)
978a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
979a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	26(%rdi), %rax
980a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
981a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
982a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$27, %r8
983a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	27(%rdi), %rdi
984a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
985a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
986a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
987a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
988a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
989a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit28):
990a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
991a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
992a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	24(%rsi), %ecx
993a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
994a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
995a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 24(%rdi)
996a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
997a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	27(%rdi), %rax
998a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
999a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
1000a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$28, %r8
1001a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	28(%rdi), %rdi
1002a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
1003a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1004a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1005a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1006a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1007a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit29):
1008a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1009a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	13(%rsi), %xmm2
1010a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1011a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 13(%rdi)
1012a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1013a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	28(%rdi), %rax
1014a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1015a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
1016a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$29, %r8
1017a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	29(%rdi), %rdi
1018a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
1019a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1020a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1021a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1022a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1023a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit30):
1024a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1025a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	14(%rsi), %xmm2
1026a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1027a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 14(%rdi)
1028a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1029a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	29(%rdi), %rax
1030a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1031a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
1032a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$30, %r8
1033a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	30(%rdi), %rdi
1034a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
1035a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1036a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1037a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1038a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1039a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit31):
1040a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1041a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	15(%rsi), %xmm2
1042a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1043a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 15(%rdi)
1044a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1045a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	30(%rdi), %rax
1046a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1047a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
1048a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$31, %r8
1049a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	31(%rdi), %rdi
1050a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
1051a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1052a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1053a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1054a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1055a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Exit32):
1056a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1057a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	16(%rsi), %xmm2
1058a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1059a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 16(%rdi)
1060a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1061a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	31(%rdi), %rax
1062a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1063a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#if defined USE_AS_STRNCPY && !defined USE_AS_STRCAT
1064a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$32, %r8
1065a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	32(%rdi), %rdi
1066a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(StrncpyFillTailWithZero)
1067a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1068a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1069a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1070a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
1071a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1072a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1073a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit0):
1074a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1075a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdi, %rax
1076a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1077a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1078a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1079a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, (%rdi)
1080a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1081a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1082a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1083a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1084a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit1):
1085a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %dl
1086a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, (%rdi)
1087a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1088a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	1(%rdi), %rax
1089a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1090a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1091a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1092a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 1(%rdi)
1093a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1094a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1095a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1096a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1097a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit2):
1098a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %dx
1099a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, (%rdi)
1100a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1101a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	2(%rdi), %rax
1102a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1103a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1104a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1105a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 2(%rdi)
1106a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1107a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1108a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1109a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1110a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit3):
1111a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %cx
1112a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	2(%rsi), %dl
1113a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cx, (%rdi)
1114a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, 2(%rdi)
1115a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1116a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	3(%rdi), %rax
1117a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1118a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1119a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1120a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 3(%rdi)
1121a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1122a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1123a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1124a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1125a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit4):
1126a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %edx
1127a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, (%rdi)
1128a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1129a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	4(%rdi), %rax
1130a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1131a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1132a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1133a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 4(%rdi)
1134a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1135a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1136a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1137a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1138a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit5):
1139a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %ecx
1140a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	4(%rsi), %dl
1141a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, (%rdi)
1142a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, 4(%rdi)
1143a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1144a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	5(%rdi), %rax
1145a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1146a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1147a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1148a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 5(%rdi)
1149a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1150a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1151a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1152a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1153a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit6):
1154a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %ecx
1155a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	4(%rsi), %dx
1156a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, (%rdi)
1157a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, 4(%rdi)
1158a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1159a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	6(%rdi), %rax
1160a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1161a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1162a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1163a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 6(%rdi)
1164a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1165a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1166a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1167a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1168a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit7):
1169a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %ecx
1170a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	3(%rsi), %edx
1171a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, (%rdi)
1172a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 3(%rdi)
1173a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1174a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	7(%rdi), %rax
1175a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1176a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1177a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1178a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 7(%rdi)
1179a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1180a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1181a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1182a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1183a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit8):
1184a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rdx
1185a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1186a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1187a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	8(%rdi), %rax
1188a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1189a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1190a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1191a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 8(%rdi)
1192a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1193a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1194a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1195a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1196a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit9):
1197a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1198a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	8(%rsi), %dl
1199a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1200a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, 8(%rdi)
1201a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1202a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	9(%rdi), %rax
1203a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1204a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1205a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1206a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 9(%rdi)
1207a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1208a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1209a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1210a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1211a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit10):
1212a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1213a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	8(%rsi), %dx
1214a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1215a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, 8(%rdi)
1216a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1217a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	10(%rdi), %rax
1218a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1219a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1220a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1221a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 10(%rdi)
1222a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1223a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1224a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1225a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1226a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit11):
1227a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1228a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	7(%rsi), %edx
1229a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1230a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 7(%rdi)
1231a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1232a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	11(%rdi), %rax
1233a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1234a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1235a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1236a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 11(%rdi)
1237a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1238a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1239a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1240a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1241a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit12):
1242a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1243a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	8(%rsi), %edx
1244a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1245a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 8(%rdi)
1246a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1247a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	12(%rdi), %rax
1248a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1249a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1250a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1251a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 12(%rdi)
1252a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1253a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1254a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1255a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1256a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit13):
1257a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1258a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	5(%rsi), %rdx
1259a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1260a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 5(%rdi)
1261a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1262a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	13(%rdi), %rax
1263a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1264a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1265a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1266a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 13(%rdi)
1267a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1268a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1269a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1270a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1271a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit14):
1272a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1273a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	6(%rsi), %rdx
1274a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1275a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 6(%rdi)
1276a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1277a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	14(%rdi), %rax
1278a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1279a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1280a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1281a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 14(%rdi)
1282a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1283a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1284a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1285a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1286a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit15):
1287a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	(%rsi), %rcx
1288a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	7(%rsi), %rdx
1289a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, (%rdi)
1290a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 7(%rdi)
1291a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1292a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	15(%rdi), %rax
1293a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1294a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1295a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1296a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 15(%rdi)
1297a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1298a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1299a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1300a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1301a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit16):
1302a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1303a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1304a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1305a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rdi), %rax
1306a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1307a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1308a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1309a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 16(%rdi)
1310a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1311a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1312a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1313a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1314a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit17):
1315a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1316a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %cl
1317a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1318a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cl, 16(%rdi)
1319a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1320a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	17(%rdi), %rax
1321a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1322a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1323a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1324a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 17(%rdi)
1325a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1326a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1327a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1328a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1329a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit18):
1330a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1331a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %cx
1332a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1333a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cx, 16(%rdi)
1334a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1335a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	18(%rdi), %rax
1336a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1337a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1338a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1339a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 18(%rdi)
1340a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1341a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1342a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1343a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1344a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit19):
1345a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1346a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	15(%rsi), %ecx
1347a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1348a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 15(%rdi)
1349a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1350a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	19(%rdi), %rax
1351a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1352a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1353a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1354a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 19(%rdi)
1355a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1356a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1357a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1358a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1359a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit20):
1360a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1361a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %ecx
1362a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1363a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 16(%rdi)
1364a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1365a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	20(%rdi), %rax
1366a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1367a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1368a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1369a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 20(%rdi)
1370a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1371a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1372a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1373a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1374a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit21):
1375a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1376a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %ecx
1377a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	20(%rsi), %dl
1378a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1379a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 16(%rdi)
1380a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, 20(%rdi)
1381a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1382a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	21(%rdi), %rax
1383a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1384a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1385a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1386a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 21(%rdi)
1387a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1388a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1389a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1390a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1391a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit22):
1392a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1393a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	14(%rsi), %rcx
1394a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1395a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 14(%rdi)
1396a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1397a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	22(%rdi), %rax
1398a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1399a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1400a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1401a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 22(%rdi)
1402a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1403a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1404a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1405a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1406a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit23):
1407a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1408a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	15(%rsi), %rcx
1409a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1410a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 15(%rdi)
1411a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1412a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	23(%rdi), %rax
1413a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1414a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1415a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1416a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 23(%rdi)
1417a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1418a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1419a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1420a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1421a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit24):
1422a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1423a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rcx
1424a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1425a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rcx, 16(%rdi)
1426a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1427a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	24(%rdi), %rax
1428a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1429a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1430a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1431a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 24(%rdi)
1432a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1433a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1434a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1435a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1436a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit25):
1437a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1438a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
1439a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	24(%rsi), %cl
1440a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1441a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
1442a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cl, 24(%rdi)
1443a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1444a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	25(%rdi), %rax
1445a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1446a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1447a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1448a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 25(%rdi)
1449a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1450a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1451a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1452a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1453a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit26):
1454a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1455a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
1456a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	24(%rsi), %cx
1457a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1458a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
1459a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cx, 24(%rdi)
1460a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1461a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	26(%rdi), %rax
1462a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1463a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1464a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1465a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 26(%rdi)
1466a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1467a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1468a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1469a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1470a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit27):
1471a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1472a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
1473a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	23(%rsi), %ecx
1474a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1475a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
1476a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 23(%rdi)
1477a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1478a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	27(%rdi), %rax
1479a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1480a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1481a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1482a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 27(%rdi)
1483a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1484a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1485a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1486a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1487a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit28):
1488a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1489a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	16(%rsi), %rdx
1490a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	24(%rsi), %ecx
1491a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1492a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 16(%rdi)
1493a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%ecx, 24(%rdi)
1494a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1495a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	28(%rdi), %rax
1496a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1497a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1498a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1499a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 28(%rdi)
1500a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1501a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1502a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1503a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1504a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit29):
1505a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1506a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	13(%rsi), %xmm2
1507a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1508a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 13(%rdi)
1509a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1510a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	29(%rdi), %rax
1511a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1512a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1513a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1514a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 29(%rdi)
1515a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1516a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1517a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1518a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1519a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit30):
1520a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1521a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	14(%rsi), %xmm2
1522a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1523a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 14(%rdi)
1524a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1525a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	30(%rdi), %rax
1526a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1527a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1528a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1529a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 30(%rdi)
1530a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1531a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1532a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1533a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1534a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit31):
1535a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1536a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	15(%rsi), %xmm2
1537a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1538a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 15(%rdi)
1539a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1540a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	31(%rdi), %rax
1541a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1542a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1543a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1544a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 31(%rdi)
1545a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1546a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1547a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1548a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1549a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit32):
1550a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1551a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	16(%rsi), %xmm2
1552a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1553a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 16(%rdi)
1554a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1555a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	32(%rdi), %rax
1556a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1557a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1558a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1559a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 32(%rdi)
1560a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1561a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1562a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1563a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1564a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyExit33):
1565a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	(%rsi), %xmm0
1566a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	16(%rsi), %xmm2
1567a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	32(%rsi), %cl
1568a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1569a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, 16(%rdi)
1570a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%cl, 32(%rdi)
1571a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1572a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1573a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 33(%rdi)
1574a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1575a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1576a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1577a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
1578a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1579a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1580a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill0):
1581a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1582a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1583a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1584a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill1):
1585a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, (%rdi)
1586a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1587a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1588a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1589a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill2):
1590a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, (%rdi)
1591a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1592a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1593a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1594a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill3):
1595a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, -1(%rdi)
1596a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1597a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1598a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1599a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill4):
1600a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, (%rdi)
1601a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1602a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1603a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1604a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill5):
1605a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, (%rdi)
1606a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, 4(%rdi)
1607a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1608a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1609a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1610a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill6):
1611a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, (%rdi)
1612a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, 4(%rdi)
1613a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1614a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1615a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1616a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill7):
1617a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, -1(%rdi)
1618a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1619a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1620a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1621a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill8):
1622a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1623a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1624a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1625a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1626a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill9):
1627a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1628a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dl, 8(%rdi)
1629a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1630a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1631a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1632a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill10):
1633a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1634a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%dx, 8(%rdi)
1635a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1636a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1637a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1638a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill11):
1639a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1640a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 7(%rdi)
1641a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1642a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1643a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1644a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill12):
1645a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1646a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%edx, 8(%rdi)
1647a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1648a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1649a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1650a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill13):
1651a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1652a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 5(%rdi)
1653a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1654a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1655a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1656a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill14):
1657a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, (%rdi)
1658a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdx, 6(%rdi)
1659a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1660a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1661a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1662a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill15):
1663a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, -1(%rdi)
1664a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1665a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1666a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1667a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Fill16):
1668a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1669a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1670a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1671a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1672a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesUnalignedXmm2):
1673a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm2, (%rdi, %rcx)
1674a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1675a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1676a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(CopyFrom1To16BytesXmmExit):
1677a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
1678a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$15, %r8
1679a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rcx, %rdi
1680a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1681a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	(%rdi, %rdx), %rax
1682a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1683a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rdx, %r8
1684a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	1(%rdi, %rdx), %rdi
1685a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1686a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1687a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyFillTailWithZero):
1688a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pxor	%xmm0, %xmm0
1689a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%rdx, %rdx
1690a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1691a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(StrncpyFillExit)
1692a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1693a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm0, (%rdi)
1694a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdi
1695a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1696a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdi, %rsi
1697a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$0xf, %rsi
1698a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	%rsi, %rdi
1699a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	%rsi, %r8
1700a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$64, %r8
1701a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(StrncpyFillLess64)
1702a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1703a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyFillLoopMovdqa):
1704a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, (%rdi)
1705a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, 16(%rdi)
1706a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, 32(%rdi)
1707a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, 48(%rdi)
1708a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$64, %rdi
1709a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$64, %r8
1710a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jae	L(StrncpyFillLoopMovdqa)
1711a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1712a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyFillLess64):
1713a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$32, %r8
1714a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jl	L(StrncpyFillLess32)
1715a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, (%rdi)
1716a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, 16(%rdi)
1717a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$32, %rdi
1718a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1719a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jl	L(StrncpyFillExit)
1720a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, (%rdi)
1721a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdi
1722a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(FillTable), %r8, 4)
1723a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1724a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyFillLess32):
1725a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %r8
1726a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jl	L(StrncpyFillExit)
1727a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqa	%xmm0, (%rdi)
1728a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rdi
1729a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(FillTable), %r8, 4)
1730a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1731a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(StrncpyFillExit):
1732a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %r8
1733a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(FillTable), %r8, 4)
1734a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1735a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik/* end of ifndef USE_AS_STRCAT */
1736a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1737a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1738a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1739a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(UnalignedLeaveCase2OrCase3):
1740a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
1741a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(Unaligned64LeaveCase2)
1742a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Unaligned64LeaveCase3):
1743a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	64(%r8), %rcx
1744a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	and	$-16, %rcx
1745a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$48, %r8
1746a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jl	L(CopyFrom1To16BytesCase3)
1747a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi)
1748a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1749a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesCase3)
1750a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, 16(%rdi)
1751a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1752a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesCase3)
1753a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm6, 32(%rdi)
1754a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1755a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesCase3)
1756a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm7, 48(%rdi)
1757a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STPCPY
1758a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	64(%rdi), %rax
1759a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1760a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRCAT
1761a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%ch, %ch
1762a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movb	%ch, 64(%rdi)
1763a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1764a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1765a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1766a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1767a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(Unaligned64LeaveCase2):
1768a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	xor	%rcx, %rcx
1769a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm4, %xmm0
1770a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
1771a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$48, %r8
1772a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jle	L(CopyFrom1To16BytesCase2OrCase3)
1773a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
1774a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
1775a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm4)
1776a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
1777a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
1778a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1779a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm5, %xmm0
1780a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
1781a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm4, (%rdi)
1782a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
1783a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1784a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
1785a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
1786a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
1787a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm5)
1788a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
1789a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
1790a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1791a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1792a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm6, %xmm0
1793a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
1794a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm5, 16(%rdi)
1795a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	add	$16, %rcx
1796a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	sub	$16, %r8
1797a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jbe	L(CopyFrom1To16BytesCase2OrCase3)
1798a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	test	%rdx, %rdx
1799a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
1800a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16BytesUnalignedXmm6)
1801a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
1802a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jnz	L(CopyFrom1To16Bytes)
1803a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1804a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1805a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pcmpeqb	%xmm7, %xmm0
1806a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	pmovmskb %xmm0, %rdx
1807a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	movdqu	%xmm6, 32(%rdi)
1808a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rdi, %rcx), %rdi
1809a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	lea	16(%rsi, %rcx), %rsi
1810a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	bsf	%rdx, %rdx
1811a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	cmp	%r8, %rdx
1812a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	jb	L(CopyFrom1To16BytesExit)
1813a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY (L(ExitStrncpyTable), %r8, 4)
1814a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1815a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1816a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(ExitZero):
1817a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
1818a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	mov	%rdi, %rax
1819a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1820a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	RETURN
1821a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1822a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1823a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik
1824a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifndef USE_AS_STRCAT
1825a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikEND (STRCPY)
1826a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#else
1827a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikEND (STRCAT)
1828a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1829a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1830a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.section .rodata
1831a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(ExitTable):
1832a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit1), L(ExitTable))
1833a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit2), L(ExitTable))
1834a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit3), L(ExitTable))
1835a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit4), L(ExitTable))
1836a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit5), L(ExitTable))
1837a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit6), L(ExitTable))
1838a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit7), L(ExitTable))
1839a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit8), L(ExitTable))
1840a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit9), L(ExitTable))
1841a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit10), L(ExitTable))
1842a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit11), L(ExitTable))
1843a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit12), L(ExitTable))
1844a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit13), L(ExitTable))
1845a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit14), L(ExitTable))
1846a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit15), L(ExitTable))
1847a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit16), L(ExitTable))
1848a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit17), L(ExitTable))
1849a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit18), L(ExitTable))
1850a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit19), L(ExitTable))
1851a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit20), L(ExitTable))
1852a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit21), L(ExitTable))
1853a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit22), L(ExitTable))
1854a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit23), L(ExitTable))
1855a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit24), L(ExitTable))
1856a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit25), L(ExitTable))
1857a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit26), L(ExitTable))
1858a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit27), L(ExitTable))
1859a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit28), L(ExitTable))
1860a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit29), L(ExitTable))
1861a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit30), L(ExitTable))
1862a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit31), L(ExitTable))
1863a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Exit32), L(ExitTable))
1864a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#ifdef USE_AS_STRNCPY
1865a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(ExitStrncpyTable):
1866a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit0), L(ExitStrncpyTable))
1867a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit1), L(ExitStrncpyTable))
1868a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit2), L(ExitStrncpyTable))
1869a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit3), L(ExitStrncpyTable))
1870a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit4), L(ExitStrncpyTable))
1871a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit5), L(ExitStrncpyTable))
1872a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit6), L(ExitStrncpyTable))
1873a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit7), L(ExitStrncpyTable))
1874a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit8), L(ExitStrncpyTable))
1875a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit9), L(ExitStrncpyTable))
1876a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit10), L(ExitStrncpyTable))
1877a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit11), L(ExitStrncpyTable))
1878a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit12), L(ExitStrncpyTable))
1879a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit13), L(ExitStrncpyTable))
1880a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit14), L(ExitStrncpyTable))
1881a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit15), L(ExitStrncpyTable))
1882a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit16), L(ExitStrncpyTable))
1883a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit17), L(ExitStrncpyTable))
1884a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit18), L(ExitStrncpyTable))
1885a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit19), L(ExitStrncpyTable))
1886a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit20), L(ExitStrncpyTable))
1887a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit21), L(ExitStrncpyTable))
1888a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit22), L(ExitStrncpyTable))
1889a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit23), L(ExitStrncpyTable))
1890a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit24), L(ExitStrncpyTable))
1891a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit25), L(ExitStrncpyTable))
1892a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit26), L(ExitStrncpyTable))
1893a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit27), L(ExitStrncpyTable))
1894a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit28), L(ExitStrncpyTable))
1895a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit29), L(ExitStrncpyTable))
1896a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit30), L(ExitStrncpyTable))
1897a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit31), L(ExitStrncpyTable))
1898a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit32), L(ExitStrncpyTable))
1899a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(StrncpyExit33), L(ExitStrncpyTable))
1900a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# ifndef USE_AS_STRCAT
1901a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.p2align 4
1902a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara RainchikL(FillTable):
1903a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill0), L(FillTable))
1904a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill1), L(FillTable))
1905a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill2), L(FillTable))
1906a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill3), L(FillTable))
1907a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill4), L(FillTable))
1908a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill5), L(FillTable))
1909a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill6), L(FillTable))
1910a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill7), L(FillTable))
1911a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill8), L(FillTable))
1912a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill9), L(FillTable))
1913a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill10), L(FillTable))
1914a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill11), L(FillTable))
1915a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill12), L(FillTable))
1916a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill13), L(FillTable))
1917a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill14), L(FillTable))
1918a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill15), L(FillTable))
1919a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik	.int	JMPTBL(L(Fill16), L(FillTable))
1920a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik# endif
1921a020a244ae0a185cd53905ec84093e5e6eb7d88cVarvara Rainchik#endif
1922