#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  float Getreal(int X) { return (*Real(Addr(X))); }
  void Setrealbybytes(int X, float *R) {
    *Byteinteger(Addr(*R) + 0) = X & 255;
    *Byteinteger(Addr(*R) + 1) = ((unsigned)X >> 8) & 255;
    *Byteinteger(Addr(*R) + 2) = ((unsigned)X >> 16) & 255;
    *Byteinteger(Addr(*R) + 3) = ((unsigned)X >> 24) & 255;
  }
  void Setrealbyinteger(int X, float *R) { *Integer(Addr(*R)) = X; }
  void Wrn(int X) {
    if (X >= 10)
      Printsymbol(X - 10 + 'A');
    else
      Printsymbol(X + '0');
  }
  void Wrb(int X) {
    Wrn(((unsigned)X >> 4) & 15);
    Wrn(X & 15);
  }
  void Wrhex(int X) {
    Wrb(*Byteinteger(Addr(X) + 3));
    Wrb(*Byteinteger(Addr(X) + 2));
    Wrb(*Byteinteger(Addr(X) + 1));
    Wrb(*Byteinteger(Addr(X) + 0));
  }
  float Real = 1851608064.0;
  Printstring(_imp_str_literal("real: "));
  Print(Real, 16);
  Newline();
  Wrhex(*Integer(Addr(Real)));
  Newlines(2);
  *Integer(Addr(Real)) = 0x4EDCBA98;
  Printstring(_imp_str_literal("real: "));
  Print(Real, 16);
  Newline();
  Wrhex(*Integer(Addr(Real)));
  Newlines(2);
  Setrealbybytes(0x4EDCBA98, Real);
  Printstring(_imp_str_literal("real: "));
  Print(Real, 16);
  Newline();
  Wrhex(*Integer(Addr(Real)));
  Newlines(2);
  Setrealbyinteger(0x4EDCBA98, Real);
  Printstring(_imp_str_literal("real: "));
  Print(Real, 16);
  Newline();
  Wrhex(*Integer(Addr(Real)));
  Newlines(2);
  Real = Getreal(0x4EDCBA98);
  Printstring(_imp_str_literal("real: "));
  Print(Real, 16);
  Newline();
  Wrhex(*Integer(Addr(Real)));
  Newlines(2);
  Printstring(_imp_str_literal("sizeof(real) = "));
  Write(Sizeof(Real), 0);
  Newline();
  exit(0);
  return (1);
}
