Introspector/GccCpp/tree-dump.c/char class switch

If we look at the assembly the switch for the node class, we will see the following :

Block L5
L5: subl	$12, %esp	 #, leal	-56(%ebp), %eax	 #, tmp119 pushl	%eax	 # tmp119 call	TReftree_code_class::operator char	 # addl	$4, %esp	 #, movsbl	%al,%eax	 # tmp120, tmp121 pushl	%eax	 # tmp121 call	IS_EXPR_CODE_CLASS(char)	 # addl	$16, %esp	 #, testb	%al, %al	 # tmp122 je	L21	 #, subl	$8, %esp	 #, pushl	-24(%ebp)	 # t	pushl	8(%ebp)	 # di	call	queue_and_dump_type(dump_info*, tree_common*)	 # addl	$16, %esp	 #, subl	$12, %esp	 #, leal	-56(%ebp), %eax	 #, tmp132 pushl	%eax	 # tmp132

call	TReftree_code_class::operator char	 # addl	$16, %esp	 #, movb	%al, -257(%ebp)	 #,

cmpb	$101, -257(%ebp)	 #, "e" je	L32	 #, Jump to if we are equal to a "e"

cmpb	$101, -257(%ebp)	 #, jg	L30	 #, Jump to if we are greater than a "e"

cmpb	$50, -257(%ebp)	 #, je	L25	 #, Jump to block if we are equal to a "2"

cmpb	$50, -257(%ebp)	 #, // 2 jg	L31	 #, Jump to block if we are greater than a "2"

cmpb	$49, -257(%ebp)	 #, // '1' je	L23	 #, // case '1' jmp	L29	 # Jump to block if we have a "1"

Block L31
L31: cmpb	$60, -257(%ebp)	 #, je	L25	 #, jmp	L29	 # Jump to if we have a "<" else jump to

Block L30
L30: movb	-257(%ebp), %al	 #, tmp134 subl	$114, %eax	 #, tmp134 cmpb	$1, %al	 #, tmp134 ja	L29	 #, jmp	L32	 #\

Subtract "r" from the eax Jump to Jump Above

Jump to if we are equal to a "e"