getValueByKey(...) { if(!contentOffset) return 0; while(1) { if(...) { } else if(...) { ... if(...) continue; // NEXT_KEY_PART else return ...; ... } else if(contentCellType <= MAX_BLOCK_TYPE) { if(getValueInBlock(...)) return 0; else continue; // NEXT_KEY_PART } else if(...) { ... if(...) continue; // NEXT_KEY_PART else return ...; .. } else { } } } getValueInBlock(...) { while(1) { if(...) return 0; else if(...) return 1; // NEXT_KEY_PART else if(...) return 1; // NEXT_KEY_PART else if(...) continue; // NEXT_BLOCK else return 0; } }