FUNC UINT findlabel(PBYTE labeltext)
{
//VAR PBYTE _labelN; //єърчрЄхы№ эр Єхъє∙є■ ЄрсышЎє ьхЄюъ
VAR PBYTE plabel; //ьхЄър т ЄрсышЎх чрърэўштрхЄё эєы╕ь
//VAR PBYTE pstr; //ьхЄър т ёЄЁюъх чрърэўштрхЄё TOK_ENDTEXT
//VAR BYTE cstr; //ёшьтюы шч ёЄЁюъш
//VAR BYTE clabel; //ёшьтюы шч ЄрсышЎ√ ьхЄюъ
//VAR UINT pnext_index; //рфЁхё ёыхфє■∙хщ ьхЄъш т ЄрсышЎх
//VAR UINT plabelqueuestart_index; //т (_labelN+plabelqueuestart_index) їЁрэшЄё рфЁхё эрўрыр Ўхяюўъш фы ьхЄъш
_hash = hash(labeltext)&0x3ff;
_labelN = _labels0; //_labelpage[(UINT)(_hashhigh&_LABELPAGEMASK)]; //set page (todo ъръ юяЁхфхышЄ№? ёшёЄхьэ√щ ьръЁюё?)
//plabelqueuestart_index = ((UINT)(_hash))<<1; //todo Ёрчэр ЁрчЁ фэюёЄ№ UINT
_plabel_index = _labelshift[_hash];
//todo ъръ ёфхырЄ№ эрсюЁ ьрёёштют т Ёрчэ√ї ёЄЁрэшўърї? ёфтшу шэфхъёр т юфэюь ьрёёштх тэшчє?
//_labelflag = 0x00; //"label not found"
WHILE (_plabel_index != _LABELPAGEEOF) { //яюър Ўхяюўър ьхЄюъ эх чръюэўшырё№
plabel = &_labelN[_plabel_index]; //(PBYTE)((POINTER)_labelN + (POINTER)_plabel_index);
_plabel_index = *(PUINT)(plabel);
plabel = &plabel[+sizeof(UINT)]; //(PBYTE)((POINTER)plabel + (POINTER)2);
IF (strcp((PCHAR)labeltext, (PCHAR)plabel)) { //ьхЄър эрщфхэр
//plabel = (PBYTE)((POINTER)plabel + (POINTER)_labellen); //тъы■ўр 0
//errstr("found label "); errstr(labeltext); enderr();
_plabel_index = (UINT)(plabel - _labelN) + _labellen; //тъы■ўр 0 //єърчрЄхы№ эр эрўрыю фрээ√ї ёючфртрхьющ ьхЄъш (эрфю юс чрЄхы№эю чряюьэшЄ№!)
//_labelflag = *(PBYTE)(plabel);
//_labelvalue = *(PLONG)((POINTER)plabel + (POINTER)1);
BREAK; //яюьэшЄ _plabel_index эрўрыр фрээ√ї эрщфхээющ ьхЄъш
};
//_plabel_index = pnext_index;
}; //хёыш эх эрщфхэю, Єю _plabel_index==_LABELPAGEEOF
RETURN _plabel_index;
}