(command.CommandList
  children: [
    (C {<rm>} {<-f>} {<keyname.c>})
    (command.Simple
      words: [
        {<'/usr/bin/print'>}
        {
          (DQ <'#include\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
            <curses_inc.h> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <Id.Lit_BadBackslash '\\'> <n>
          )
        }
      ]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<keyname.c>})]
      more_env: []
      do_fork: T
    )
    (command.Simple
      words: [
        {<'/usr/bin/print'>}
        {
          (DQ <'static\tchar\t*keystrings[] ='> <Id.Lit_BadBackslash '\\'> <n> 
            <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'t{'>
          )
        }
      ]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<keyname.c>})]
      more_env: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<grep>} {<-v>} {(SQ <'KEY_F('>)} {<keycaps>})
                (C {<awk>} {(SQ <'{ print $5, $4 }'>)})
                (C {<sed>} {<-e>} {(SQ <'s/,//g'>)} {<-e>} {(SQ <'s/KEY_//'>)})
              ]
              negated: F
              stderr_indices: []
            )
            (C {<echo>} {(SQ <'0401 BREAK\\n0530 SRESET\\n0531 RESET'>)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
        (C {<sort>} {<-n>})
        (command.Simple
          words: [
            {<awk>}
            {
              (SQ <'\n'> <'    {\n'> <'\tprint "\\t\\t    \\"" $2 "\\",\t/* " $1 " */"\n'> <'    }\n'>)
            }
          ]
          redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<keyname.c>})]
          more_env: []
          do_fork: T
        )
      ]
      negated: F
      stderr_indices: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<tail>} {<-1>} {<keyname.c>})
                      (C {<awk>} {<-F> (SQ <'"'>)} {(SQ <'{print $2}'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [231]
        )
      ]
      redirects: []
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<Id.KW_Bang '!'>}
              here_end_span_id: 338
              stdin_parts: [
                <'\t\t};\n'>
                <'\n'>
                <'char\t*\n'>
                <'keyname(int key)\n'>
                <'{\n'>
                <'\tstatic\tchar\tbuf[16];\n'>
                <'\n'>
                <'\tif (key >= 0400) {\n'>
                <'\t\tint\ti;\n'>
                <'\n'>
                <'\t\tif ((key == 0400) || (key > KEY_'>
                (${ Id.VSub_Name LAST)
                <'))\n'>
                <'\t\t\treturn ('>
                <Id.Right_DoubleQuote '"'>
                <'UNKNOWN KEY'>
                <Id.Right_DoubleQuote '"'>
                <');\n'>
                <'\t\tif (key > 0507)\n'>
                <'\t\t\ti = key - (0401 + ((0507 - 0410) + 1));\n'>
                <'\t\telse\n'>
                <'\t\t\tif (key >= 0410) {\n'>
                <'\t\t\t\t(void) sprintf(buf, '>
                <Id.Right_DoubleQuote '"'>
                <'KEY_F(%d)'>
                <Id.Right_DoubleQuote '"'>
                <', key - 0410);\n'>
                <'\t\t\t\tgoto ret_buf;\n'>
                <'\t\t\t} else\n'>
                <'\t\t\t\ti = key - 0401;\n'>
                <'\t\t(void) sprintf(buf, '>
                <Id.Right_DoubleQuote '"'>
                <'KEY_%s'>
                <Id.Right_DoubleQuote '"'>
                <', keystrings[i]);\n'>
                <'\t\tgoto ret_buf;\n'>
                <'\t}\n'>
                <'\n'>
                <'\tif (key >= 0200) {\n'>
                <'#ifdef SYSV\n'>
                <'\t\tif (SHELLTTYS.c_cflag & CS8)\n'>
                <'#else\t/* SYSV */\n'>
                <'\t\tif (SHELLTTY.c_cflag & CS8)\n'>
                <'#endif\t/* SYSV */\n'>
                <'\t\t\t(void) sprintf(buf, '>
                <Id.Right_DoubleQuote '"'>
                <'%c'>
                <Id.Right_DoubleQuote '"'>
                <', key);\n'>
                <'\t\telse\n'>
                <'\t\t\t(void) sprintf(buf, '>
                <Id.Right_DoubleQuote '"'>
                <'M-%s'>
                <Id.Right_DoubleQuote '"'>
                <', unctrl(key & 0177));\n'>
                <'\t\tgoto ret_buf;\n'>
                <'\t}\n'>
                <'\n'>
                <'\tif (key < 0) {\n'>
                <'\t\t(void) sprintf(buf, '>
                <Id.Right_DoubleQuote '"'>
                <'%d'>
                <Id.Right_DoubleQuote '"'>
                <', key);\n'>
                <'ret_buf:\n'>
                <'\t\treturn (buf);\n'>
                <'\t}\n'>
                <'\n'>
                <'\treturn (unctrl(key));\n'>
                <'}\n'>
              ]
            )
        )
        (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<keyname.c>})
      ]
      more_env: []
      do_fork: T
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)