|  | @@ -48,12 +48,15 @@ char * strncpy(char * dest, const char * src, size_t count)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      int d0, d1, d2, d3;
 | 
	
		
			
				|  |  |      __asm__ __volatile__(
 | 
	
		
			
				|  |  | -	    "1:\tdecl %2\n\t"
 | 
	
		
			
				|  |  | -	    "js 2f\n\t"
 | 
	
		
			
				|  |  | +	    "incl %2\n"
 | 
	
		
			
				|  |  | +	    "1:\n"
 | 
	
		
			
				|  |  | +	    "decl %2\n"
 | 
	
		
			
				|  |  | +	    "jz 2f\n"
 | 
	
		
			
				|  |  |  	    "lodsb\n\t"
 | 
	
		
			
				|  |  |  	    "stosb\n\t"
 | 
	
		
			
				|  |  |  	    "testb %%al,%%al\n\t"
 | 
	
		
			
				|  |  |  	    "jne 1b\n\t"
 | 
	
		
			
				|  |  | +	    "decl %2\n"
 | 
	
		
			
				|  |  |  	    "rep\n\t"
 | 
	
		
			
				|  |  |  	    "stosb\n"
 | 
	
		
			
				|  |  |  	    "2:"
 | 
	
	
		
			
				|  | @@ -93,14 +96,17 @@ char *strncat(char * dest,
 | 
	
		
			
				|  |  |  	    "scasb\n\t"
 | 
	
		
			
				|  |  |  	    "decl %1\n\t"
 | 
	
		
			
				|  |  |  	    "movl %8,%3\n"
 | 
	
		
			
				|  |  | +	    "incl %3\n"
 | 
	
		
			
				|  |  |  	    "1:\tdecl %3\n\t"
 | 
	
		
			
				|  |  | -	    "js 2f\n\t"
 | 
	
		
			
				|  |  | +	    "jz 2f\n"
 | 
	
		
			
				|  |  |  	    "lodsb\n\t"
 | 
	
		
			
				|  |  |  	    "stosb\n\t"
 | 
	
		
			
				|  |  |  	    "testb %%al,%%al\n\t"
 | 
	
		
			
				|  |  |  	    "jne 1b\n"
 | 
	
		
			
				|  |  | +	    "jmp 3f\n"
 | 
	
		
			
				|  |  |  	    "2:\txorl %2,%2\n\t"
 | 
	
		
			
				|  |  | -	    "stosb"
 | 
	
		
			
				|  |  | +	    "stosb\n"
 | 
	
		
			
				|  |  | +	    "3:"
 | 
	
		
			
				|  |  |  	    : "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
 | 
	
		
			
				|  |  |  	    : "0" (src),"1" (dest),"2" (0),"3" (0xffffffff), "g" (count)
 | 
	
		
			
				|  |  |  	    : "memory");
 | 
	
	
		
			
				|  | @@ -141,8 +147,9 @@ int strncmp(const char *cs, const char *ct, size_t count)
 | 
	
		
			
				|  |  |      register int __res;
 | 
	
		
			
				|  |  |      int d0, d1, d2;
 | 
	
		
			
				|  |  |      __asm__ __volatile__(
 | 
	
		
			
				|  |  | +	    "incl %3\n"
 | 
	
		
			
				|  |  |  	    "1:\tdecl %3\n\t"
 | 
	
		
			
				|  |  | -	    "js 2f\n\t"
 | 
	
		
			
				|  |  | +	    "jz 2f\n"
 | 
	
		
			
				|  |  |  	    "lodsb\n\t"
 | 
	
		
			
				|  |  |  	    "scasb\n\t"
 | 
	
		
			
				|  |  |  	    "jne 3f\n\t"
 | 
	
	
		
			
				|  | @@ -226,12 +233,12 @@ size_t strnlen(const char *s, size_t count)
 | 
	
		
			
				|  |  |      register int __res;
 | 
	
		
			
				|  |  |      __asm__ __volatile__(
 | 
	
		
			
				|  |  |  	    "movl %2,%0\n\t"
 | 
	
		
			
				|  |  | +	    "incl %1\n"
 | 
	
		
			
				|  |  |  	    "jmp 2f\n"
 | 
	
		
			
				|  |  |  	    "1:\tcmpb $0,(%0)\n\t"
 | 
	
		
			
				|  |  |  	    "je 3f\n\t"
 | 
	
		
			
				|  |  |  	    "incl %0\n"
 | 
	
		
			
				|  |  |  	    "2:\tdecl %1\n\t"
 | 
	
		
			
				|  |  | -	    "cmpl $-1,%1\n\t"
 | 
	
		
			
				|  |  |  	    "jne 1b\n"
 | 
	
		
			
				|  |  |  	    "3:\tsubl %2,%0"
 | 
	
		
			
				|  |  |  	    :"=a" (__res), "=&d" (d0)
 |