.sect .text; .sect .rom; .sect .data; .sect .bss
.define .csb8

.sect .text
.csb8:
		! ebx, descriptor address
		! edx:eax, index

	push	esi
	push	edi
	push	(ebx)		! default
	mov	ecx,4(ebx)	! entry count (assuming < 2**32)
1:
	add	ebx,12
	dec	ecx
	jl	4f
	mov	esi,0(ebx)
	mov	edi,4(ebx)	! descriptor's index
	sub	esi,eax
	sbb	edi,edx
	or	esi,edi
	jne	1b
	pop	edx		! drop default
	mov	ebx,8(ebx)
2:
	pop	edi
	pop	esi
	test	ebx,ebx
	jnz	3f
.extern ECASE
.extern .fat
	mov	eax,ECASE
	push	eax
	jmp	.fat
3:
	jmp	ebx
4:
	pop	ebx		! default
	jmp	2b