/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "compile_to_jvm.h"
int r388is_a_in(T388* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((r388written_mark())==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
_t1=r388to_runnable(C,_ct);
_t2=X291to_runnable(a1,_ct);
/*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
R=1;
}
else {
R=X291is_a(_t1,_t2);
}
/*FI*/}
/*FI*/return R;
}
T0* r388look_up_for(T388* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r388base_class(C))),a1,a2);
return R;
}
int r388jvm_convert_to(T0* a1){
int R=0;
/*IF*/if (X291is_reference(a1)) {
/*[IRF3.2jvm_to_reference*/{T0* _ca=NULL;
int _idx=0;
T0* _rc=NULL;
_ca=oBC364code_attribute;
_rc=r657run_class(((T657*)(r388type_double_ref())));
_idx=r355fully_qualified_constant_pool_index(((T355*)_rc));
r256opcode_new(((T256*)_ca),_idx);
/*[IRF3.4opcode_dup_x2*/r256opcode(((T256*)_ca),91,1);
/*]*/
/*[IRF3.4opcode_dup_x2*/r256opcode(((T256*)_ca),91,1);
/*]*/
/*[IRF3.4opcode_pop*/r256opcode(((T256*)_ca),87,-(1));
/*]*/
_idx=r95idx_fieldref4(((T95*)(oBC364constant_pool)),_idx,((T0*)ms86_473),((T0*)ms203_470));
r256opcode_putfield(((T256*)_ca),_idx,-(3));
}/*]*/
R=1;
}
else {
R=2;
}
/*FI*/return R;
}
/*No:TYPE_DOUBLE.expanded_initializer*/
/*No:TYPE_DOUBLE.us_double*/
int r388jvm_if_x_ne(void){
int R=0;
T0* _ca=NULL;
_ca=oBC364code_attribute;
/*[IRF3.4opcode_dcmpg*/r256opcode(((T256*)_ca),152,-(3));
/*]*/
R=r256opcode_ifne(((T256*)_ca));
return R;
}
/*No:TYPE_DOUBLE.fz_dot*/
/*No:TYPE_DOUBLE.is_generic*/
/*No:TYPE_DOUBLE.fz_77*/
/*No:TYPE_DOUBLE.jvm_write_local*/
void r388jvm_initialize_local(int a1){
/*[IRF3.4opcode_dconst_0*/r256opcode(((T256*)(oBC364code_attribute)),14,2);
/*]*/
/*[IRF3.6jvm_write_local*/{int b1=a1;
r256opcode_dstore(((T256*)(oBC364code_attribute)),b1);
}/*]*/
}
int fBC388used_as_reference=0;
void r388used_as_reference(void){
if (fBC388used_as_reference==0){
fBC388used_as_reference=1;
r388load_ref(((T0*)ms12_473));
}}
int fBC364type_double_ref=0;
T0*oBC364type_double_ref=NULL;
T0* r388type_double_ref(void){
if (fBC364type_double_ref==0){
T0* R=NULL;
T0* _double_ref=NULL;
fBC364type_double_ref=1;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms12_473),NULL);
_double_ref=(T0*)n;
}
{T657*n=malloc(sizeof(*n));
*n=M657;
/*[IRF3.3make*/((((T657*)(n)))->_base_class_name)=(_double_ref);
/*]*/
R=(T0*)n;
}
oBC364type_double_ref=R;}
return oBC364type_double_ref;}
/*No:TYPE_DOUBLE.is_reference*/
void r388error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r388base_class(T388* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(((T388*)C))->_base_class_name/*4*/;
/*IF*/if ((_bcn)!=((void*)(NULL))) {
R=r451base_class(((T451*)_bcn));
}
else {
/*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type((T0*)C,((T0*)ms67_470));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/return R;
}
/*No:TYPE_DOUBLE.jvm_xastore*/
/*No:TYPE_DOUBLE.is_any*/
/*No:TYPE_DOUBLE.jvm_method_flags*/
/*No:TYPE_DOUBLE.base_class_name*/
/*No:TYPE_DOUBLE.jvm_push_local*/
/*No:TYPE_DOUBLE.is_expanded*/
/*No:TYPE_DOUBLE.is_basic_eiffel_expanded*/
/*No:TYPE_DOUBLE.is_none*/
/*No:TYPE_DOUBLE.is_integer*/
/*No:TYPE_POINTER.id*/
/*No:TYPE_POINTER.jvm_target_descriptor_in*/
/*No:TYPE_POINTER.jvm_if_x_eq*/
int r900has_creation(T900* C,T0* a1){
int R=0;
r683add_position(X776start_position(a1));
r900error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T900*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms1_84));
return R;
}
/*No:TYPE_POINTER.is_anchored*/
/*No:TYPE_POINTER.is_array*/
int r900is_a(T900* C,T0* a1){
int R=0;
/*IF*/if (X291is_pointer(a1)) {
R=1;
}
else {
R=r605is_subclass_of(((T605*)(r900base_class(C))),X291base_class(a1));
/*IF*/if (R) {
r900used_as_reference();
}
/*FI*/}
/*FI*//*IF*/if (!(R)) {
r683add_type((T0*)C,((T0*)ms1_900));
r683add_type(a1,((T0*)ms67_470));
}
/*FI*/return R;
}
/*No:TYPE_POINTER.jvm_to_reference*/
/*No:TYPE_POINTER.run_type*/
/*No:TYPE_POINTER.is_pointer*/
/*No:TYPE_POINTER.is_dummy_expanded*/
int r900jvm_push_default(void){
int R=0;
/*[IRF3.4opcode_aconst_null*/r256opcode(((T256*)(oBC364code_attribute)),1,1);
/*]*/
R=1;
return R;
}
/*No:TYPE_POINTER.is_string*/
/*No:TYPE_POINTER.is_like_feature*/
/*No:TYPE_POINTER.is_like_current*/
void r900make(T900* C,T0* a1){
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms21_473),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_POINTER.nb_errors*/
/*No:TYPE_POINTER.us_item*/
void r900load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r605run_class(((T605*)(r451base_class(((T451*)_cn)))));
r355set_at_run_time(((T355*)_rc));
_rf=r355get_feature_with(((T355*)_rc),((T0*)ms86_473));
}
/*No:TYPE_POINTER.us_pointer*/
/*No:TYPE_POINTER.jvm_return_code*/
int fBC900check_type=0;
void r900check_type(T900* C){
if (fBC900check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC900check_type=1;
_bc=r900base_class(C);
/*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_rc=r900run_class(C);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (!((((T605*)((T605*)_bc)))->_is_expanded/*20*/)) {
r900error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T900*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms3_900));
}
/*FI*/}
/*FI*/}}
int fBC364type_pointer_ref=0;
T0*oBC364type_pointer_ref=NULL;
T0* r900type_pointer_ref(void){
if (fBC364type_pointer_ref==0){
T0* R=NULL;
T0* _pointer_ref=NULL;
fBC364type_pointer_ref=1;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms22_473),NULL);
_pointer_ref=(T0*)n;
}
{T657*n=malloc(sizeof(*n));
*n=M657;
/*[IRF3.3make*/((((T657*)(n)))->_base_class_name)=(_pointer_ref);
/*]*/
R=(T0*)n;
}
oBC364type_pointer_ref=R;}
return oBC364type_pointer_ref;}
/*No:TYPE_POINTER.jvm_xnewarray*/
/*No:TYPE_POINTER.jvm_descriptor_in*/
/*No:TYPE_POINTER.start_position*/
/*No:TYPE_POINTER.is_user_expanded*/
/*No:TYPE_POINTER.is_character*/
T0* r900written_mark(void){
T0* R=NULL;
R=((T0*)ms21_473);
return R;
}
/*No:TYPE_POINTER.is_run_type*/
T0* r900to_runnable(T900* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r900check_type(C);
return R;
}
/*No:TYPE_POINTER.is_formal_generic*/
T0* r900generic_list(T900* C){
T0* R=NULL;
r900fatal_error_generic_list(C);
return R;
}
/*No:TYPE_POINTER.fz_21*/
/*No:TYPE_POINTER.is_real*/
/*No:TYPE_POINTER.us_pointer_ref*/
/*No:TYPE_POINTER.is_bit*/
void r900fatal_error_generic_list(T900* C){
r683add_type((T0*)C,((T0*)ms12_291));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:TYPE_POINTER.jvm_check_class_invariant*/
/*No:TYPE_POINTER.jvm_xaload*/
T0* r900smallest_ancestor(T900* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X291run_type(a1);
/*IF*/if (X291is_pointer(_rto)) {
R=(T0*)C;
}
else {
R=r657smallest_ancestor(((T657*)(r900type_pointer_ref())),_rto);
}
/*FI*/return R;
}
/*No:TYPE_POINTER.is_boolean*/
/*No:TYPE_POINTER.is_double*/
int r900jvm_stack_space(void){
int R=0;
/*IF*//*AF*//*AE*/
R=1;
/*FI*/return R;
}
T0* r900run_class(T900* C){
T0* R=NULL;
R=r604run_class((T0*)C);
return R;
}
T0* r900run_time_mark(void){
T0* R=NULL;
R=((T0*)ms21_473);
return R;
}
int r900is_a_in(T900* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((r900written_mark())==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
_t1=r900to_runnable(C,_ct);
_t2=X291to_runnable(a1,_ct);
/*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
R=1;
}
else {
R=X291is_a(_t1,_t2);
}
/*FI*/}
/*FI*/return R;
}
T0* r900look_up_for(T900* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r900base_class(C))),a1,a2);
return R;
}
int r900jvm_convert_to(T0* a1){
int R=0;
/*IF*/if (X291is_reference(a1)) {
/*[IRF3.2jvm_to_reference*/{T0* _ca=NULL;
int _idx=0;
T0* _rc=NULL;
_ca=oBC364code_attribute;
_rc=r657run_class(((T657*)(r900type_pointer_ref())));
_idx=r355fully_qualified_constant_pool_index(((T355*)_rc));
r256opcode_new(((T256*)_ca),_idx);
/*[IRF3.4opcode_dup_x1*/r256opcode(((T256*)_ca),90,1);
/*]*/
/*[IRF3.4opcode_swap*/r256opcode(((T256*)_ca),95,0);
/*]*/
_idx=r95idx_fieldref4(((T95*)(oBC364constant_pool)),_idx,((T0*)ms86_473),((T0*)ms154_470));
r256opcode_putfield(((T256*)_ca),_idx,-(2));
}/*]*/
}
/*FI*/R=1;
return R;
}
/*No:TYPE_POINTER.expanded_initializer*/
/*No:TYPE_POINTER.jvm_if_x_ne*/
/*No:TYPE_POINTER.fz_dot*/
/*No:TYPE_POINTER.is_generic*/
/*No:TYPE_POINTER.jvm_write_local*/
void r900jvm_initialize_local(int a1){
/*[IRF3.4opcode_aconst_null*/r256opcode(((T256*)(oBC364code_attribute)),1,1);
/*]*/
/*[IRF3.6jvm_write_local*/{int b1=a1;
r256opcode_astore(((T256*)(oBC364code_attribute)),b1);
}/*]*/
}
int fBC900used_as_reference=0;
void r900used_as_reference(void){
if (fBC900used_as_reference==0){
fBC900used_as_reference=1;
r900load_ref(((T0*)ms22_473));
}}
/*No:TYPE_POINTER.is_reference*/
void r900error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r900base_class(T900* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(((T900*)C))->_base_class_name/*4*/;
/*IF*/if ((_bcn)!=((void*)(NULL))) {
R=r451base_class(((T451*)_bcn));
}
else {
/*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type((T0*)C,((T0*)ms67_470));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/return R;
}
/*No:TYPE_POINTER.jvm_xastore*/
/*No:TYPE_POINTER.is_any*/
/*No:TYPE_POINTER.jvm_method_flags*/
/*No:TYPE_POINTER.base_class_name*/
/*No:TYPE_POINTER.jvm_push_local*/
/*No:TYPE_POINTER.is_expanded*/
/*No:TYPE_POINTER.is_basic_eiffel_expanded*/
/*No:TYPE_POINTER.is_none*/
/*No:TYPE_POINTER.is_integer*/
/*No:E_WHEN.when_list*/
void r843add_when_item_1(T843* C,T0* a1){
int _v=0;
_v=(((T349*)((T349*)a1)))->_expression_value/*12*/;
/*IF*/if (/*(IRF4.6includes*/r377includes_integer(((T377*)((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_when_list/*16*/)),_v)/*)*/) {
r843err_occ(C,_v,r349start_position(((T349*)a1)));
}
 else if (((((T843*)C))->_values/*20*/)==((void*)(NULL))) {
{T353*n=malloc(sizeof(*n));
*n=M353;
r353make(n,_v,_v);
C->_values=(T0*)n;
}
/*[IRF3.6put*/{T353* C1=((T353*)((((T843*)C))->_values/*20*/));
int b1=1;
int b2=_v;
((((T353*)C1))->_storage/*0*/)[(b2)-((((T353*)C1))->_lower/*12*/)]=(b1);
}/*]*/
}
else {
r353force(((T353*)((((T843*)C))->_values/*20*/)),1,_v);
}
/*FI*/}
T0* r843to_runnable_integer(T843* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
int _i=0;
int _ne=0;
/*IF*/if (((((T843*)C))->_when_list/*16*/)==((void*)(NULL))) {
_ne=/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/;
C->_when_list=a1;
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
r683add_position((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_start_position/*8*/);
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms12_843));
}
else {
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!(((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))||(((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)-(_ne))>(0)))) {
_when_item=X274to_runnable_integer(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)),(T0*)C);
/*IF*/if ((_when_item)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
else {
/*X631*//*[IRF3.6put*/{T247* C1=((T247*)((((T843*)C))->_list/*4*/));
T0* b1=_when_item;
int b2=_i;
((((T247*)C1))->_storage/*4*/)[(b2)-((((T247*)C1))->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*//*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
C->_compound=r592to_runnable(((T592*)((((T843*)C))->_compound/*12*/)),/*(IRF4.6current_type*//*(IRF4.6current_type*/r270current_type(((T270*)((((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*/)))/*)*//*)*/);
/*IF*/if (((((T843*)C))->_compound/*12*/)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
/*FI*/}
/*FI*/R=(T0*)C;
}
else {
{T843*n=malloc(sizeof(*n));
*n=M843;
r843from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r843to_runnable_integer(((T843*)R),a1);
}
/*FI*/return R;
}
void r843make(T843* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_header_comment=a2;
}
/*No:E_WHEN.nb_errors*/
void r843add_when_item_2(T843* C,T0* a1){
int _i=0;
int _u=0;
int _l=0;
_l=(((T372*)((T372*)a1)))->_lower_value/*20*/;
_u=(((T372*)((T372*)a1)))->_upper_value/*16*/;
/*IF*/if ((_l)>=(_u)) {
r843error(r372start_position(((T372*)a1)),((T0*)ms8_843));
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_i=_l;
while (!((_i)>(_u))) {
/*IF*/if (/*(IRF4.6includes*/r377includes_integer(((T377*)((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_when_list/*16*/)),_i)/*)*/) {
r843err_occ(C,_i,r372start_position(((T372*)a1)));
_i=(_u)+(1);
}
else {
_i=(_i)+(1);
}
/*FI*/}
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T843*)C))->_values/*20*/)==((void*)(NULL))) {
{T353*n=malloc(sizeof(*n));
*n=M353;
r353make(n,_l,_u);
C->_values=(T0*)n;
}
/*[IRF3.6set_all_with*/{T353* C1=((T353*)((((T843*)C))->_values/*20*/));
int b1=1;
r593set_all_with((((T353*)C1))->_storage/*0*/,b1,((((T353*)C1))->_upper/*8*/)-((((T353*)C1))->_lower/*12*/));
}/*]*/
}
else {
r353force(((T353*)((((T843*)C))->_values/*20*/)),1,_l);
r353force(((T353*)((((T843*)C))->_values/*20*/)),1,_u);
r353set_slice_with(((T353*)((((T843*)C))->_values/*20*/)),1,_l,_u);
}
/*FI*/}
/*FI*/}
void r843from_e_when(T843* C,T0* a1){
T0* _when_item=NULL;
int _i=0;
C->_start_position=(((T843*)((T843*)a1)))->_start_position/*0*/;
C->_list=X631twin((((T843*)((T843*)a1)))->_list/*4*/);
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))) {
_when_item=X274twin(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)));
/*X274*//*[IRF3.3clear_e_when*/((((T349*)(((T349*)_when_item))))->_e_when)=(NULL);
/*]*/
/*X631*//*[IRF3.6put*/{T247* C1=((T247*)((((T843*)C))->_list/*4*/));
T0* b1=_when_item;
int b2=_i;
((((T247*)C1))->_storage/*4*/)[(b2)-((((T247*)C1))->_lower/*16*/)]=(b1);
}/*]*/
_i=(_i)+(1);
}
C->_header_comment=(((T843*)((T843*)a1)))->_header_comment/*8*/;
C->_compound=(((T843*)((T843*)a1)))->_compound/*12*/;
}
/*No:E_WHEN.point2*/
/*No:E_WHEN.values*/
/*No:E_WHEN.start_position*/
void r843err_occ(T843* C,int a1,T0* a2){
r683add_position((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms9_843);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a1);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r843error(a2,((T0*)ms10_843));
}
/*No:E_WHEN.em1*/
/*No:E_WHEN.list*/
/*No:E_WHEN.em2*/
/*No:E_WHEN.set_compound*/
void r843add_value(T843* C,T0* a1){
T0* _element=NULL;
{T349*n=malloc(sizeof(*n));
*n=M349;
/*[IRF3.3make*/((((T349*)(n)))->_expression)=(a1);
/*]*/
_element=(T0*)n;
}
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
C->_list=se_ma247(1,_element);
}
else {
X631add_last((((T843*)C))->_list/*4*/,_element);
}
/*FI*/}
/*No:E_WHEN.current_type*/
/*No:E_WHEN.compound*/
/*No:E_WHEN.header_comment*/
void r843compile_to_jvm(T843* C,T0* a1,int a2){
T0* _ca=NULL;
int _must_test=0;
int _bs=0;
int _bi=0;
int _point4=0;
int _point3=0;
_ca=oBC364code_attribute;
/*IF*/if ((a2)>(0)) {
_must_test=1;
}
 else if (r590no_check(((T590*)(oBC364run_control)))) {
_must_test=1;
}
else {
_must_test=(a1)!=((void*)(NULL));
}
/*FI*//*[IRF3.3clear*/((((T226*)(((T226*)(oBC843points1)))))->_upper)=(-(1));
/*]*/
/*IF*/if (_must_test) {
_bi=(((T353*)((T353*)((((T843*)C))->_values/*20*/))))->_lower/*12*/;
while (!((_bi)>((((T353*)((T353*)((((T843*)C))->_values/*20*/))))->_upper/*8*/))) {
_bs=(_bi)+(1);
while (!(((_bs)>((((T353*)((T353*)((((T843*)C))->_values/*20*/))))->_upper/*8*/))||(!(r353item(((T353*)((((T843*)C))->_values/*20*/)),_bs))))) {
_bs=(_bs)+(1);
}
_bs=(_bs)-(1);
/*IF*/if ((_bi)==(_bs)) {
/*[IRF3.4opcode_dup*/r256opcode(((T256*)_ca),89,1);
/*]*/
r256opcode_push_integer(((T256*)_ca),_bi);
r226add_last(((T226*)(oBC843points1)),r256opcode_if_icmpeq(((T256*)_ca)));
}
else {
/*[IRF3.4opcode_dup*/r256opcode(((T256*)_ca),89,1);
/*]*/
r256opcode_push_integer(((T256*)_ca),_bi);
_point3=r256opcode_if_icmplt(((T256*)_ca));
/*[IRF3.4opcode_dup*/r256opcode(((T256*)_ca),89,1);
/*]*/
r256opcode_push_integer(((T256*)_ca),_bs);
r226add_last(((T226*)(oBC843points1)),r256opcode_if_icmple(((T256*)_ca)));
r256resolve_u2_branch(_point3);
}
/*FI*/_bi=(_bs)+(1);
while (!(((_bi)>((((T353*)((T353*)((((T843*)C))->_values/*20*/))))->_upper/*8*/))||(r353item(((T353*)((((T843*)C))->_values/*20*/)),_bi)))) {
_bi=(_bi)+(1);
}
}
_point4=r256opcode_goto(((T256*)_ca));
}
/*FI*/r256resolve_with(oBC843points1);
/*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
r592compile_to_jvm(((T592*)((((T843*)C))->_compound/*12*/)));
}
/*FI*/C->_point2=r256opcode_goto(((T256*)_ca));
/*IF*/if (_must_test) {
r256resolve_u2_branch(_point4);
}
/*FI*/}
int r843use_current(T843* C){
int R=0;
/*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
R=r592use_current(((T592*)((((T843*)C))->_compound/*12*/)));
}
/*FI*/return R;
}
void r843error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
int r843includes_integer(T843* C,int a1){
int R=0;
R=((((((T843*)C))->_values/*20*/)!=((void*)(NULL)))&&(r353valid_index(((T353*)((((T843*)C))->_values/*20*/)),a1)))&&(r353item(((T353*)((((T843*)C))->_values/*20*/)),a1));
return R;
}
T0* r843to_runnable_character(T843* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
int _i=0;
int _ne=0;
/*IF*/if (((((T843*)C))->_when_list/*16*/)==((void*)(NULL))) {
_ne=/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/;
C->_when_list=a1;
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
r683add_position((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_start_position/*8*/);
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms12_843));
}
else {
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!(((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))||(((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)-(_ne))>(0)))) {
_when_item=X274to_runnable_character(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)),(T0*)C);
/*IF*/if ((_when_item)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
else {
/*X631*//*[IRF3.6put*/{T247* C1=((T247*)((((T843*)C))->_list/*4*/));
T0* b1=_when_item;
int b2=_i;
((((T247*)C1))->_storage/*4*/)[(b2)-((((T247*)C1))->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*//*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
C->_compound=r592to_runnable(((T592*)((((T843*)C))->_compound/*12*/)),/*(IRF4.6current_type*//*(IRF4.6current_type*/r270current_type(((T270*)((((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*/)))/*)*//*)*/);
/*IF*/if (((((T843*)C))->_compound/*12*/)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
/*FI*/}
/*FI*/R=(T0*)C;
}
else {
{T843*n=malloc(sizeof(*n));
*n=M843;
r843from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r843to_runnable_character(((T843*)R),a1);
}
/*FI*/return R;
}
void r843add_slice(T843* C,T0* a1,T0* a2){
T0* _element=NULL;
{T372*n=malloc(sizeof(*n));
*n=M372;
r372make(n,a1,a2);
_element=(T0*)n;
}
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
C->_list=se_ma263(1,_element);
}
else {
X631add_last((((T843*)C))->_list/*4*/,_element);
}
/*FI*/}
/*No:E_WHEN.compile_to_jvm_resolve_branch*/
void r843afd_check(T843* C){
/*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
r592afd_check(((T592*)((((T843*)C))->_compound/*12*/)));
}
/*FI*/}
T0*oBC843points1=NULL;
/*No:E_WHEN.e_inspect*/

