#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_enter();
  auto _imp_string LAMEOFTYPE(int T) {
    _imp_enter();
    int X;
    _imp_string S;
    static void *SW[31 - 0 + 1] = {
        /* These need to be filled in from associated code block */};
    S = _imp_str_literal("");
    X = T & 31;
    if (X != T) X = 31;
    goto *SW[X];
  SW_0:;
    S = _imp_str_literal("unknown");
    goto ESAC;
  SW_1:;
    S = _imp_str_literal("integer");
    goto ESAC;
  SW_2:;
    S = _imp_str_literal("real");
    goto ESAC;
  SW_3:;
    S = _imp_str_literal("string");
    goto ESAC;
  SW_4:;
    S = _imp_str_literal("record");
    goto ESAC;
  SW_5:;
    S = _imp_str_literal("byte");
    goto ESAC;
  SW_6:;
    S = _imp_str_literal("shortinteger");
    goto ESAC;
  SW_7:;
    S = _imp_str_literal("longinteger");
    goto ESAC;
  SW_8:;
    S = _imp_str_literal("longreal");
    goto ESAC;
  SW_9:;
    S = _imp_str_literal("array");
    goto ESAC;
  SW_10:;
    S = _imp_str_literal("label");
    goto ESAC;
  SW_15:;
    S = _imp_str_literal("name");
    goto ESAC;
  SW_16:;
    S = _imp_str_literal("integer array");
    goto ESAC;
  SW_17:;
    S = _imp_str_literal("real array");
    goto ESAC;
  SW_18:;
    S = _imp_str_literal("string array");
    goto ESAC;
  SW_19:;
    S = _imp_str_literal("record array");
    goto ESAC;
  SW_20:;
    S = _imp_str_literal("byte array");
    goto ESAC;
  SW_21:;
    S = _imp_str_literal("shortinteger array");
    goto ESAC;
  SW_22:;
    S = _imp_str_literal("longinteger array");
    goto ESAC;
  SW_23:;
    S = _imp_str_literal("longreal array");
    goto ESAC;
  SW_24:;
    S = _imp_str_literal("array array");
    goto ESAC;
  SW_25:;
    S = _imp_str_literal("label array");
    goto ESAC;
  SW_default:;
    S = _imp_str_literal("unknown type");
    goto ESAC;
  ESAC:;
    return (S);
    _imp_leave();
  }
  auto void SHOWRESULTS(_imp_string S, int T) {
    _imp_enter();
    _imp_string TS;
    TS = _imp_str_literal(""); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    TS = MISSING_RHS;
    PRINTSTRING(S);
    PRINTSTRING(_imp_str_literal(" (="));
    WRITE(T, 2);
    PRINTSTRING(_imp_str_literal(")= '"));
        /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    PRINTSTRING();
    PRINTSTRING(_imp_str_literal("'"));
    SPACES(1 + LENGTH(_imp_str_literal("longreal array")) - LENGTH(TS));
    PRINTSTRING(S);
    PRINTSTRING(_imp_str_literal(" (="));
    WRITE(T, 2);
    PRINTSTRING(_imp_str_literal(")"));
    PRINTSTRING(_imp_str_literal("= '"));
    PRINTSTRING(TS);
    PRINTSTRING(_imp_str_literal("'"));
    NEWLINE();
    _imp_leave();
  }
  int TO;
  int V1 = 123;
  _imp_string V2 = _imp_str_literal("ABCD");
  char V3 = 123;
  double V4 = 1.2345;
  float V5;

  typedef struct X {
    char F4[5 - 0 + 1];
    double F3;
    float F2;
    short F1;

  } X;
  X V6;
  V6.F1 = 234;
  V6.F2 = 2.3456;
  V6.F3 = 3.4567890123456789;
  V6.F4[0] = 255;
  double V7[3 - 0 + 1][4 - 1 + 1];
  V7[1][3] = 1.2345;
  char V8[3 - 0 + 1][4 - 1 + 1][7 - 2 + 1];
  V8[0][1][7] = 1;
  X V9[4 - 0 + 1];
  V9[0].F1 = 5;
  short *V10;
  TO = TYPEOF(V1);
  PRINTSTRING(_imp_str_literal("typeof(v1)              [integer] (="));
  WRITE(TO, 2);
  PRINTSTRING(_imp_str_literal(")= '"));
      /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  PRINTSTRING();
  PRINTSTRING(_imp_str_literal("'"));
  NEWLINE();
  TO = TYPEOF(V5);
  PRINTSTRING(_imp_str_literal("typeof(v5)                 [real] (="));
  WRITE(TO, 2);
  PRINTSTRING(_imp_str_literal(")= '"));
      /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  PRINTSTRING();
  PRINTSTRING(_imp_str_literal("'"));
  NEWLINE();
  TO = TYPEOF(V2);
  PRINTSTRING(_imp_str_literal("typeof(v2)               [string] (="));
  WRITE(TO, 2);
  PRINTSTRING(_imp_str_literal(")= '"));
      /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  PRINTSTRING();
  PRINTSTRING(_imp_str_literal("'"));
  NEWLINE();
  TO = TYPEOF(V6);
  PRINTSTRING(_imp_str_literal("typeof(v6)               [record] (="));
  WRITE(TO, 2);
  PRINTSTRING(_imp_str_literal(")= '"));
      /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  PRINTSTRING();
  PRINTSTRING(_imp_str_literal("'"));
  NEWLINE();
  TO = TYPEOF(V3);
  PRINTSTRING(_imp_str_literal("typeof(v3)                 [byte] (="));
  WRITE(TO, 2);
  PRINTSTRING(_imp_str_literal(")= '"));
      /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  PRINTSTRING();
  PRINTSTRING(_imp_str_literal("'"));
  NEWLINE();
  TO = TYPEOF(V4);
  PRINTSTRING(_imp_str_literal("typeof(v4)             [longreal] (="));
  WRITE(TO, 2);
  PRINTSTRING(_imp_str_literal(")= '"));
      /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  PRINTSTRING();
  PRINTSTRING(_imp_str_literal("'"));
  NEWLINE();
  NEWLINE();
  SHOWRESULTS(_imp_str_literal("typeof(v6_f1)      [shortinteger]"),
              TYPEOF(V6.F1));
  SHOWRESULTS(_imp_str_literal("typeof(v6_f2)              [real]"),
              TYPEOF(V6.F2));
  SHOWRESULTS(_imp_str_literal("typeof(v6_f3)          [longreal]"),
              TYPEOF(V6.F3));
  SHOWRESULTS(_imp_str_literal("typeof(v6_f4 (0))          [byte]"),
              TYPEOF(V6.F4[0]));
  SHOWRESULTS(_imp_str_literal("typeof(v7  (1,3))      [longreal]"),
              TYPEOF(V7[1][3]));
  SHOWRESULTS(_imp_str_literal("typeof(v8(0,1,7))          [byte]"),
              TYPEOF(V8[0][1][7]));
  SHOWRESULTS(_imp_str_literal("typeof(v7)        [longrealarray]"),
              TYPEOF(V7));
  SHOWRESULTS(_imp_str_literal("typeof(v8)            [bytearray]"),
              TYPEOF(V8));
  SHOWRESULTS(_imp_str_literal("typeof(v9)          [recordarray]"),
              TYPEOF(V9));
  SHOWRESULTS(_imp_str_literal("typeof(v6_f4)         [bytearray]"),
              TYPEOF(V6.F4));
  SHOWRESULTS(_imp_str_literal("typeof(v10)                [name]"),
              TYPEOF(V10));
  V10 = &V6.F1;
  SHOWRESULTS(_imp_str_literal("typeof(v10==v6_f1)         [name]"), 15);
  NEWLINE();
  _imp_leave();
  exit(0);
  return (0);
}
