#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  static int Swopped = 0;
  typedef struct F1 {
    int I;
  } F1;
  typedef struct F2 {
    int I;
    F1 F;
  } F2;
  typedef struct F3 {
    int K;
    F2 F;
  } F3;
  int I;
  int Fail;
  int J;
  int K;
  void Test(int Exp, int Swexp, int Act) {
    if (!Swopped) {
      if (Exp == Act) Swopped = -1;
      if (Swexp == Act) Swopped = 1;
    }
    if (Swopped == -1 && Exp == Act) return;
    if (Swopped == 1 && Swexp == Act) return;
    Printstring(_imp_str_literal("expected="));
    Write(Exp, 5);
    Printstring(_imp_str_literal(" actual="));
    Write(Act, 5);
    Newline();
    Fail++;
    _imp_monitor();
  }
  static const _imp_string Tx[3 /*-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;
  R1.B3 = 5;
  Test(5, 0x05000000, R1.I);
  Test(5, 0x05000000, R1.I + J);
  R2.F = 1;
  R2.F = 6;
  Test(6, 0x06000001, R2.F);
  R3.F = 1;
  R3.F = 6;
  Test(6, 0x06000001, R3.F);
  if (!Fail) Printstring(_imp_join(_imp_str_literal("Test ok "), Tx[Swopped]));
  exit(0);
  return (1);
}
