/* Compiler: ECL 26.3.27                                                      */
/* Source: /build/ecl/src/ecl-26.3.27/src/cmp/cmpos-features.lsp              */
#include <ecl/ecl-cmp.h>
#include "cmp/cmpos-features.eclh"
/* function definition for RUN-AND-COLLECT                                    */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4121run_and_collect(volatile cl_narg narg, cl_object volatile v1command, cl_object volatile v2args, ...)
{
 cl_object T0, T1, T2, T3;
 cl_object volatile env0 = ECL_NIL;
 cl_object volatile CLV0, CLV1;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object volatile value0;
 ecl_cs_check(cl_env_copy,value0);
 if (ecl_unlikely(narg<2)) FEwrong_num_arguments(VV[0]);
 if (ecl_unlikely(narg>3)) FEwrong_num_arguments(VV[0]);
 {
  cl_object volatile v3file;
  va_list args; va_start(args,v2args);
  {
   int i = 2;
   if (i >= narg) {
    v3file = ECL_NIL;
   } else {
    i++;
    v3file = va_arg(args,cl_object);
   }
  }
  va_end(args);
  {
   volatile cl_object env1 = env0;
   env1 = ECL_NIL;
   CLV0 = env1 = CONS(ECL_NIL,env1);
   CLV1 = env1 = CONS(ECL_NEW_FRAME_ID(cl_env_copy),env1); /*  TAGBODY        */
   {
    ecl_frs_push(cl_env_copy,ECL_CONS_CAR(CLV1));
    if (__ecl_frs_push_result!=0) {
    if (cl_env_copy->values[0]==ecl_make_int8_t(0)) {
     goto L2;
    }
    ecl_internal_error("GO found an inexistent tag");
    } else {
    {
     cl_object volatile v4;
     v4 = ecl_make_cclosure_va((cl_objectfn)LC4120__lambda4,env1,Cblock,1);
     T0 = v4;
    }
    T1 = CONS(ECL_SYM("ERROR",339),T0);
    T2 = ecl_list1(T1);
    T3 = CONS(T2,ecl_cmp_symbol_value(cl_env_copy,ECL_SYM("*HANDLER-CLUSTERS*",6)));
    ecl_bds_bind(cl_env_copy,ECL_SYM("*HANDLER-CLUSTERS*",6),T3); /*  *HANDLER-CLUSTERS* */
    {
     volatile cl_object v4;
     volatile cl_object v5lines;
     v4 = si_run_program_inner(v1command, v2args, ECL_SYM("DEFAULT",1246), ECL_T);
     v5lines = ECL_NIL;
     v5lines = (cl_env_copy->function=ecl_fdefinition(VV[3]))->cfun.entry(1, v4) /*  COLLECT-LINES */;
     if (!(v3file==ECL_NIL)){
      goto L9;
     }
     value0 = v5lines;
     cl_env_copy->nvalues = 1;
     ecl_frs_pop_n(cl_env_copy, 1);
     ecl_bds_unwind1(cl_env_copy);
     return value0;
L9:;
     if (Null(cl_probe_file(v3file))){
      goto L11;
     }
     {
      volatile cl_object v6s;
      v6s = cl_open(3, v3file, ECL_SYM("DIRECTION",1249), ECL_SYM("INPUT",1289));
      {
       struct ecl_stack_frame _ecl_inner_frame_aux;
       volatile cl_object _ecl_inner_frame=ecl_stack_frame_open(cl_env_copy,(cl_object)&_ecl_inner_frame_aux,0);
       volatile bool unwinding = FALSE;
       ecl_frame_ptr next_fr;
       {
        ecl_frs_push(cl_env_copy,ECL_PROTECT_TAG);
        if (__ecl_frs_push_result!=0) {
          unwinding = TRUE; next_fr=cl_env_copy->frs_stack.nlj_fr;
        } else {
        {
         struct ecl_stack_frame _ecl_inner_frame_aux;
         volatile cl_object _ecl_inner_frame=ecl_stack_frame_open(cl_env_copy,(cl_object)&_ecl_inner_frame_aux,0);
         cl_env_copy->values[0] = (cl_env_copy->function=ecl_fdefinition(VV[3]))->cfun.entry(1, v6s) /*  COLLECT-LINES */;
         ecl_stack_frame_push_values(_ecl_inner_frame);
         if (Null(v6s)){
          goto L16;
         }
         cl_close(1, v6s);
L16:;
         ecl_stack_frame_pop_values(_ecl_inner_frame);
         ecl_stack_frame_close(_ecl_inner_frame);
        }
        }
       }
       ecl_frs_pop(cl_env_copy);
       ecl_stack_frame_push_values(_ecl_inner_frame);
       if (Null(v6s)){
        goto L18;
       }
       cl_close(3, v6s, ECL_SYM("ABORT",1225), ECL_T);
L18:;
       ecl_stack_frame_pop_values(_ecl_inner_frame);
       if (unwinding) ecl_unwind(cl_env_copy,next_fr);
       ecl_frs_pop_n(cl_env_copy, 1);
       ecl_stack_frame_close(_ecl_inner_frame);
       ecl_bds_unwind1(cl_env_copy);
       return cl_env_copy->values[0];
      }
     }
L11:;
     value0 = (cl_env_copy->function=(ECL_SYM("WARN",907)->symbol.gfdef))->cfun.entry(2, VV[4], v3file) /*  WARN */;
     ecl_frs_pop_n(cl_env_copy, 1);
     ecl_bds_unwind1(cl_env_copy);
     return value0;
    }
L2:;
    {
     cl_object v4c;
     v4c = ECL_CONS_CAR(CLV0);
     value0 = cl_format(4, ECL_T, VV[5], v1command, v4c);
     ecl_frs_pop_n(cl_env_copy, 1);
     return value0;
    }
    }
   }
  }
 }
}
/* function definition for SPLIT-WORDS                                        */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4122split_words(cl_object v1string)
{
 cl_object T0, T1;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 {
  cl_object v2output;
  v2output = ECL_NIL;
  {
   cl_object v3word;
   v3word = ECL_NIL;
   {
    cl_object v4;
    cl_object v5;
    cl_object v6i;
    v4 = ecl_make_int8_t(0);
    v5 = ecl_make_fixnum(ecl_length(v1string));
    v6i = v4;
    {
     cl_object v7c;
     v7c = ECL_NIL;
L8:;
     if (!(ecl_greatereq(v6i,v5))){
      goto L10;
     }
     goto L9;
L10:;
     v7c = ecl_elt(v1string,ecl_to_size(v6i));
     if (!(((v7c)==ECL_CODE_CHAR((ecl_character)(32))))){
      goto L20;
     }
     goto L17;
L20:;
     goto L18;
L18:;
     if (!(((v7c)==ECL_CODE_CHAR((ecl_character)(9))))){
      goto L24;
     }
     goto L17;
L24:;
     goto L22;
L22:;
     if (!(((v7c)==ECL_CODE_CHAR((ecl_character)(10))))){
      goto L15;
     }
     goto L16;
L17:;
L16:;
     if (Null(v3word)){
      goto L14;
     }
     {
      cl_fixnum v8;
      v8 = ecl_length(v3word);
      T0 = cl_nreverse(v3word);
      T1 = cl_make_array(5, ecl_make_fixnum(v8), ECL_SYM("ELEMENT-TYPE",1255), ECL_SYM("BASE-CHAR",122), ECL_SYM("INITIAL-CONTENTS",1287), T0);
      v2output = CONS(T1,v2output);
     }
     v3word = ECL_NIL;
     goto L14;
L15:;
     v3word = CONS(v7c,v3word);
L14:;
     v6i = ecl_one_plus(v6i);
     goto L8;
L9:;
     {
      cl_fixnum v8;
      v8 = ecl_length(v3word);
      T0 = cl_nreverse(v3word);
      T1 = cl_make_array(5, ecl_make_fixnum(v8), ECL_SYM("ELEMENT-TYPE",1255), ECL_SYM("BASE-CHAR",122), ECL_SYM("INITIAL-CONTENTS",1287), T0);
      v2output = CONS(T1,v2output);
     }
     value0 = v2output;
     cl_env_copy->nvalues = 1;
     return value0;
    }
   }
  }
 }
}
static cl_object L4122split_words_va(cl_narg narg, cl_object v8string, ...)
{
 if (ecl_unlikely(narg!=1)) FEwrong_num_arguments(VV[7]);
 {
  return L4122split_words(v8string);
 }
}
/* function definition for KNOWN-KEYWORD                                      */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4123known_keyword(cl_narg narg, cl_object v1string, ...)
{
 cl_object T0;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
 if (ecl_unlikely(narg<1)) FEwrong_num_arguments(VV[17]);
 if (ecl_unlikely(narg>2)) FEwrong_num_arguments(VV[17]);
 {
  cl_object v2patterns;
  va_list args; va_start(args,v1string);
  {
   int i = 1;
   if (i >= narg) {
    v2patterns = ecl_cmp_symbol_value(cl_env_copy,VV[15]);
   } else {
    i++;
    v2patterns = va_arg(args,cl_object);
   }
  }
  va_end(args);
  {
   cl_object v3base;
   T0 = cl_string_upcase(1, v1string);
   v3base = cl_make_pathname(4, ECL_SYM("DIRECTORY",1250), ECL_NIL, ECL_SYM("NAME",1309), T0);
   {
    cl_object v4;
    cl_object v5p;
    cl_object v6;
    {
     cl_object v7;
     v7 = v2patterns;
     if (ecl_unlikely(!ECL_LISTP(v7))) FEtype_error_list(v7);
     value0 = ECL_NIL;
     cl_env_copy->nvalues = 0;
     v4 = v7;
    }
    v5p = ECL_NIL;
    v6 = v4;
    {
     cl_object v7pattern_path;
     v7pattern_path = ECL_NIL;
     {
      cl_object v8;
      v8 = ECL_NIL;
L10:;
      if (!(ecl_endp(v6))){
       goto L12;
      }
      goto L11;
L12:;
      v5p = ECL_CONS_CAR(v6);
      {
       cl_object v9;
       v9 = ECL_CONS_CDR(v6);
       if (ecl_unlikely(!ECL_LISTP(v9))) FEtype_error_list(v9);
       value0 = ECL_NIL;
       cl_env_copy->nvalues = 0;
       v6 = v9;
      }
      T0 = cl_string_upcase(1, v5p);
      v7pattern_path = cl_make_pathname(4, ECL_SYM("DIRECTORY",1250), ECL_NIL, ECL_SYM("NAME",1309), T0);
      v8 = cl_pathname_match_p(v3base, v7pattern_path);
      if (Null(v8)){
       goto L22;
      }
      value0 = v8;
      cl_env_copy->nvalues = 1;
      return value0;
L22:;
      goto L10;
L11:;
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 1;
      return value0;
     }
    }
   }
  }
 }
}
/* function definition for GATHER-KEYWORDS                                    */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4125gather_keywords(cl_object v1strings, cl_object v2patterns)
{
 cl_object T0, T1, T2, T3;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 {
  cl_object v3strings;
  T0 = (ECL_SYM("APPEND",90)->symbol.gfdef);
  {
   cl_object v4;
   v4 = ecl_fdefinition(VV[7]);
   {
    cl_object v5;
    cl_object v6;
    cl_object v7;
    {
     cl_object v8;
     v8 = v1strings;
     if (ecl_unlikely(!ECL_LISTP(v8))) FEtype_error_list(v8);
     value0 = ECL_NIL;
     cl_env_copy->nvalues = 0;
     v5 = v8;
    }
    v6 = ECL_NIL;
    v7 = v5;
    {
     cl_object v8;
     cl_object v9;
     v8 = ecl_list1(ECL_NIL);
     v9 = v8;
L13:;
     if (!(ecl_endp(v7))){
      goto L15;
     }
     goto L14;
L15:;
     v6 = ECL_CONS_CAR(v7);
     {
      cl_object v10;
      v10 = ECL_CONS_CDR(v7);
      if (ecl_unlikely(!ECL_LISTP(v10))) FEtype_error_list(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      v7 = v10;
     }
     {
      cl_object v10;
      v10 = v9;
      if (ecl_unlikely(ECL_ATOM(v10))) FEtype_error_cons(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      T2 = v10;
     }
     T3 = ecl_function_dispatch(cl_env_copy,v4)(1, v6);
     v9 = ecl_list1(T3);
     (ECL_CONS_CDR(T2)=v9,T2);
     goto L13;
L14:;
     T1 = ecl_cdr(v8);
     goto L4;
    }
   }
  }
L4:;
  v3strings = cl_reduce(2, T0, T1);
  {
   cl_object v4;
   {
    cl_object v5;
    v5 = ecl_make_cfun_va((cl_objectfn)LC4124__lambda60_va,ECL_NIL,Cblock,1);
    v4 = v5;
   }
   {
    cl_object v5;
    cl_object v6;
    cl_object v7;
    {
     cl_object v8;
     T0 = ecl_fdefinition(VV[17]);
     v8 = cl_remove_if_not(2, T0, v3strings);
     if (ecl_unlikely(!ECL_LISTP(v8))) FEtype_error_list(v8);
     value0 = ECL_NIL;
     cl_env_copy->nvalues = 0;
     v5 = v8;
    }
    v6 = ECL_NIL;
    v7 = v5;
    {
     cl_object v8;
     cl_object v9;
     v8 = ecl_list1(ECL_NIL);
     v9 = v8;
L40:;
     if (!(ecl_endp(v7))){
      goto L42;
     }
     goto L41;
L42:;
     v6 = ECL_CONS_CAR(v7);
     {
      cl_object v10;
      v10 = ECL_CONS_CDR(v7);
      if (ecl_unlikely(!ECL_LISTP(v10))) FEtype_error_list(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      v7 = v10;
     }
     {
      cl_object v10;
      v10 = v9;
      if (ecl_unlikely(ECL_ATOM(v10))) FEtype_error_cons(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      T0 = v10;
     }
     T1 = ecl_function_dispatch(cl_env_copy,v4)(1, v6);
     v9 = ecl_list1(T1);
     (ECL_CONS_CDR(T0)=v9,T0);
     goto L40;
L41:;
     value0 = ecl_cdr(v8);
     cl_env_copy->nvalues = 1;
     return value0;
    }
   }
  }
 }
}
static cl_object L4125gather_keywords_va(cl_narg narg, cl_object v10strings, cl_object v11patterns, ...)
{
 if (ecl_unlikely(narg!=2)) FEwrong_num_arguments(VV[19]);
 {
  return L4125gather_keywords(v10strings, v11patterns);
 }
}
/* function definition for COMPILER-DEFINES                                   */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4126compiler_defines(cl_object volatile v1macros)
{
 cl_object T0, T1, T2, T3, T4, T5;
 cl_object volatile env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object volatile value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 {
  volatile cl_object v2f;
  volatile cl_object v3fc;
  volatile cl_object v4fs;
  v2f = si_mkstemp(VV[27]);
  v3fc = cl_make_pathname(4, ECL_SYM("TYPE",1356), VV[28], ECL_SYM("DEFAULTS",1247), v2f);
  v4fs = cl_make_pathname(4, ECL_SYM("TYPE",1356), VV[29], ECL_SYM("DEFAULTS",1247), v2f);
  {
   volatile cl_object v5s;
   v5s = cl_open(7, v3fc, ECL_SYM("DIRECTION",1249), ECL_SYM("OUTPUT",1319), ECL_SYM("IF-EXISTS",1279), ECL_SYM("OVERWRITE",1320), ECL_SYM("IF-DOES-NOT-EXIST",1277), ECL_SYM("CREATE",1244));
   {
    struct ecl_stack_frame _ecl_inner_frame_aux;
    volatile cl_object _ecl_inner_frame=ecl_stack_frame_open(cl_env_copy,(cl_object)&_ecl_inner_frame_aux,0);
    volatile bool unwinding = FALSE;
    ecl_frame_ptr next_fr;
    {
     ecl_frs_push(cl_env_copy,ECL_PROTECT_TAG);
     if (__ecl_frs_push_result!=0) {
       unwinding = TRUE; next_fr=cl_env_copy->frs_stack.nlj_fr;
     } else {
     {
      struct ecl_stack_frame _ecl_inner_frame_aux;
      volatile cl_object _ecl_inner_frame=ecl_stack_frame_open(cl_env_copy,(cl_object)&_ecl_inner_frame_aux,0);
      {
       cl_object v6i;
       v6i = ecl_make_int8_t(0);
       {
        cl_object v7;
        cl_object v8macro;
        cl_object v9rest;
        cl_object v10;
        {
         cl_object v11;
         v11 = v1macros;
         if (ecl_unlikely(!ECL_LISTP(v11))) FEtype_error_list(v11);
         value0 = ECL_NIL;
         cl_env_copy->nvalues = 0;
         v7 = v11;
        }
        v8macro = ECL_NIL;
        v9rest = ECL_NIL;
        v10 = v7;
L16:;
        if (!(ecl_endp(v10))){
         goto L18;
        }
        goto L17;
L18:;
        {
         cl_object v11;
         v11 = ECL_CONS_CAR(v10);
         v8macro = ecl_car(v11);
         v11 = ecl_cdr(v11);
         v9rest = v11;
        }
        {
         cl_object v11;
         v11 = ECL_CONS_CDR(v10);
         if (ecl_unlikely(!ECL_LISTP(v11))) FEtype_error_list(v11);
         value0 = ECL_NIL;
         cl_env_copy->nvalues = 0;
         v10 = v11;
        }
        cl_format(5, v5s, VV[30], v8macro, v6i, v8macro);
        v6i = ecl_one_plus(v6i);
        goto L16;
L17:;
        cl_env_copy->values[0] = ECL_NIL;
        cl_env_copy->nvalues = 1;
       }
      }
      ecl_stack_frame_push_values(_ecl_inner_frame);
      if (Null(v5s)){
       goto L35;
      }
      cl_close(1, v5s);
L35:;
      ecl_stack_frame_pop_values(_ecl_inner_frame);
      ecl_stack_frame_close(_ecl_inner_frame);
     }
     }
    }
    ecl_frs_pop(cl_env_copy);
    ecl_stack_frame_push_values(_ecl_inner_frame);
    if (Null(v5s)){
     goto L37;
    }
    cl_close(3, v5s, ECL_SYM("ABORT",1225), ECL_T);
L37:;
    ecl_stack_frame_pop_values(_ecl_inner_frame);
    if (unwinding) ecl_unwind(cl_env_copy,next_fr);
    ecl_stack_frame_close(_ecl_inner_frame);
   }
  }
  {
   cl_object v5list;
   {
    cl_object v6;
    v6 = (ECL_SYM("LIST",483)->symbol.gfdef);
    {
     cl_object v7;
     cl_object v8;
     cl_object v9;
     {
      cl_object v10;
      {
       cl_object v11;
       v11 = (ECL_SYM("FIRST",373)->symbol.gfdef);
       {
        cl_object v12;
        cl_object v13;
        cl_object v14;
        {
         cl_object v15;
         v15 = v1macros;
         if (ecl_unlikely(!ECL_LISTP(v15))) FEtype_error_list(v15);
         value0 = ECL_NIL;
         cl_env_copy->nvalues = 0;
         v12 = v15;
        }
        v13 = ECL_NIL;
        v14 = v12;
        {
         cl_object v15;
         cl_object v16;
         v15 = ecl_list1(ECL_NIL);
         v16 = v15;
L51:;
         if (!(ecl_endp(v14))){
          goto L53;
         }
         goto L52;
L53:;
         v13 = ECL_CONS_CAR(v14);
         {
          cl_object v17;
          v17 = ECL_CONS_CDR(v14);
          if (ecl_unlikely(!ECL_LISTP(v17))) FEtype_error_list(v17);
          value0 = ECL_NIL;
          cl_env_copy->nvalues = 0;
          v14 = v17;
         }
         {
          cl_object v17;
          v17 = v16;
          if (ecl_unlikely(ECL_ATOM(v17))) FEtype_error_cons(v17);
          value0 = ECL_NIL;
          cl_env_copy->nvalues = 0;
          T0 = v17;
         }
         T1 = ecl_function_dispatch(cl_env_copy,v11)(1, v13);
         v16 = ecl_list1(T1);
         (ECL_CONS_CDR(T0)=v16,T0);
         goto L51;
L52:;
         v10 = ecl_cdr(v15);
         goto L42;
        }
       }
      }
L42:;
      if (ecl_unlikely(!ECL_LISTP(v10))) FEtype_error_list(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      v7 = v10;
     }
     v8 = ECL_NIL;
     v9 = v7;
     {
      cl_object v10;
      cl_object v11;
      v10 = ecl_list1(ECL_NIL);
      v11 = v10;
L74:;
      if (!(ecl_endp(v9))){
       goto L76;
      }
      goto L75;
L76:;
      v8 = ECL_CONS_CAR(v9);
      {
       cl_object v12;
       v12 = ECL_CONS_CDR(v9);
       if (ecl_unlikely(!ECL_LISTP(v12))) FEtype_error_list(v12);
       value0 = ECL_NIL;
       cl_env_copy->nvalues = 0;
       v9 = v12;
      }
      {
       cl_object v12;
       v12 = v11;
       if (ecl_unlikely(ECL_ATOM(v12))) FEtype_error_cons(v12);
       value0 = ECL_NIL;
       cl_env_copy->nvalues = 0;
       T0 = v12;
      }
      T1 = ecl_function_dispatch(cl_env_copy,v6)(1, v8);
      v11 = ecl_list1(T1);
      (ECL_CONS_CDR(T0)=v11,T0);
      goto L74;
L75:;
      v5list = ecl_cdr(v10);
      goto L39;
     }
    }
   }
L39:;
   {
    cl_object v6lines;
    T0 = ecl_cmp_symbol_value(cl_env_copy,VV[31]);
    T1 = (cl_env_copy->function=ecl_fdefinition(VV[32]))->cfun.entry(1, ecl_cmp_symbol_value(cl_env_copy,VV[33])) /*  SPLIT-PROGRAM-OPTIONS */;
    T2 = cl_namestring(v3fc);
    T3 = cl_namestring(v4fs);
    T4 = cl_list(4, VV[34], T2, VV[35], T3);
    T5 = ecl_append(T1,T4);
    v6lines = L4121run_and_collect(3, T0, T5, v4fs);
    {
     cl_object v7;
     cl_object v8l;
     cl_object v9;
     {
      cl_object v10;
      v10 = v6lines;
      if (ecl_unlikely(!ECL_LISTP(v10))) FEtype_error_list(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      v7 = v10;
     }
     v8l = ECL_NIL;
     v9 = v7;
L99:;
     if (!(ecl_endp(v9))){
      goto L101;
     }
     goto L100;
L101:;
     v8l = ECL_CONS_CAR(v9);
     {
      cl_object v10;
      v10 = ECL_CONS_CDR(v9);
      if (ecl_unlikely(!ECL_LISTP(v10))) FEtype_error_list(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      v9 = v10;
     }
     T0 = cl_search(2, VV[36], v8l);
     if (!((T0)==(ecl_make_int8_t(0)))){
      goto L109;
     }
     {
      cl_object v10number;
      cl_object v11defines;
      T0 = cl_subseq(3, v8l, ecl_make_int8_t(9), ecl_make_int8_t(13));
      v10number = cl_parse_integer(1, T0);
      v11defines = cl_subseq(2, v8l, ecl_make_int8_t(14));
      T0 = ecl_elt(v1macros,ecl_to_size(v10number));
      ecl_elt_set(v5list,ecl_to_size(v10number),T0);
     }
L109:;
     goto L99;
L100:;
     value0 = v5list;
     cl_env_copy->nvalues = 1;
     return value0;
    }
   }
  }
 }
}
static cl_object L4126compiler_defines_va(cl_narg narg, cl_object v10macros, ...)
{
 if (ecl_unlikely(narg!=1)) FEwrong_num_arguments(VV[26]);
 {
  return L4126compiler_defines(v10macros);
 }
}
/* function definition for RUN-AND-COLLECT-KEYWORDS                           */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4127run_and_collect_keywords(cl_narg narg, ...)
{
 cl_object T0, T1;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
 {
  cl_object v1args;
  ecl_va_list args; ecl_va_start(args,narg,narg,0);
  v1args = cl_grab_rest_args(args);
  ecl_va_end(args);
  T0 = ecl_fdefinition(VV[0]);
  T1 = cl_apply(2, T0, v1args);
  value0 = L4125gather_keywords(T1, ecl_cmp_symbol_value(cl_env_copy,VV[15]));
  return value0;
 }
}
/* function definition for GATHER-SYSTEM-FEATURES                             */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4128gather_system_features(cl_narg narg, ...)
{
 cl_object T0, T1, T2, T3;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
 {
  cl_object v1executable;
  ecl_va_list args; ecl_va_start(args,narg,narg,0);
  {
   cl_object keyvars[2];
   cl_parse_key(args,1,L4128gather_system_featureskeys,keyvars,NULL,FALSE);
   ecl_va_end(args);
   if (Null(keyvars[1])) {
    v1executable = VV[42];
   } else {
    v1executable = keyvars[0];
   }
  }
  {
   cl_object v2ecl_binary;
   cl_object v3executable_features;
   cl_object v4compiler_version;
   cl_object v5compiler_features;
   T0 = cl_truename(v1executable);
   v2ecl_binary = cl_namestring(T0);
   T0 = ecl_list1(v2ecl_binary);
   v3executable_features = L4127run_and_collect_keywords(2, VV[44], T0);
   T0 = ecl_cmp_symbol_value(cl_env_copy,VV[31]);
   if (Null(cl_search(2, VV[45], ecl_cmp_symbol_value(cl_env_copy,VV[31])))){
    goto L7;
   }
   T1 = VV[46];
   goto L6;
L7:;
   T1 = VV[47];
L6:;
   v4compiler_version = L4127run_and_collect_keywords(2, T0, T1);
   T0 = (ECL_SYM("APPEND",90)->symbol.gfdef);
   {
    cl_object v6;
    v6 = (ECL_SYM("REST",722)->symbol.gfdef);
    {
     cl_object v7;
     cl_object v8;
     cl_object v9;
     {
      cl_object v10;
      v10 = L4126compiler_defines(ecl_cmp_symbol_value(cl_env_copy,VV[38]));
      if (ecl_unlikely(!ECL_LISTP(v10))) FEtype_error_list(v10);
      value0 = ECL_NIL;
      cl_env_copy->nvalues = 0;
      v7 = v10;
     }
     v8 = ECL_NIL;
     v9 = v7;
     {
      cl_object v10;
      cl_object v11;
      v10 = ecl_list1(ECL_NIL);
      v11 = v10;
L20:;
      if (!(ecl_endp(v9))){
       goto L22;
      }
      goto L21;
L22:;
      v8 = ECL_CONS_CAR(v9);
      {
       cl_object v12;
       v12 = ECL_CONS_CDR(v9);
       if (ecl_unlikely(!ECL_LISTP(v12))) FEtype_error_list(v12);
       value0 = ECL_NIL;
       cl_env_copy->nvalues = 0;
       v9 = v12;
      }
      {
       cl_object v12;
       v12 = v11;
       if (ecl_unlikely(ECL_ATOM(v12))) FEtype_error_cons(v12);
       value0 = ECL_NIL;
       cl_env_copy->nvalues = 0;
       T2 = v12;
      }
      T3 = ecl_function_dispatch(cl_env_copy,v6)(1, v8);
      v11 = ecl_list1(T3);
      (ECL_CONS_CDR(T2)=v11,T2);
      goto L20;
L21:;
      T1 = ecl_cdr(v10);
      goto L11;
     }
    }
   }
L11:;
   v5compiler_features = cl_reduce(2, T0, T1);
   T0 = cl_nconc(3, v3executable_features, v4compiler_version, v5compiler_features);
   T1 = (ECL_SYM("STRING-EQUAL",811)->symbol.gfdef);
   value0 = cl_delete_duplicates(3, T0, ECL_SYM("TEST",1353), T1);
   return value0;
  }
 }
}
/* function definition for UPDATE-COMPILER-FEATURES                           */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L4129update_compiler_features(cl_narg narg, ...)
{
 cl_object T0, T1;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
 {
  cl_object v1args;
  ecl_va_list args; ecl_va_start(args,narg,narg,0);
  v1args = cl_grab_rest_args(args);
  ecl_va_end(args);
  T0 = ecl_fdefinition(VV[43]);
  T1 = cl_apply(2, T0, v1args);
  ecl_cmp_setq(cl_env_copy,VV[50],T1);
  value0 = ecl_cmp_symbol_value(cl_env_copy,VV[50]);
  cl_env_copy->nvalues = 1;
  return value0;
 }
}
/* closure LAMBDA4                                                            */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object LC4120__lambda4(cl_narg narg, cl_object v1si__temp, ...)
{
 cl_object CLV0, CLV1;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object env0 = cl_env_copy->function->cclosure.env;
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
 /* Scanning closure data ... */
 CLV1 = env0;                                     /*  TAGBODY                 */
 CLV0 = _ecl_cdr(CLV1);
 { /* ... closure scanning finished */
 if (ecl_unlikely(narg!=1)) FEwrong_num_arguments(VV[2]);
 {
L1:;
  ECL_CONS_CAR(CLV0) = v1si__temp;
  cl_go(ECL_CONS_CAR(CLV1),ecl_make_fixnum(0));
 }
 }
}
/* local function LAMBDA60                                                    */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object LC4124__lambda60(cl_object v1s)
{
 cl_object T0, T1;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 T0 = cl_string_upcase(1, v1s);
 T1 = cl_find_package(VV[24]);
 value0 = cl_intern(2, T0, T1);
 return value0;
}
static cl_object LC4124__lambda60_va(cl_narg narg, cl_object v2s, ...)
{
 if (ecl_unlikely(narg!=1)) FEwrong_num_arguments(VV[23]);
 {
  return LC4124__lambda60(v2s);
 }
}
#include "cmp/cmpos-features.data"
#ifdef __cplusplus
extern "C"
#endif

ECL_DLLEXPORT void _eclB1ATw4QEM9ko9_g9h0M881(cl_object flag)
{
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 cl_object *VVtemp;
 if (flag != OBJNULL){
 Cblock = flag;
 #ifndef ECL_DYNAMIC_VV
 flag->cblock.data = VV;
 #endif
 flag->cblock.data_size = VM;
 flag->cblock.temp_data_size = VMtemp;
 flag->cblock.data_text = compiler_data_text;
 flag->cblock.cfuns_size = compiler_cfuns_size;
 flag->cblock.cfuns = compiler_cfuns;
 flag->cblock.source = ecl_make_constant_base_string("SRC:CMP;CMPOS-FEATURES.LSP.NEWEST",-1);
 return;}
 #ifdef ECL_DYNAMIC_VV
 VV = Cblock->cblock.data;
 #endif
 Cblock->cblock.data_text = (const cl_object *)"@EcLtAg:_eclB1ATw4QEM9ko9_g9h0M881@";
 VVtemp = Cblock->cblock.temp_data;
 ECL_DEFINE_SETF_FUNCTIONS
/* MAKE-LOAD-FORMs                                                            */
/* TOP-LEVEL-FORMs                                                            */
  si_select_package(VVtemp[0]);
  ecl_cmp_defun(VV[52]);                          /*  RUN-AND-COLLECT         */
  ecl_cmp_defun(VV[53]);                          /*  SPLIT-WORDS             */
  si_Xmake_constant(VV[15], VV[16]);
  ecl_cmp_defun(VV[54]);                          /*  KNOWN-KEYWORD           */
  ecl_cmp_defun(VV[55]);                          /*  GATHER-KEYWORDS         */
  ecl_cmp_defun(VV[56]);                          /*  COMPILER-DEFINES        */
  si_Xmake_constant(VV[38], VV[39]);
  ecl_cmp_defun(VV[57]);                          /*  RUN-AND-COLLECT-KEYWORDS */
  ecl_cmp_defun(VV[58]);                          /*  GATHER-SYSTEM-FEATURES  */
  ecl_cmp_defun(VV[59]);                          /*  UPDATE-COMPILER-FEATURES */
}
