#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_enter();
  static int SWOPPED = 0;

  typedef struct F1 {
    int I;

  } F1;

  typedef struct F2 {
    F1 F;
    int I;

  } F2;

  typedef struct F3 {
    F2 F;
    int K;

  } F3;
  int I;
  int FAIL;
  int J;
  int K;
  auto void TEST(int EXP, int SWEXP, int ACT) {
    _imp_enter();
    if (SWOPPED == 0) {
      if (EXP == ACT) SWOPPED = -1;
      if (SWEXP == ACT) SWOPPED = 1;
    }
    if (SWOPPED == -1 && EXP == ACT) {
      _imp_leave();
      return;
    }
    if (SWOPPED == 1 && SWEXP == ACT) {
      _imp_leave();
      return;
    }
    PRINTSTRING(_imp_str_literal("expected="));
    WRITE(EXP, 5);
    PRINTSTRING(_imp_str_literal(" actual="));
    WRITE(ACT, 5);
    NEWLINE();
    FAIL = FAIL + 1;
    _imp_monitor(0);
    _imp_leave();
  }
  const _imp_string TX[1 - -1 + 1] = {_imp_str_literal(""),
                                      _imp_str_literal(""),
                                      _imp_str_literal("(swopped)")};
  F1 R1;
  F2 R2;
  F3 R3;
  FAIL = 0;
  J = 0;
L1:;
  R1.I = 0;
  K = R1.I + J; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  R1.= 5;
  TEST(5, 0x05000000, R1.I);
  TEST(5, 0x05000000, R1.I + J);
  R2.F.I = 1; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  R2.F.= 6;
  TEST(6, 0x06000001, R2.F.I);
  R3.F.F.I = 1; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  R3.F.F.= 6;
  TEST(6, 0x06000001, R3.F.F.I);
  if (FAIL == 0)
    PRINTSTRING(_imp_join(_imp_str_literal("Test ok "), TX[SWOPPED]));
  _imp_leave();
  exit(0);
  return (0);
}
