#include <stdlib.h>
#include <stdio.h>
#include <string.h>

unsigned int r0 = 0x519D1E51;
unsigned int r5 = 0x332718FA;
unsigned int r6 = 0xFFAB5709;

void c1(unsigned char ser)
{
	unsigned int ret = 0, r3 = 8, r1 = ser << 3, tmp = 0;
	unsigned int r2 =ser-1;
	
	while(r1 <= r0 && r1 <= 0x10000000)
	{
		r1 = r1 << 4;
		r3 = r3 << 4;
	}
	
	while(r1 <= r0 && r1 <= 0x80000000)
	{
		r1 = r1 << 1;
		r3 = r3 << 1;
	}
	
	r2=0;
	
	while(1==1)
	{
		if(r0 >= r1)
		{
			r0=r0-r1;
			r2=r2|r3;
		}
		if(r0 >= (r1 >> 1))
		{
			r0=r0-(r1 >> 1);
			r2=r2|(r3 >> 1);
		}
		if(r0 >= (r1 >> 2))
		{
			r0=r0-(r1 >> 2);
			r2=r2|(r3 >> 2);
		}	
		if(r0 >= (r1 >> 3))
		{
			r0=r0-(r1 >> 3);
			r2=r2|(r3 >> 3);
		}
		if(r0 == 0)
		break;
		r3=r3 >> 4;
		if(r3 == 0)
		break;
		r1=r1 >> 4;
	}
	r0=r2;

}



int main(int argc, char* argv[])
{

	int i;
	for(i=0;i<strlen(argv[1]);i++)
	{
		if(i!=0)
		r0=r0*r6;

		c1(argv[1][i]);

		r0=r0^r5;

	}
	if(r0==0x33E0D2F1)
	printf("password : %s\n",argv[1]);
}
