15a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/*
25a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikCopyright (c) 2014, Intel Corporation
35a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikAll rights reserved.
45a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
55a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikRedistribution and use in source and binary forms, with or without
65a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchikmodification, are permitted provided that the following conditions are met:
75a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
85a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * Redistributions of source code must retain the above copyright notice,
95a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * this list of conditions and the following disclaimer.
105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * Redistributions in binary form must reproduce the above copyright notice,
125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * this list of conditions and the following disclaimer in the documentation
135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * and/or other materials provided with the distribution.
145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * Neither the name of Intel Corporation nor the names of its contributors
165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * may be used to endorse or promote products derived from this software
175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    * without specific prior written permission.
185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
2315581383153c5da29befb7f5cdc30bc21e9da54bElliott HughesANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2415581383153c5da29befb7f5cdc30bc21e9da54bElliott Hughes(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik*/
305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef L
325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define L(label)	.L##label
335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_startproc
365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_startproc	.cfi_startproc
375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_endproc
405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_endproc	.cfi_endproc
415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_rel_offset
445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_restore
485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_restore(reg)	.cfi_restore reg
495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_adjust_cfa_offset
525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_remember_state
565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_remember_state	.cfi_remember_state
575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef cfi_restore_state
605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define cfi_restore_state	.cfi_restore_state
615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef ENTRY
645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define ENTRY(name)             \
655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.type name, @function;   \
665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.globl name;             \
675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4;              \
685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchikname:                            \
695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cfi_startproc
705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef END
735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define END(name)               \
745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cfi_endproc;             \
755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.size name, .-name
765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef MEMCMP
795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define MEMCMP	memcmp
805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define CFI_PUSH(REG)	\
835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cfi_adjust_cfa_offset (4);	\
845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cfi_rel_offset (REG, 0)
855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define CFI_POP(REG)	\
875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cfi_adjust_cfa_offset (-4);	\
885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cfi_restore (REG)
895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define PUSH(REG)	pushl REG; CFI_PUSH (REG)
915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define POP(REG)	popl REG; CFI_POP (REG)
925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define PARMS	4
945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define BLK1	PARMS
955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define BLK2	BLK1 + 4
965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define LEN	BLK2 + 4
975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#define RETURN	POP (%ebx); ret; CFI_PUSH (%ebx)
985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#if (defined SHARED || defined __PIC__)
1015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define JMPTBL(I, B)	I - B
1025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* Load an entry in a jump table into EBX and branch to it.  TABLE is a
1045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jump	table with relative offsets.  INDEX is a register contains the
1055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	index	into the jump table.   SCALE is the scale of INDEX. */
1065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)	\
1085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* We first load PC into EBX.  */	\
1095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	call	__x86.get_pc_thunk.bx;	\
1105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* Get the address of the jump table.  */	\
1115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	addl	$(TABLE - .), %ebx;	\
1125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* Get the entry and convert the relative offset to the	\
1135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	absolute	address.  */	\
1145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	addl	(%ebx,INDEX,SCALE), %ebx;	\
1155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* We loaded the jump table and adjuested EDX/ESI. Go.  */	\
1165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jmp	*%ebx
1175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
1185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define JMPTBL(I, B)	I
1195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* Load an entry in a jump table into EBX and branch to it.  TABLE is a
1215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jump	table with relative offsets.  INDEX is a register contains the
1225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	index	into the jump table.   SCALE is the scale of INDEX. */
1235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)	\
1245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jmp	*TABLE(,INDEX,SCALE)
1255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
1265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* Warning!
1295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik           wmemcmp has to use SIGNED comparison for elements.
1305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik           memcmp has to use UNSIGNED comparison for elemnts.
1315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik*/
1325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.section .text.sse4.2,"ax",@progbits
1345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikENTRY (MEMCMP)
1355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	BLK1(%esp), %eax
1365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	BLK2(%esp), %edx
1375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	LEN(%esp), %ecx
1385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifdef USE_AS_WMEMCMP
1405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	shl	$2, %ecx
1415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	test	%ecx, %ecx
1425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jz	L(return0)
1435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
1445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$1, %ecx
1455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jbe	L(less1bytes)
1465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
1475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm0, %xmm0
1495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$64, %ecx
1505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ja	L(64bytesormore)
1515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$8, %ecx
1525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
1545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	PUSH	(%ebx)
1555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jb	L(less8bytes)
1565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
1575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jb	L(less8bytes)
1585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	PUSH	(%ebx)
1595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
1605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %edx
1625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %eax
1635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %ecx, 4)
1645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
1665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
1675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(less8bytes):
1685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	(%eax), %bl
1695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	(%edx), %bl
1705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(nonzero)
1715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	1(%eax), %bl
1735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	1(%edx), %bl
1745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(nonzero)
1755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$2, %ecx
1775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jz	L(0bytes)
1785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	2(%eax), %bl
1805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	2(%edx), %bl
1815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(nonzero)
1825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$3, %ecx
1845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jz	L(0bytes)
1855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	3(%eax), %bl
1875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	3(%edx), %bl
1885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(nonzero)
1895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$4, %ecx
1915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jz	L(0bytes)
1925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	4(%eax), %bl
1945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	4(%edx), %bl
1955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(nonzero)
1965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
1975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$5, %ecx
1985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jz	L(0bytes)
1995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	5(%eax), %bl
2015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	5(%edx), %bl
2025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(nonzero)
2035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	$6, %ecx
2055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jz	L(0bytes)
2065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	6(%eax), %bl
2085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	6(%edx), %bl
2095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	je	L(0bytes)
2105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(nonzero):
2125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	POP	(%ebx)
2135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$1, %eax
2145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ja	L(above)
2155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	neg	%eax
2165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(above):
2175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	CFI_PUSH (%ebx)
2195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
2205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(0bytes):
2235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	POP	(%ebx)
2245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	xor	%eax, %eax
2255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifdef USE_AS_WMEMCMP
2285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* for wmemcmp, case N == 1 */
2305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(less8bytes):
2335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	(%eax), %ecx
2345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	(%edx), %ecx
2355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	je	L(return0)
2365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$1, %eax
2375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jg	L(find_diff_bigger)
2385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	neg	%eax
2395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(find_diff_bigger):
2435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(return0):
2475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	xor	%eax, %eax
2485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
2505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
2525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(less1bytes):
2545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jb	L(0bytesend)
2555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	(%eax), %eax
2565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	(%edx), %edx
2575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	sub	%edx, %eax
2585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(0bytesend):
2625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	xor	%eax, %eax
2635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
2645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
2655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
2665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(64bytesormore):
2675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	PUSH	(%ebx)
2685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	%ecx, %ebx
2695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$64, %ecx
2705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	sub	$64, %ebx
2715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(64bytesormore_loop):
2725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	(%eax), %xmm1
2735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	(%edx), %xmm2
2745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
2755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
2765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(find_16diff)
2775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	16(%eax), %xmm1
2795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	16(%edx), %xmm2
2805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
2815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
2825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(find_32diff)
2835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	32(%eax), %xmm1
2855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	32(%edx), %xmm2
2865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
2875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
2885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(find_48diff)
2895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
2905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	48(%eax), %xmm1
2915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	48(%edx), %xmm2
2925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
2935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
2945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(find_64diff)
2955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %eax
2965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %edx
2975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	sub	%ecx, %ebx
2985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jae	L(64bytesormore_loop)
2995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ebx, %ecx
3005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %edx
3015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %eax
3025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %ecx, 4)
3035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
3045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifdef USE_AS_WMEMCMP
3055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
3065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* Label needs only for table_64bytes filling */
3075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(unreal_case):
3085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik/* no code here */
3095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
3105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
3115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
3125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(find_16diff):
3135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	sub	$16, %ecx
3145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(find_32diff):
3155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	sub	$16, %ecx
3165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(find_48diff):
3175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	sub	$16, %ecx
3185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(find_64diff):
3195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %edx
3205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ecx, %eax
3215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
3225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
3235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
3245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(16bytes):
3255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-16(%eax), %ecx
3265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-16(%edx), %ebx
3275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(12bytes):
3305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%eax), %ecx
3315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%edx), %ebx
3325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(8bytes):
3355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%eax), %ecx
3365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%edx), %ebx
3375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(4bytes):
3405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%eax), %ecx
3415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%edx), %ebx
3425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
3445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
3465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
3475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
3485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(16bytes):
3495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-16(%eax), %ecx
3505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-16(%edx), %ecx
3515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(12bytes):
3535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%eax), %ecx
3545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-12(%edx), %ecx
3555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(8bytes):
3575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%eax), %ecx
3585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-8(%edx), %ecx
3595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(4bytes):
3615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%eax), %ecx
3625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-4(%edx), %ecx
3635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
3645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
3665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
3675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
3685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
3695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
3705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(49bytes):
3715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-49(%eax), %xmm1
3725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-49(%edx), %xmm2
3735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-49, %ebx
3745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
3755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
3765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
3775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(33bytes):
3785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-33(%eax), %xmm1
3795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-33(%edx), %xmm2
3805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-33, %ebx
3815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
3825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
3835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
3845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(17bytes):
3855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-17(%eax), %ecx
3865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-17(%edx), %ebx
3875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(13bytes):
3905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-13(%eax), %ecx
3915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-13(%edx), %ebx
3925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(9bytes):
3955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-9(%eax), %ecx
3965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-9(%edx), %ebx
3975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
3985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
3995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(5bytes):
4005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%eax), %ecx
4015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%edx), %ebx
4025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %ecx
4055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-1(%edx), %cl
4065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
4075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
4085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
4095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
4105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
4115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(50bytes):
4125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-50, %ebx
4135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-50(%eax), %xmm1
4145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-50(%edx), %xmm2
4155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
4165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
4175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
4185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(34bytes):
4195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-34, %ebx
4205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-34(%eax), %xmm1
4215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-34(%edx), %xmm2
4225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
4235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
4245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
4255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(18bytes):
4265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-18(%eax), %ecx
4275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-18(%edx), %ebx
4285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(14bytes):
4315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-14(%eax), %ecx
4325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-14(%edx), %ebx
4335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(10bytes):
4365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-10(%eax), %ecx
4375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-10(%edx), %ebx
4385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(6bytes):
4415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%eax), %ecx
4425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%edx), %ebx
4435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(2bytes):
4465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%eax), %ecx
4475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%edx), %ebx
4485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bl, %cl
4495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
4505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bh, %ch
4515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
4525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
4535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
4545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
4555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
4565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(51bytes):
4575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-51, %ebx
4585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-51(%eax), %xmm1
4595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-51(%edx), %xmm2
4605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
4615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
4625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
4635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(35bytes):
4645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-35, %ebx
4655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-35(%eax), %xmm1
4665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-35(%edx), %xmm2
4675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
4685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
4695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
4705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(19bytes):
4715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-19(%eax), %ecx
4725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-19(%edx), %ebx
4735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(15bytes):
4765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-15(%eax), %ecx
4775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-15(%edx), %ebx
4785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(11bytes):
4815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-11(%eax), %ecx
4825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-11(%edx), %ebx
4835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(7bytes):
4865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%eax), %ecx
4875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%edx), %ebx
4885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
4895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
4905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(3bytes):
4915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%eax), %ecx
4925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%edx), %ebx
4935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	%bl, %cl
4945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
4955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bx, %cx
4965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
4975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(1bytes):
4985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %eax
4995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	-1(%edx), %al
5005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
5015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
5025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
5035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
5045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
5055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(52bytes):
5065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-52(%eax), %xmm1
5075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-52(%edx), %xmm2
5085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-52, %ebx
5095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(36bytes):
5135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-36(%eax), %xmm1
5145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-36(%edx), %xmm2
5155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-36, %ebx
5165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(20bytes):
5205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-20(%eax), %xmm1
5215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-20(%edx), %xmm2
5225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-20, %ebx
5235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%eax), %ecx
5275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
5285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%edx), %ebx
5295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
5305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
5315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-4(%edx), %ecx
5325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
5335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
5345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
5355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
5365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
5375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
5385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
5395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(53bytes):
5405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-53(%eax), %xmm1
5415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-53(%edx), %xmm2
5425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-53, %ebx
5435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(37bytes):
5475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-37, %ebx
5485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-37(%eax), %xmm1
5495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-37(%edx), %xmm2
5505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(21bytes):
5545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-21, %ebx
5555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-21(%eax), %xmm1
5565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-21(%edx), %xmm2
5575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%eax), %ecx
5615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%edx), %ebx
5625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
5635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
5645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %ecx
5655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-1(%edx), %cl
5665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
5675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
5685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
5695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
5705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
5715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(54bytes):
5725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-54(%eax), %xmm1
5735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-54(%edx), %xmm2
5745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-54, %ebx
5755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(38bytes):
5795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-38, %ebx
5805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-38(%eax), %xmm1
5815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-38(%edx), %xmm2
5825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(22bytes):
5865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-22, %ebx
5875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-22(%eax), %xmm1
5885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-22(%edx), %xmm2
5895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
5905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
5915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
5925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
5935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%eax), %ecx
5945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%edx), %ebx
5955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
5965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
5975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%eax), %ecx
5985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%edx), %ebx
5995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bl, %cl
6005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
6015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bh, %ch
6025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
6035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
6045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
6055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
6065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
6075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(55bytes):
6085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-55(%eax), %xmm1
6095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-55(%edx), %xmm2
6105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-55, %ebx
6115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(39bytes):
6155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-39, %ebx
6165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-39(%eax), %xmm1
6175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-39(%edx), %xmm2
6185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(23bytes):
6225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-23, %ebx
6235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-23(%eax), %xmm1
6245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-23(%edx), %xmm2
6255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%eax), %ecx
6295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%edx), %ebx
6305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
6315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
6325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%eax), %ecx
6335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%edx), %ebx
6345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	%bl, %cl
6355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
6365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bx, %cx
6375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
6385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %eax
6395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	-1(%edx), %al
6405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
6415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
6425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
6435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
6445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
6455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(56bytes):
6465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-56(%eax), %xmm1
6475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-56(%edx), %xmm2
6485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-56, %ebx
6495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(40bytes):
6535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-40, %ebx
6545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-40(%eax), %xmm1
6555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-40(%edx), %xmm2
6565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(24bytes):
6605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-24, %ebx
6615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-24(%eax), %xmm1
6625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-24(%edx), %xmm2
6635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
6675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%eax), %ecx
6685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
6695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%edx), %ebx
6705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
6715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
6725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-8(%edx), %ecx
6735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
6745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
6755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
6765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%eax), %ecx
6775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
6785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%edx), %ebx
6795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
6805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
6815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-4(%edx), %ecx
6825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
6835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
6845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
6855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
6865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
6875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
6885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
6895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(57bytes):
6905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-57(%eax), %xmm1
6915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-57(%edx), %xmm2
6925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-57, %ebx
6935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
6945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
6955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
6965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(41bytes):
6975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-41, %ebx
6985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-41(%eax), %xmm1
6995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-41(%edx), %xmm2
7005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(25bytes):
7045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-25, %ebx
7055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-25(%eax), %xmm1
7065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-25(%edx), %xmm2
7075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-9(%eax), %ecx
7115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-9(%edx), %ebx
7125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
7135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
7145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%eax), %ecx
7155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%edx), %ebx
7165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
7175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
7185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %ecx
7195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-1(%edx), %cl
7205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
7215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
7225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
7235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
7245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
7255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(58bytes):
7265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-58(%eax), %xmm1
7275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-58(%edx), %xmm2
7285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-58, %ebx
7295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(42bytes):
7335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-42, %ebx
7345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-42(%eax), %xmm1
7355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-42(%edx), %xmm2
7365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(26bytes):
7405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-26, %ebx
7415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-26(%eax), %xmm1
7425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-26(%edx), %xmm2
7435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
7475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-10(%eax), %ecx
7485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-10(%edx), %ebx
7495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
7505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
7515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
7525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%eax), %ecx
7535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%edx), %ebx
7545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
7555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
7565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
7575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%eax), %ecx
7585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%edx), %ebx
7595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bl, %cl
7605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
7615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bh, %ch
7625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
7635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
7645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
7655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
7665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
7675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(59bytes):
7685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-59(%eax), %xmm1
7695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-59(%edx), %xmm2
7705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-59, %ebx
7715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(43bytes):
7755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-43, %ebx
7765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-43(%eax), %xmm1
7775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-43(%edx), %xmm2
7785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(27bytes):
7825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-27, %ebx
7835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-27(%eax), %xmm1
7845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-27(%edx), %xmm2
7855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
7865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
7875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
7885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-11(%eax), %ecx
7895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-11(%edx), %ebx
7905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
7915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
7925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%eax), %ecx
7935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%edx), %ebx
7945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
7955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
7965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%eax), %ecx
7975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%edx), %ebx
7985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	%bl, %cl
7995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
8005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bx, %cx
8015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
8025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %eax
8035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	-1(%edx), %al
8045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
8055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
8065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
8075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
8085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
8095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(60bytes):
8105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-60(%eax), %xmm1
8115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-60(%edx), %xmm2
8125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-60, %ebx
8135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
8145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
8155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
8165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(44bytes):
8175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-44, %ebx
8185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-44(%eax), %xmm1
8195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-44(%edx), %xmm2
8205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
8215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
8225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
8235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(28bytes):
8245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-28, %ebx
8255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-28(%eax), %xmm1
8265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-28(%edx), %xmm2
8275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
8285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
8295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
8305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%eax), %ecx
8325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
8335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%edx), %ebx
8345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
8355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
8365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-12(%edx), %ecx
8375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
8385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
8395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%eax), %ecx
8415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
8425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%edx), %ebx
8435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
8445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
8455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-8(%edx), %ecx
8465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
8475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
8485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%eax), %ecx
8505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
8515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%edx), %ebx
8525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
8535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
8545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-4(%edx), %ecx
8555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
8565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
8575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
8585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
8595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
8615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
8625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(61bytes):
8635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-61(%eax), %xmm1
8645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-61(%edx), %xmm2
8655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-61, %ebx
8665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
8675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
8685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
8695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(45bytes):
8705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-45, %ebx
8715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-45(%eax), %xmm1
8725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-45(%edx), %xmm2
8735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
8745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
8755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
8765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(29bytes):
8775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-29, %ebx
8785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-29(%eax), %xmm1
8795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-29(%edx), %xmm2
8805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
8815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
8825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
8835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-13(%eax), %ecx
8855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-13(%edx), %ebx
8865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
8875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
8885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-9(%eax), %ecx
8905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-9(%edx), %ebx
8915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
8925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
8935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
8945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%eax), %ecx
8955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-5(%edx), %ebx
8965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
8975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
8985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %ecx
8995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-1(%edx), %cl
9005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
9015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
9025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
9035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
9045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
9055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(62bytes):
9065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-62(%eax), %xmm1
9075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-62(%edx), %xmm2
9085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-62, %ebx
9095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
9105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
9115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
9125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(46bytes):
9135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-46, %ebx
9145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-46(%eax), %xmm1
9155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-46(%edx), %xmm2
9165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
9175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
9185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
9195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(30bytes):
9205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-30, %ebx
9215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-30(%eax), %xmm1
9225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-30(%edx), %xmm2
9235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
9245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
9255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
9265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-14(%eax), %ecx
9275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-14(%edx), %ebx
9285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
9295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
9305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-10(%eax), %ecx
9315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-10(%edx), %ebx
9325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
9335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
9345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%eax), %ecx
9355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-6(%edx), %ebx
9365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
9375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
9385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%eax), %ecx
9395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-2(%edx), %ebx
9405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bl, %cl
9415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
9425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bh, %ch
9435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
9445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
9455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
9465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
9475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
9485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(63bytes):
9495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-63(%eax), %xmm1
9505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-63(%edx), %xmm2
9515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-63, %ebx
9525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
9535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
9545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
9555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(47bytes):
9565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-47, %ebx
9575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-47(%eax), %xmm1
9585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-47(%edx), %xmm2
9595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
9605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
9615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
9625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(31bytes):
9635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-31, %ebx
9645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-31(%eax), %xmm1
9655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-31(%edx), %xmm2
9665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
9675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
9685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
9695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
9705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-15(%eax), %ecx
9715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-15(%edx), %ebx
9725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
9735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
9745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-11(%eax), %ecx
9755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-11(%edx), %ebx
9765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
9775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
9785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%eax), %ecx
9795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movl	-7(%edx), %ebx
9805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
9815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
9825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%eax), %ecx
9835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzwl	-3(%edx), %ebx
9845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	%bl, %cl
9855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
9865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bx, %cx
9875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
9885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movzbl	-1(%eax), %eax
9895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	-1(%edx), %al
9905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
9915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
9925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
9935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
9945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
9955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
9965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(64bytes):
9975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-64(%eax), %xmm1
9985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-64(%edx), %xmm2
9995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-64, %ebx
10005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
10015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
10025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
10035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(48bytes):
10045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-48(%eax), %xmm1
10055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-48(%edx), %xmm2
10065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-48, %ebx
10075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
10085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
10095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
10105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(32bytes):
10115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-32(%eax), %xmm1
10125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	movdqu	-32(%edx), %xmm2
10135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$-32, %ebx
10145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	pxor	%xmm1, %xmm2
10155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ptest	%xmm2, %xmm0
10165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jnc	L(less16bytes)
10175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-16(%eax), %ecx
10195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
10205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-16(%edx), %ebx
10215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
10235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-16(%edx), %ecx
10245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
10255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%eax), %ecx
10285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
10295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-12(%edx), %ebx
10305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
10325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-12(%edx), %ecx
10335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
10345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%eax), %ecx
10375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
10385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-8(%edx), %ebx
10395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
10415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-8(%edx), %ecx
10425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
10435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%eax), %ecx
10465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
10475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	-4(%edx), %ebx
10485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
10505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	-4(%edx), %ecx
10515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
10525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
10535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
10555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
10575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
10585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(less16bytes):
10595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ebx, %eax
10605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ebx, %edx
10615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	(%eax), %ecx
10635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	(%edx), %ebx
10645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	4(%eax), %ecx
10685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	4(%edx), %ebx
10695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	8(%eax), %ecx
10735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	8(%edx), %ebx
10745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	12(%eax), %ecx
10785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	12(%edx), %ebx
10795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%ebx, %ecx
10805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
10815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
10835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
10845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
10855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(less16bytes):
10865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ebx, %eax
10875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	add	%ebx, %edx
10885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	(%eax), %ecx
10905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	(%edx), %ecx
10915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	4(%eax), %ecx
10945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	4(%edx), %ecx
10955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
10965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
10975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	8(%eax), %ecx
10985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	8(%edx), %ecx
10995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
11005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
11015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	12(%eax), %ecx
11025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	12(%edx), %ecx
11035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
11045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$0, %eax
11055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(find_diff)
11065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	RETURN
11075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
11085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
11095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
11105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(find_diff):
11115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
11125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmpb	%bl, %cl
11135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
11145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bx, %cx
11155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
11165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	shr	$16,%ecx
11175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	shr	$16,%ebx
11185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bl, %cl
11195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jne	L(end)
11205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	cmp	%bx, %cx
11215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(end):
11225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	POP	(%ebx)
11235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$1, %eax
11245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ja	L(bigger)
11255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	neg	%eax
11265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(bigger):
11275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
11285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
11295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	POP	(%ebx)
11305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	mov	$1, %eax
11315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	jg	L(bigger)
11325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	neg	%eax
11335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
11345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
11355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 4
11365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(bigger):
11375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	ret
11385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
11395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikEND (MEMCMP)
11405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik
11415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.section .rodata.sse4.2,"a",@progbits
11425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.p2align 2
11435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.type	L(table_64bytes), @object
11445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#ifndef USE_AS_WMEMCMP
11455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(table_64bytes):
11465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(0bytes), L(table_64bytes))
11475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(1bytes), L(table_64bytes))
11485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(2bytes), L(table_64bytes))
11495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(3bytes), L(table_64bytes))
11505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(4bytes), L(table_64bytes))
11515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(5bytes), L(table_64bytes))
11525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(6bytes), L(table_64bytes))
11535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(7bytes), L(table_64bytes))
11545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(8bytes), L(table_64bytes))
11555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(9bytes), L(table_64bytes))
11565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(10bytes), L(table_64bytes))
11575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(11bytes), L(table_64bytes))
11585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(12bytes), L(table_64bytes))
11595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(13bytes), L(table_64bytes))
11605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(14bytes), L(table_64bytes))
11615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(15bytes), L(table_64bytes))
11625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(16bytes), L(table_64bytes))
11635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(17bytes), L(table_64bytes))
11645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(18bytes), L(table_64bytes))
11655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(19bytes), L(table_64bytes))
11665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(20bytes), L(table_64bytes))
11675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(21bytes), L(table_64bytes))
11685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(22bytes), L(table_64bytes))
11695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(23bytes), L(table_64bytes))
11705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(24bytes), L(table_64bytes))
11715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(25bytes), L(table_64bytes))
11725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(26bytes), L(table_64bytes))
11735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(27bytes), L(table_64bytes))
11745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(28bytes), L(table_64bytes))
11755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(29bytes), L(table_64bytes))
11765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(30bytes), L(table_64bytes))
11775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(31bytes), L(table_64bytes))
11785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(32bytes), L(table_64bytes))
11795a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(33bytes), L(table_64bytes))
11805a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(34bytes), L(table_64bytes))
11815a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(35bytes), L(table_64bytes))
11825a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(36bytes), L(table_64bytes))
11835a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(37bytes), L(table_64bytes))
11845a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(38bytes), L(table_64bytes))
11855a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(39bytes), L(table_64bytes))
11865a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(40bytes), L(table_64bytes))
11875a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(41bytes), L(table_64bytes))
11885a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(42bytes), L(table_64bytes))
11895a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(43bytes), L(table_64bytes))
11905a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(44bytes), L(table_64bytes))
11915a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(45bytes), L(table_64bytes))
11925a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(46bytes), L(table_64bytes))
11935a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(47bytes), L(table_64bytes))
11945a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(48bytes), L(table_64bytes))
11955a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(49bytes), L(table_64bytes))
11965a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(50bytes), L(table_64bytes))
11975a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(51bytes), L(table_64bytes))
11985a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(52bytes), L(table_64bytes))
11995a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(53bytes), L(table_64bytes))
12005a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(54bytes), L(table_64bytes))
12015a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(55bytes), L(table_64bytes))
12025a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(56bytes), L(table_64bytes))
12035a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(57bytes), L(table_64bytes))
12045a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(58bytes), L(table_64bytes))
12055a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(59bytes), L(table_64bytes))
12065a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(60bytes), L(table_64bytes))
12075a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(61bytes), L(table_64bytes))
12085a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(62bytes), L(table_64bytes))
12095a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(63bytes), L(table_64bytes))
12105a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(64bytes), L(table_64bytes))
12115a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#else
12125a92284167ffba6d45210ef6889fa7d255c15d4fVarvara RainchikL(table_64bytes):
12135a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(0bytes), L(table_64bytes))
12145a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12155a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12165a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12175a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(4bytes), L(table_64bytes))
12185a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12195a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12205a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12215a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(8bytes), L(table_64bytes))
12225a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12235a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12255a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(12bytes), L(table_64bytes))
12265a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12275a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12285a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12295a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(16bytes), L(table_64bytes))
12305a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12315a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12325a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12335a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(20bytes), L(table_64bytes))
12345a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12355a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12365a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12375a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(24bytes), L(table_64bytes))
12385a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12395a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12405a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12415a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(28bytes), L(table_64bytes))
12425a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12435a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12445a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12455a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(32bytes), L(table_64bytes))
12465a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12475a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12485a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12495a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(36bytes), L(table_64bytes))
12505a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12515a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12525a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12535a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(40bytes), L(table_64bytes))
12545a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12555a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12565a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12575a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(44bytes), L(table_64bytes))
12585a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12595a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12605a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12615a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(48bytes), L(table_64bytes))
12625a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12635a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12645a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12655a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(52bytes), L(table_64bytes))
12665a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12675a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12685a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12695a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(56bytes), L(table_64bytes))
12705a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12715a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12725a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12735a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(60bytes), L(table_64bytes))
12745a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12755a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12765a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(unreal_case), L(table_64bytes))
12775a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik	.int	JMPTBL (L(64bytes), L(table_64bytes))
12785a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik#endif
1279