#include <perms.h>
void Bilbo(void) {
  int I;
  int J;
  int Max;
  _imp_string Varname;
  _imp_string Varvalue;
  Debugstring;
  Debugnewline;
  Debugstring;
  Debugnewline;
  Debugnewline;
  for (I = 0; I <= Getargcount - 1; I++) {
    Debugstring;
    Debugnewline;
  }
  Debugnewline;
  if (Getargcount == 1)
    _imp_signal(10, 1, (Getargcount - 1), _imp_str_literal(""));
  Openoutput(1, Getarg);
  Selectoutput(1);
  Printstring(
      _imp_join(_imp_str_literal("argc='"),
                _imp_join(Itos(Getargcount, 0), _imp_str_literal("'"))));
  Newline();
  Printstring(
      _imp_join(_imp_str_literal("envc='"),
                _imp_join(Itos(Getenvcount, 0), _imp_str_literal("'"))));
  Newline();
  Newline();
  J = *Length(Itos(Getargcount, 0));
  for (I = 0; I <= Getargcount - 1; I++) {
    Printstring(_imp_join(_imp_str_literal("Arg("),
                          _imp_join(Itos(I, J), _imp_str_literal(") = '"))));
    Printstring(_imp_join(Getarg, _imp_str_literal("'")));
    Newline();
  }
  Newline();
  Max = 0;
  for (I = 1; I <= Getenvcount; I++) {
    Varname = Getenvname;
    if (*Length(Varname) > Max) Max = *Length(Varname) + 1;
  }
  J = *Length(Itos(Getenvcount, 0));
  for (I = 1; I <= Getenvcount; I++) {
    Varname = Getenvname;
    Varvalue = Getenv;
    Debugstring;
    Debugstring;
    Debugspaces;
    Debugstring;
    if (*Length(Varvalue) != 0)
      Debugstring;
    else
      Debugstring;
    Debugnewline;
    Printstring(_imp_join(_imp_str_literal("("),
                          _imp_join(Itos(I, J), _imp_str_literal(") "))));
    Printstring(Varname);
    Spaces(Max - *Length(Varname));
    Printstring(_imp_str_literal(" = "));
    if (*Length(Varvalue) != 0)
      Printstring(_imp_join(_imp_str_literal("'"),
                            _imp_join(Varvalue, _imp_str_literal("'"))));
    else
      Printstring(
          _imp_str_literal("'        **** too long for an IMP string'"));
    Newline();
  }
  Debugnewline;
  Newline();
}
