#include #include SEC( text, B ) UINT_PTR HashString( LPVOID String, UINT_PTR Length ) { ULONG Hash = 5381; PUCHAR Ptr = String; do { UCHAR character = *Ptr; if ( ! Length ) { if ( !*Ptr ) break; } else { if ( (ULONG) ( Ptr - (PUCHAR)String ) >= Length ) break; if ( !*Ptr ) ++Ptr; } if ( character >= 'a' ) character -= 0x20; Hash = ( ( Hash << 5 ) + Hash ) + character; ++Ptr; } while ( TRUE ); return Hash; }