#include <stdio.h>
void test( int i) {
do {
void * jump_table[ ] = {
&& branch_default, && branch_1,
&& branch_default, && branch_default,
&& branch_default, && branch_5,
&& branch_default, && branch_default,
&& branch_8, && branch_default
} ;
if ( i < 0 || i >= 10 )
goto branch_default;
goto * jump_table[ i] ;
branch_default:
break ;
branch_1:
break ;
branch_5:
break ;
branch_8:
break ;
} while ( 0 ) ;
}
int main( ) {
int i;
for ( i=- 1 ; i< 12 ; i++ ) {
test( i) ;
}
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgoKdm9pZCB0ZXN0KGludCBpKSB7CiAgICBwcmludGYoIiVkIGlzICIsIGkpOwogICAgZG8gewogICAgICAgIHZvaWQgKiBqdW1wX3RhYmxlW10gPSB7CiAgICAgICAgICAgICYmYnJhbmNoX2RlZmF1bHQsICYmYnJhbmNoXzEsCiAgICAgICAgICAgICYmYnJhbmNoX2RlZmF1bHQsICYmYnJhbmNoX2RlZmF1bHQsCiAgICAgICAgICAgICYmYnJhbmNoX2RlZmF1bHQsICYmYnJhbmNoXzUsCiAgICAgICAgICAgICYmYnJhbmNoX2RlZmF1bHQsICYmYnJhbmNoX2RlZmF1bHQsCiAgICAgICAgICAgICYmYnJhbmNoXzgsICYmYnJhbmNoX2RlZmF1bHQKICAgICAgICB9OwogICAgICAgIGlmIChpIDwgMCB8fCBpID49IDEwKQogICAgICAgICAgICBnb3RvIGJyYW5jaF9kZWZhdWx0OwogICAgICAgIGdvdG8gKmp1bXBfdGFibGVbaV07CiAgICBicmFuY2hfZGVmYXVsdDoKICAgICAgICBwcmludGYoImRlZmF1bHRcbiIpOwogICAgICAgIGJyZWFrOwogICAgYnJhbmNoXzE6CiAgICAgICAgcHJpbnRmKCJvbmUhXG4iKTsKICAgICAgICBicmVhazsKICAgIGJyYW5jaF81OgogICAgICAgIHByaW50ZigiZml2ZSFcbiIpOwogICAgICAgIGJyZWFrOwogICAgYnJhbmNoXzg6CiAgICAgICAgcHJpbnRmKCJlaWdodCFcbiIpOwogICAgICAgIGJyZWFrOwogICAgfSB3aGlsZSAoMCk7Cn0KCgppbnQgbWFpbigpIHsKICAgIGludCBpOwogICAgZm9yIChpPS0xOyBpPDEyOyBpKyspIHsKICAgICAgICB0ZXN0KGkpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=