void fcrypt_body(DES_LONG *out, des_key_schedule ks, DES_LONG Eswap0,
	     DES_LONG Eswap1)
	{
	register DES_LONG l,r,t,u;
#ifdef DES_PTR
	register const unsigned char *des_SP=(const unsigned char *)des_SPtrans;
#endif
	register DES_LONG *s;
	register int j;
	register DES_LONG E0,E1;
	l=0;
	r=0;
	s=(DES_LONG *)ks;
	E0=Eswap0;
	E1=Eswap1;
	for (j=0; j<25; j++)
		{
#ifdef DES_UNROLL
		register int i;
		for (i=0; i<32; i+=8)
			{
			D_ENCRYPT(l,r,i+0);
			D_ENCRYPT(r,l,i+2);
			D_ENCRYPT(l,r,i+4);
			D_ENCRYPT(r,l,i+6);
			}
#else
		D_ENCRYPT(l,r, 0);
		D_ENCRYPT(r,l, 2);
		D_ENCRYPT(l,r, 4);
		D_ENCRYPT(r,l, 6);
		D_ENCRYPT(l,r, 8);
		D_ENCRYPT(r,l,10);
		D_ENCRYPT(l,r,12);
		D_ENCRYPT(r,l,14);
		D_ENCRYPT(l,r,16);
		D_ENCRYPT(r,l,18);
		D_ENCRYPT(l,r,20);
		D_ENCRYPT(r,l,22);
		D_ENCRYPT(l,r,24);
		D_ENCRYPT(r,l,26);
		D_ENCRYPT(l,r,28);
		D_ENCRYPT(r,l,30);
#endif
		t=l;
		l=r;
		r=t;
		}
	l=ROTATE(l,3)&0xffffffffL;
	r=ROTATE(r,3)&0xffffffffL;
	PERM_OP(l,r,t, 1,0x55555555L);
	PERM_OP(r,l,t, 8,0x00ff00ffL);
	PERM_OP(l,r,t, 2,0x33333333L);
	PERM_OP(r,l,t,16,0x0000ffffL);
	PERM_OP(l,r,t, 4,0x0f0f0f0fL);
	out[0]=r;
	out[1]=l;
	}
["char *des_fcrypt(const char *buf, const char *salt, char *ret)\n\t{\n\tunsigned int i,j,x,y;\n\tDES_LONG Eswap0,Eswap1;\n\tDES_LONG out[2],ll;\n\tdes_cblock key;\n\tdes_key_schedule ks;\n\tunsigned char bb[9];\n\tunsigned char *b=bb;\n\tunsigned char c,u;\n#ifndef CHARSET_EBCDIC\n\tx=ret[0]=((salt[0] == '\\0')?'A':salt[0]);\n\tEswap0=con_salt[x]<<2;\n\tx=ret[1]=((salt[1] == '\\0')?'A':salt[1]);\n\tEswap1=con_salt[x]<<6;\n#else\n\tx=ret[0]=((salt[0] == '\\0')?os_toascii['A']:salt[0]);\n\tEswap0=con_salt[x]<<2;\n\tx=ret[1]=((salt[1] == '\\0')?os_toascii['A']:salt[1]);\n\tEswap1=con_salt[x]<<6;\n#endif\n\tfor (i=0; i<8; i++)\n\t\t{\n\t\tc= *(buf++);\n\t\tif (!c) break;\n\t\tkey[i]=(c<<1);\n\t\t}\n\tfor (; i<8; i++)\n\t\tkey[i]=0;\n\tdes_set_key_unchecked(&key,ks);\n\tfcrypt_body(&(out[0]),ks,Eswap0,Eswap1);\n\tll=out[0]; l2c(ll,b);\n\tll=out[1]; l2c(ll,b);\n\ty=0;\n\tu=0x80;\n\tbb[8]=0;\n\tfor (i=2; i<13; i++)\n\t\t{\n\t\tc=0;\n\t\tfor (j=0; j<6; j++)\n\t\t\t{\n\t\t\tc<<=1;\n\t\t\tif (bb[y] & u) c|=1;\n\t\t\tu>>=1;\n\t\t\tif (!u)\n\t\t\t\t{\n\t\t\t\ty++;\n\t\t\t\tu=0x80;\n\t\t\t\t}\n\t\t\t}\n\t\tret[i]=cov_2char[c];\n\t\t}\n\tret[13]='\\0';\n\treturn(ret);\n\t}", 'void fcrypt_body(DES_LONG *out, des_key_schedule ks, DES_LONG Eswap0,\n\t     DES_LONG Eswap1)\n\t{\n\tregister DES_LONG l,r,t,u;\n#ifdef DES_PTR\n\tregister const unsigned char *des_SP=(const unsigned char *)des_SPtrans;\n#endif\n\tregister DES_LONG *s;\n\tregister int j;\n\tregister DES_LONG E0,E1;\n\tl=0;\n\tr=0;\n\ts=(DES_LONG *)ks;\n\tE0=Eswap0;\n\tE1=Eswap1;\n\tfor (j=0; j<25; j++)\n\t\t{\n#ifdef DES_UNROLL\n\t\tregister int i;\n\t\tfor (i=0; i<32; i+=8)\n\t\t\t{\n\t\t\tD_ENCRYPT(l,r,i+0);\n\t\t\tD_ENCRYPT(r,l,i+2);\n\t\t\tD_ENCRYPT(l,r,i+4);\n\t\t\tD_ENCRYPT(r,l,i+6);\n\t\t\t}\n#else\n\t\tD_ENCRYPT(l,r, 0);\n\t\tD_ENCRYPT(r,l, 2);\n\t\tD_ENCRYPT(l,r, 4);\n\t\tD_ENCRYPT(r,l, 6);\n\t\tD_ENCRYPT(l,r, 8);\n\t\tD_ENCRYPT(r,l,10);\n\t\tD_ENCRYPT(l,r,12);\n\t\tD_ENCRYPT(r,l,14);\n\t\tD_ENCRYPT(l,r,16);\n\t\tD_ENCRYPT(r,l,18);\n\t\tD_ENCRYPT(l,r,20);\n\t\tD_ENCRYPT(r,l,22);\n\t\tD_ENCRYPT(l,r,24);\n\t\tD_ENCRYPT(r,l,26);\n\t\tD_ENCRYPT(l,r,28);\n\t\tD_ENCRYPT(r,l,30);\n#endif\n\t\tt=l;\n\t\tl=r;\n\t\tr=t;\n\t\t}\n\tl=ROTATE(l,3)&0xffffffffL;\n\tr=ROTATE(r,3)&0xffffffffL;\n\tPERM_OP(l,r,t, 1,0x55555555L);\n\tPERM_OP(r,l,t, 8,0x00ff00ffL);\n\tPERM_OP(l,r,t, 2,0x33333333L);\n\tPERM_OP(r,l,t,16,0x0000ffffL);\n\tPERM_OP(l,r,t, 4,0x0f0f0f0fL);\n\tout[0]=r;\n\tout[1]=l;\n\t}']