int get_toc_lba(uch track) 
static int get_toc_lba(uch track) 
int get_toc_lba(uch track){	int max = 74 * 60 * 75 - 150, min = fsm2lba(cd->toc[1].fsm);	int i, lba, l, old_lba = 0;	uch *q = cd->q;	uch ct;			/* current track */	int binary = 0;	const int skip = 3 * 60 * 75;	/* 3 minutes */	for (i = track; i > 0; i--)		if (cd->toc[i].track) {			min = fsm2lba(cd->toc[i].fsm);			break;		}	lba = min + skip;	do {		seek(lba);		type_1_command(c_read_current_q, 10, q);		ct = normalize_track(q[1]);		if (!cd->toc[ct].track) {			l = q[9] - bcdbin(q[5]) + 75 * (q[8] -							bcdbin(q[4]) - 2 +							60 * (q[7] -							      bcdbin(q								     [3])));			cd->toc[ct].track = q[1];	/* lead out still 0xaa */			fsm(l, cd->toc[ct].fsm);			cd->toc[ct].q0 = q[0];	/* contains adr and ctrl info */			if (ct == track)				return l;		}		old_lba = lba;		if (binary) {			if (ct < track)				min = lba;			else				max = lba;			lba = (min + max) / 2;		} else {			if (ct < track)				lba += skip;			else {				binary = 1;				max = lba;				min = lba - skip;				lba = (min + max) / 2;			}		}	} while (lba != old_lba);	return lba;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8b3d4a2a3ef9488d4477e8823106abfd6039eb66/cm206.c/clean/drivers/cdrom/cm206.c