#define\
                         P    /**/typedef
                       /**/P        unsigned
                      int D              ;D i,
                     j  ,                  r[5]                      ;
                     # /*                   (:*/           include<stdio.h>
                    ; P                    unsigned   char B;B f[8     ];  ;
                   # /*                 ,*/define A D  *v,D*w,D*x,D*y,  D*  z
                   # define F(  i)(o->l[      i&15  ]=L(o->l[(i+13)&15]^o-> \
                l[( i+ 8)&15]^o->l[(i+2)&      15]^o->l[i&15],1))+E/**/void
             #/*  ! */       define/**/E/**/    L(*v,5);*w=L(          *w,30);}
           ;D  L( D u       ,D v){return(((u)<<v)|((u)>>(32-v)));}D k,s[5],d[2];
         /* @/    # %   ,}*/       #define G(i) (o->l[i]=(0xff00ff00      &L(o->l\
       [i  ]      , 24))       |(L(o->l [i],8)&0x00ff00ff))+0x5a827999+E   /**/void
      ;B a[       + 1       <<15     ],b[64];P union{B c[64      ];D l[16];  }C;C*o
     /* */       ;; P    void    Q;Q V(A   ){*z+=(((*w)&((*x)^(*y )))^(*y))+   G(k)W
    (A )          {*z+=(((*    w)&       ((*     x)^(*y)))^(*y))+0x5a827999+F(    k)X
    (A){           *z+=((*   w)^(      *x)          ^(*y))+/*^x*/    0x6ed9eba1    +F
   (k)Y             (A){*  z+=(      (((      *      w)|(*x))&(*y))|      (*  w&    *x
  )) +              0x8f1bbcdc     +F(       k)       Z(A){*  z+=0xca62c1d6+(  *w    ^*
  x^*                y)+F(k)     (*R        )(         A); Q T  (B e[64    ]){  o=    (C
 *)e                 ;for(     k=0         ;k<          5;k ++)   r[k]=s    [k]  ;;   for
 (k=                 0;k<+   80;k++       ){R            =k   <40  ?k<20?   k<16  ?V    :
W:X                  :k   <60?Y:  Z;R(    &r[             ((   80-  k))%5   ],&r  [((   81
-k)                  )    %5],&       r   [                ((   82-  k))%   5],&  r[(   83
-k)                %5   ],&r[(  (84-k                       ))   %5]  );}   for  (k=0;   k
<5;               k    ++)s[k]     +=r           [k];}Q      U(   B*e ,D u  ){j =((d[0   ]
)>>              3    )&63;if(   (d[0]               +=u<<    3)   <(  u<<  3) )d[1]++  ;d
 [1             ]    +=(u>>29)   ;if(               (j   +u)>  +    63 ){; memmove(&b[  j]
 ,e,           i    =64- j);for   (T(             b); 63+   i<  u    ;i+=+ 64)T((B*)&e  [i
   ])         ;j   = 0;} else                         {i=00     ;}    memmove(&b[j],&   e
    [i        ]   ,u -i );;}Q                       main(int    uu,    char**v){FILE*  e;
             if  (+ 1<uu&&(e=                       fopen(      v[1    ],"rb"))){s[d  [0
             ]   =  d[1]=0]/*                          amg     #!*/=    0x67452301;  s[
            1]  =(  137  )|(/*                                SHA1*/    0xefcdab<<  8)
            ;  s[   2]   = 00+                             0x98badcfe   ;s[3]  =0  |(
            21622   )   |( 4146                            <<16 );for   (s[   4] =0|
            57840  |(   +  50130      <<16                 );!  feof(e  );  U(a,k)
            ){k=   1   <<  14  ;{                        ;}k=   fread(  a,1,k,e);
            }for  (k   =0 ;k    <8                      ;k++   )f   [k  ]=(B
            )((d  [   (k  >=      4?                  0: 1)   ]>>   ((  3-
            (k&   3   ))  *8       ))&(           255)  );   for    (U  ((
            /*|   #   */  B            *)"\x80",1);(  d[    0]&     (8  *
            63)   )   !=  0                     +(  448    );U      ((  B
             *    /*  */  )                   "\0  ",1   ));U       (f ,8
             )     ;  {;  }                 for  (k=    0;k<        20 ;
                   k  ++  )               a[k   ]=(B   )((s        [k>>
                    +  2  ]            >>((  3-(k    &3))*         8))&
                    (  /* */          255   ));;    for(          i=0;
                     i  <  +        20;   i+=4    )/*$%          |*/
                     /* AP  !     03/   18/01   2001!          ^^;;
                      bell. c    //    +IK!   v^_^v           SY!
                       dandy C TW!   LL!=   %02x"          **E!
                        "%02x !*/  printf(/**/ "%"    "02x%"
                          "02x%"  "02x%02x"      "\40",a
                           [i],a[i+1],a[
                           i+2],a[i+3]
                          );  ;putchar
                         /* @fips 180*/(10);fclose
                        /* sha1         ~\=/'
                        >>md5
                       ,:?/
                      ,*/
                     (e)
                    ;}
                    }