func: void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id,void *ptr) memset ( id , 0 , sizeof ( ( * id ) ) ); id -> ptr = ptr; if ( sizeof ( id -> val ) >= sizeof ( id -> ptr ) )  id -> val = ( ( unsigned long ) ( id -> ptr ) ); const unsigned char * src = ( ( void * ) ( & id -> ptr ) ) ; unsigned char snum = ( sizeof ( id -> ptr ) ) ; while ( snum -- )  accum += ( ( * ( src ++ ) ) * hash_coeffs [ snum + dnum & 7 ] ); accum += dnum; * ( dest ++ ) = ( accum & 255 ); 