(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:srcversion)
          op: Equal
          rhs: {(SQ <'$MirOS: src/bin/mksh/Build.sh,v 1.697 2016/03/04 18:28:39 tg Exp $'>)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:LC_ALL) op:Equal rhs:{(C)})]
    )
    (C {(export)} {(LC_ALL)})
    (command.Case
      to_match: {($ VSub_DollarName '$ZSH_VERSION') (Lit_Other ':') ($ VSub_DollarName '$VERSION')}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other ':') (zsh) (Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ZSH_VERSION) op:Equal rhs:{(2)})]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(test)} {(-n)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <VSub_Name ZSH_VERSION>
                            suffix_op: (suffix_op.Unary op_id:VTest_Plus arg_word:{(x)})
                          )
                        )
                      }
                    )
                    (command.Subshell
                      command_list: (command.CommandList children:[(C {(emulate)} {(sh)})])
                      redirects: [
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(/dev/null)}
                        )
                        (redir.Redir
                          op: <Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(emulate)} {(sh)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:NULLCMD) op:Equal rhs:{(Lit_Other ':')})]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [{(test)} {(-d)} {(/usr/xpg4/bin/.)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATH)
                  op: Equal
                  rhs: {(/usr/xpg4/bin) (Lit_Other ':') ($ VSub_DollarName '$PATH')}
                )
              ]
            )
            (C {(export)} {(PATH)})
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:nl) op:Equal rhs:{(SQ <'\n'>)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:safeIFS) op:Equal rhs:{(SQ <'\t'>)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:safeIFS)
          op: Equal
          rhs: {(DQ (' ') ($ VSub_DollarName '$safeIFS') ($ VSub_DollarName '$nl'))}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IFS)
          op: Equal
          rhs: {($ VSub_DollarName '$safeIFS')}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:allu)
          op: Equal
          rhs: {(QWERTYUIOPASDFGHJKLZXCVBNM)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alll)
          op: Equal
          rhs: {(qwertyuiopasdfghjklzxcvbnm)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:alln) op:Equal rhs:{(0123456789)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alls)
          op: Equal
          rhs: {(______________________________________________________________)}
        )
      ]
    )
    (command.ShFunction
      name: genopt_die
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_Number '$1'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ ('E: ') ($ VSub_Star '$*'))}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ("E: in '") ($ VSub_DollarName '$srcfile') ("': '") 
                            ($ VSub_DollarName '$line') ("'")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                  ]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {(echo)}
                    {
                      (DQ ("E: invalid input in '") ($ VSub_DollarName '$srcfile') ("': '") 
                        ($ VSub_DollarName '$line') ("'")
                      )
                    }
                  ]
                  redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                )
              ]
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$bn') (.gen))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: genopt_soptc
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:optc)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                  (C {(sed)} {(SQ <'s/^[<>]\\(.\\).*$/\\1/'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$optc'))} {(Lit_Equals '=')} {(x) (SQ <'|'>)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:optclo)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$optc'))})
                                  (C {(tr)} {($ VSub_DollarName '$allu')} {($ VSub_DollarName '$alll')})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_DollarName '$optc'))} {(Lit_Equals '=')} 
                          {(x) (DQ ($ VSub_DollarName '$optclo'))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:islo) op:Equal rhs:{(1)})]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:islo) op:Equal rhs:{(0)})]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sym)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                  (C {(sed)} {(SQ <'s/^[<>]/|/'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_str)
                  op: Equal
                  rhs: 
                    {($ VSub_DollarName '$o_str') ($ VSub_DollarName '$nl') 
                      (DQ ('<') ($ VSub_DollarName '$optclo') ($ VSub_DollarName '$islo') 
                        ($ VSub_DollarName '$sym')
                      )
                    }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: genopt_scond
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(x) ($ VSub_DollarName '$cond')}
              arms: [
                (case_arm
                  pat_list: [{(x)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:cond) op:Equal rhs:(word.Empty))]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(x) (Lit_Star '*') (SQ <' '>) (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_Backtick '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_DollarName '$cond'))})
                                          (C {(sed)} {(SQ <'s/^ //'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: Equal
                          rhs: {(DQ ('#if ') ($ VSub_DollarName '$cond'))}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(x) (SQ <'!'>) (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_Backtick '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_DollarName '$cond'))})
                                          (C {(sed)} {(SQ <'s/^!//'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: Equal
                          rhs: {(DQ ('#ifndef ') ($ VSub_DollarName '$cond'))}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(x) (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: Equal
                          rhs: {(DQ ('#ifdef ') ($ VSub_DollarName '$cond'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_genopt
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcfile)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-f)} {(DQ ($ VSub_DollarName '$srcfile'))})
                (C {(genopt_die)} {(Source)} {(file)} 
                  {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) (srcfile)} {(not)} {(set.)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:bn)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(basename)} {(DQ ($ VSub_DollarName '$srcfile'))})
                                  (C {(sed)} {(SQ <'s/.opt$//'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_hdr)
                  op: Equal
                  rhs: {(SQ <'/* +++ GENERATED FILE +++ DO NOT EDIT +++ */'>)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:o_gen) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:o_str) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:o_sym) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ddefs) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:state) op:Equal rhs:{(0)})]
            )
            (command.Simple
              words: [{(exec)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$srcfile'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:IFS) op:Equal rhs:(word.Empty))]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{(read)} {(line)}]
                      more_env: [(env_pair name:IFS val:(word.Empty))]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: Equal
                          rhs: {($ VSub_DollarName '$safeIFS')}
                        )
                      ]
                    )
                    (command.Case
                      to_match: 
                        {($ VSub_DollarName '$state') (Lit_Other ':') ($ VSub_DollarName '$line')}
                      arms: [
                        (case_arm
                          pat_list: [{(2) (Lit_Other ':') (SQ <'|'>) (Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_sym)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_Backtick '`'>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                                  (C {(sed)} {(SQ <'s/^.//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#undef F0'))
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#undef FN'))
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$ddefs')}
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:state)
                                  op: Equal
                                  rhs: {(3)}
                                )
                              ]
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [{(1) (Lit_Other ':') (Lit_Other '@') (Lit_Other '@')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#endif'))
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#ifndef F0'))
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#define F0 FN'))
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#endif'))
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:state)
                                  op: Equal
                                  rhs: {(2)}
                                )
                              ]
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Star '*') (Lit_Other ':') (Lit_Other '@') (Lit_Other '@') 
                              (Lit_Star '*')
                            }
                          ]
                          action: [(C {(genopt_die)})]
                        )
                        (case_arm
                          pat_list: [
                            {(0) (Lit_Other ':') (/) 
                              (word_part.EscapedLiteral
                                token: <Lit_EscapedChar '\\*'>
                              ) (-)
                            }
                            {(0) (Lit_Other ':') 
                              (word_part.EscapedLiteral
                                token: <Lit_EscapedChar '\\ '>
                              ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\*'>) (Lit_Star '*')
                            }
                            {(0) (Lit_Other ':')}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_hdr)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_hdr') ($ VSub_DollarName '$nl') 
                                      ($ VSub_DollarName '$line')
                                    }
                                )
                              ]
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [
                            {(0) (Lit_Other ':') (Lit_Other '@') (Lit_Star '*')}
                            {(1) (Lit_Other ':') (Lit_Other '@') (Lit_Star '*')}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:sym)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_Backtick '`'>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                                  (C {(sed)} {(SQ <'s/^@//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {($ VSub_DollarName '$state')} {(Lit_Equals '=')} 
                                          {(0)}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:o_gen)
                                          op: Equal
                                          rhs: 
                                            {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                              (DQ ('#if defined(') ($ VSub_DollarName '$sym') (')'))
                                            }
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:o_gen)
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                          (DQ ('#elif defined(') ($ VSub_DollarName '$sym') (')'))
                                        }
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ddefs)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$ddefs') ($ VSub_DollarName '$nl') 
                                        ('#undef ') ($ VSub_DollarName '$sym')
                                      )
                                    }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:state)
                                  op: Equal
                                  rhs: {(1)}
                                )
                              ]
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [
                            {(0) (Lit_Other ':') (Lit_Star '*')}
                            {(3) (Lit_Other ':') (Lit_Star '*')}
                          ]
                          action: [(C {(genopt_die)})]
                        )
                        (case_arm
                          pat_list: [{(1) (Lit_Other ':') (Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      ($ VSub_DollarName '$line')
                                    }
                                )
                              ]
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [
                            {(2) (Lit_Other ':') (SQ <'<'>) (Lit_Star '*') (SQ <'|'>) (Lit_Star '*')}
                          ]
                          action: [(C {(genopt_soptc)})]
                        )
                        (case_arm
                          pat_list: [
                            {(2) (Lit_Other ':') (SQ <'>'>) (Lit_Star '*') (SQ <'|'>) (Lit_Star '*')}
                          ]
                          action: [
                            (C {(genopt_soptc)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cond)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_Backtick '`'>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                                  (C {(sed)} {(SQ <'s/^[^|]*|//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                            (C {(genopt_scond)})
                            (command.Case
                              to_match: {($ VSub_DollarName '$optc')}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ <'|'>)}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:optc)
                                          op: Equal
                                          rhs: {(0)}
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Star '*')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:optc)
                                          op: Equal
                                          rhs: 
                                            {(word_part.EscapedLiteral token:<Lit_EscapedChar "\\'">) 
                                              ($ VSub_DollarName '$optc') (word_part.EscapedLiteral token:<Lit_EscapedChar "\\'">)
                                            }
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{(read)} {(line)}]
                                  more_env: [(env_pair name:IFS val:(word.Empty))]
                                )
                                (C {(genopt_die)} {(Unexpected)} {(EOF)})
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$safeIFS')}
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:o_gen)
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                          (DQ ($ VSub_DollarName '$cond'))
                                        }
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ($ VSub_DollarName '$line') (', ') 
                                        ($ VSub_DollarName '$optc') (')')
                                      )
                                    }
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:o_gen)
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                          (DQ ('#endif'))
                                        }
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Case
              to_match: {($ VSub_DollarName '$state') (Lit_Other ':') ($ VSub_DollarName '$o_sym')}
              arms: [
                (case_arm
                  pat_list: [{(3) (Lit_Other ':')}]
                  action: [(C {(genopt_die)} {(Expected)} {(optc)} {(sym)} {(at)} {(EOF)})]
                )
                (case_arm pat_list:[{(3) (Lit_Other ':') (Lit_Star '*')}])
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [(C {(genopt_die)} {(Missing)} {(EOF)} {(marker)})]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ($ VSub_DollarName '$o_str'))})
                (C {(sort)})
                (command.WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(read)} {(x)} {(opts)} {(cond)}]
                          more_env: [(env_pair name:IFS val:{(SQ <'|'>)})]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: Equal
                              rhs: {($ VSub_DollarName '$safeIFS')}
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$x'))})
                            (command.ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (C {(genopt_scond)})
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                            (C {(echo)} {(DQ ($ VSub_DollarName '$cond'))})
                          ]
                        )
                        (C {(echo)} 
                          {
                            (DQ (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) 
                              ($ VSub_DollarName '$opts') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                            (C {(echo)} {(DQ ('#endif'))})
                          ]
                        )
                      ]
                    )
                )
                (command.BraceGroup
                  children: [
                    (C {(echo)} {(DQ ($ VSub_DollarName '$o_hdr'))})
                    (C {(echo)} 
                      {(DQ ('#ifndef ') ($ VSub_DollarName '$o_sym') ($ VSub_DollarName '$o_gen'))}
                    )
                    (C {(echo)} {(DQ ('#else'))})
                    (C {(cat)})
                    (C {(echo)} {(DQ ('#undef ') ($ VSub_DollarName '$o_sym'))})
                    (C {(echo)} {(DQ ('#endif'))})
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$bn') (.gen))}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: Equal
                  rhs: {($ VSub_DollarName '$safeIFS')}
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$BUILDSH_RUN_GENOPT'))} {(Lit_Equals '=')} 
                  {(x) (DQ (1))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(KW_Set set)} {(x)} {(-G)} {(DQ ($ VSub_DollarName '$srcfile'))}) (C {(shift)})]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ (-G))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(do_genopt)} {(DQ ($ VSub_Number '$2'))})
            (command.ControlFlow
              token: <ControlFlow_Exit exit>
              arg_word: {($ VSub_QMark '$?')}
            )
          ]
        )
      ]
    )
    (C {(echo)} {(DQ ('For the build logs, demonstrate that /dev/null and /dev/tty exist:'))})
    (C {(ls)} {(-l)} {(/dev/null)} {(/dev/tty)})
    (command.ShFunction
      name: v
      body: 
        (command.BraceGroup
          children: [
            (C {($ VSub_DollarName '$e')} {(DQ ($ VSub_Star '$*'))})
            (C {(eval)} {(DQ ($ VSub_At '$@'))})
          ]
        )
    )
    (command.ShFunction
      name: vv
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:_c) op:Equal rhs:{($ VSub_Number '$1')})]
            )
            (C {(shift)})
            (command.Simple
              words: [
                {($ VSub_DollarName '$e')}
                {
                  (DQ (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) (' ') ($ VSub_Star '$*'))
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})]
            )
            (command.Simple
              words: [{(eval)} {(DQ ($ VSub_At '$@'))}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(vv.out)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
            (command.Simple
              words: [{(sed)} {(DQ ('s\x07^\x07') (${ VSub_Name _c) (' \x07'))}]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(vv.out)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: vq
      body: (command.BraceGroup children:[(C {(eval)} {(DQ ($ VSub_At '$@'))})])
    )
    (command.ShFunction
      name: rmf
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: _f
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ VSub_DollarName '$_f')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Build.sh)}
                            {(check.pl)}
                            {(check.t)}
                            {(dot.mkshrc)}
                            {(Lit_Star '*') (.1)}
                            {(Lit_Star '*') (.c)}
                            {(Lit_Star '*') (.h)}
                            {(Lit_Star '*') (.ico)}
                            {(Lit_Star '*') (.opt)}
                          ]
                        )
                        (case_arm
                          pat_list: [{(Lit_Star '*')}]
                          action: [(C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$_f'))})]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tcfn) op:Equal rhs:{(no)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:bi) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ui) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ao) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fx) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:me)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [(C {(basename)} {(DQ ($ VSub_Number '$0'))})]
                  )
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:orig_CFLAGS)
          op: Equal
          rhs: {($ VSub_DollarName '$CFLAGS')}
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(x)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:oldish_ed)
          op: Equal
          rhs: {(stdout-ed) (Lit_Comma ',') (no-stderr-ed)}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(command.Sentence child:(C {(test)} {(-t)} {(1)}) terminator:<Op_Semi ';'>)]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:bi) op:Equal rhs:{(SQ <'\x1b[1m'>)})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ui) op:Equal rhs:{(SQ <'\x1b[4m'>)})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ao) op:Equal rhs:{(SQ <'\x1b[0m'>)})]
            )
          ]
        )
      ]
    )
    (command.ShFunction
      name: upper
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(echo)} {(Lit_Other ':') (DQ ($ VSub_At '$@'))})
                (C {(sed)} {(SQ <'s/^://'>)})
                (C {(tr)} {($ VSub_DollarName '$alll')} {($ VSub_DollarName '$allu')})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_testdone
      body: 
        (command.BraceGroup
          children: [
            (C {(eval)} {(HAVE_) ($ VSub_DollarName '$fu') (Lit_Equals '=') ($ VSub_DollarName '$fv')})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fr) op:Equal rhs:{(no)})]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$fv')})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fr) op:Equal rhs:{(yes)})]
                )
              ]
            )
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ($ VSub_DollarName '$bi') ('==> ') ($ VSub_DollarName '$fd') (...) 
                  ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$ui') ($ VSub_DollarName '$fr') ($ VSub_DollarName '$ao') 
                  ($ VSub_DollarName '$fx')
                )
              }
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fx) op:Equal rhs:(word.Empty))]
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_cache
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:f) op:Equal rhs:{($ VSub_Number '$1')})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fu)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [(C {(upper)} {($ VSub_DollarName '$f')})]
                          )
                      )
                    }
                )
              ]
            )
            (C {(eval)} 
              {(Lit_VarLike 'fv=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) (HAVE_) 
                ($ VSub_DollarName '$fu')
              }
            )
            (command.Case
              to_match: {($ VSub_DollarName '$fv')}
              arms: [
                (case_arm
                  pat_list: [{(0)} {(1)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fx)
                          op: Equal
                          rhs: {(SQ <' (cached)'>)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: ac_testinit
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(ac_cache)} {($ VSub_Number '$1')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Equals '=')} {(x) (DQ ('!'))})
                        (C {(shift)})
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Equals '=')} {(x) (DQ )})
                        (C {(shift)})
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fd)
                          op: Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <VSub_Number 3>
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: VTest_Hyphen
                                    arg_word: {($ VSub_DollarName '$f')}
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (C {(ac_testdone)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fc) op:Equal rhs:{(0)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Equals '=')} {(x) (DQ )})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ft) op:Equal rhs:{(1)})]
                    )
                  ]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Equals '=')} 
                              {(x) (DQ ('!'))}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fc) op:Equal rhs:{(1)})]
                        )
                        (C {(shift)})
                      ]
                    )
                  ]
                )
                (C {(eval)} 
                  {(Lit_VarLike 'ft=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                    (HAVE_) 
                    (command_sub
                      left_token: <Left_Backtick '`'>
                      command_list: 
                        (command.CommandList
                          children: [(C {(upper)} {($ VSub_Number '$2')})]
                        )
                    )
                  }
                )
                (C {(shift)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fd)
                  op: Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <VSub_Number 3>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: VTest_Hyphen
                            arg_word: {($ VSub_DollarName '$f')}
                          )
                      )
                    }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {($ VSub_DollarName '$fc')} {(Lit_Equals '=')} 
                          {(DQ ($ VSub_DollarName '$ft'))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: Equal
                          rhs: {($ VSub_Number '$2')}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fx)
                          op: Equal
                          rhs: {(SQ <' (implied)'>)}
                        )
                      ]
                    )
                    (C {(ac_testdone)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
            (C {($ VSub_DollarName '$e')} {(...)} {($ VSub_DollarName '$fd')})
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.ShFunction
      name: ac_testnnd
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ ('!'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fr) op:Equal rhs:{(1)})]
                    )
                    (C {(shift)})
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fr) op:Equal rhs:{(0)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(ac_testinit)} {(DQ ($ VSub_At '$@'))})
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})]
            )
            (C {(vv)} {(SQ <']'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c ') 
                  ($ VSub_DollarName '$LIBS') (' ') ($ VSub_DollarName '$ccpr')
                )
              }
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Equals '=')} {(no)})
                (C {(test)} {(-f)} {(a.out)})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tcfn) op:Equal rhs:{(a.out)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Equals '=')} {(no)})
                (C {(test)} {(-f)} {(a.exe)})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tcfn) op:Equal rhs:{(a.exe)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Equals '=')} {(no)})
                (C {(test)} {(-f)} {(conftest.exe)})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tcfn) op:Equal rhs:{(conftest.exe)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Equals '=')} {(no)})
                (C {(test)} {(-f)} {(conftest)})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tcfn) op:Equal rhs:{(conftest)})]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-f)} {($ VSub_DollarName '$tcfn')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$fr')})
                        (command.ShAssignment
                          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(1)})]
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$fr')})
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(1)})]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:vscan) op:Equal rhs:(word.Empty))]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {($ VSub_DollarName '$phase')} {(Lit_Equals '=')} {(u)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(gcc)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: Equal
                              rhs: {(SQ <'unrecogni[sz]ed'>)}
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(hpcc)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: Equal
                              rhs: {(SQ <unsupported>)}
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(pcc)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: Equal
                              rhs: {(SQ <unsupported>)}
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(sunpro)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: Equal
                              rhs: {(SQ <'-e ignored -e turned.off'>)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$vscan'))})
                (command.Simple
                  words: [{(grep)} {($ VSub_DollarName '$vscan')} {(vv.out)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fv)
                      op: Equal
                      rhs: {($ VSub_DollarName '$fr')}
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.ShFunction
      name: ac_testn
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(ac_testnnd)} {(DQ ($ VSub_At '$@'))})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(rmf)} {(conftest.c)} {(conftest.o)} {(${ VSub_Name tcfn) (Lit_Star '*')} {(vv.out)})
            (C {(ac_testdone)})
          ]
        )
    )
    (command.ShFunction
      name: ac_ifcpp
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:expr)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.Simple
              words: [{(ac_testn)} {(DQ ($ VSub_At '$@'))}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 2453
                  stdin_parts: [
                    ('#include <unistd.h>\n')
                    ('extern int thiswillneverbedefinedIhope(void);\n')
                    ('int main(void) { return (isatty(0) +\n')
                    ('#')
                    ($ VSub_DollarName '$expr')
                    ('\n')
                    ('    0\n')
                    ('#else\n')
                    ('/* force a failure: expr is false */\n')
                    ('    thiswillneverbedefinedIhope()\n')
                    ('#endif\n')
                    ('    ); }\n')
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ ('!'))})
                (C {(shift)})
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:f) op:Equal rhs:{($ VSub_Number '$1')})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fu)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [(C {(upper)} {($ VSub_DollarName '$f')})]
                          )
                      )
                    }
                )
              ]
            )
            (C {(eval)} 
              {(Lit_VarLike 'fv=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) (HAVE_) 
                ($ VSub_DollarName '$fu')
              }
            )
            (C {(test)} {(x) (DQ ($ VSub_DollarName '$fv'))} {(Lit_Equals '=')} {(x) (DQ (1))})
          ]
        )
    )
    (command.ShFunction
      name: add_cppflags
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_Star '$*'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_cppflags
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fu)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{($ VSub_Number '$2')})]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Equals '=')} {(x) (DQ )})
                (C {(eval)} 
                  {(Lit_VarLike 'fv=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                    (HAVE_) ($ VSub_DollarName '$fu')
                  }
                )
              ]
            )
            (C {(add_cppflags)} 
              {(-DHAVE_) ($ VSub_DollarName '$fu') (Lit_Equals '=') ($ VSub_DollarName '$fv')}
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_test
      body: 
        (command.BraceGroup
          children: [(C {(ac_testn)} {(DQ ($ VSub_At '$@'))}) (C {(ac_cppflags)})]
        )
    )
    (command.ShFunction
      name: ac_flags
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ (-))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(shift)})
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:hf) op:Equal rhs:{(1)})]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:hf) op:Equal rhs:{(0)})]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fa) op:Equal rhs:{($ VSub_Number '$1')})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:vn) op:Equal rhs:{($ VSub_Number '$2')})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:f) op:Equal rhs:{($ VSub_Number '$3')})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ft) op:Equal rhs:{($ VSub_Number '$4')})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fl) op:Equal rhs:{($ VSub_Number '$5')})]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$ft'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ft)
                      op: Equal
                      rhs: {(DQ ('if ') ($ VSub_DollarName '$f') (' can be used'))}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_CFLAGS)
                  op: Equal
                  rhs: {($ VSub_DollarName '$CFLAGS')}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CFLAGS)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$f'))}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$fl'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:save_LDFLAGS)
                          op: Equal
                          rhs: {($ VSub_DollarName '$LDFLAGS')}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:LDFLAGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$fl'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$hf')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(ac_testn)} {(can_) ($ VSub_DollarName '$vn')} {(SQ )} 
                      {(DQ ($ VSub_DollarName '$ft'))}
                    )
                  ]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {(ac_testn)}
                    {(can_) ($ VSub_DollarName '$vn')}
                    {(SQ )}
                    {(DQ ($ VSub_DollarName '$ft'))}
                  ]
                  redirects: [
                    (redir.HereDoc
                      op: <Redir_DLessDash '<<-'>
                      fd: 16777215
                      here_begin: {(SQ <EOF>)}
                      here_end_span_id: 2793
                      stdin_parts: [
                        ("/* evil apo'stroph in comment test */\n")
                        ('#include <unistd.h>\n')
                        ('int main(void) { return (isatty(0)); }\n')
                      ]
                    )
                  ]
                )
              ]
            )
            (C {(eval)} 
              {(Lit_VarLike 'fv=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                (HAVE_CAN_) 
                (command_sub
                  left_token: <Left_Backtick '`'>
                  command_list: 
                    (command.CommandList
                      children: [(C {(upper)} {($ VSub_DollarName '$vn')})]
                    )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$fl'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(11)} {(Lit_Equals '=')} 
                          {($ VSub_DollarName '$fa') ($ VSub_DollarName '$fv')}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:LDFLAGS)
                              op: Equal
                              rhs: {($ VSub_DollarName '$save_LDFLAGS')}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(11)} {(Lit_Equals '=')} 
                  {($ VSub_DollarName '$fa') ($ VSub_DollarName '$fv')}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CFLAGS)
                      op: Equal
                      rhs: {($ VSub_DollarName '$save_CFLAGS')}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_header
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ ('!'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:na) op:Equal rhs:{(1)})]
                    )
                    (C {(shift)})
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:na) op:Equal rhs:{(0)})]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:hf)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:hv)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$hf'))})
                                  (C {(tr)} {(-d)} {(SQ <'\\012\\015'>)})
                                  (C {(tr)} {(-c)} 
                                    {($ VSub_DollarName '$alll') ($ VSub_DollarName '$allu') 
                                      ($ VSub_DollarName '$alln')
                                    } {($ VSub_DollarName '$alls')}
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('/* NeXTstep bug workaround */'))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})]
            )
            (command.ForEach
              iter_name: i
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ VSub_DollarName '$i')}
                      arms: [
                        (case_arm
                          pat_list: [{(_time)}]
                          action: [
                            (command.Simple
                              words: [{(echo)} {(SQ <'#if HAVE_BOTH_TIME_H'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#include <sys/time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#include <time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#elif HAVE_SYS_TIME_H'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#include <sys/time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#elif HAVE_TIME_H'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#include <time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(echo)} {(SQ <'#endif'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [{(Lit_Star '*')}]
                          action: [
                            (command.Simple
                              words: [{(echo)} {(DQ ('#include <') ($ VSub_DollarName '$i') ('>'))}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{(echo)} {(DQ ('#include <') ($ VSub_DollarName '$hf') ('>'))}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
            )
            (command.Simple
              words: [{(echo)} {(SQ <'#include <unistd.h>'>)}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
            )
            (command.Simple
              words: [{(echo)} {(SQ <'int main(void) { return (isatty(0)); }'>)}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
            )
            (command.Simple
              words: [
                {(ac_testn)}
                {(DQ ($ VSub_DollarName '$hv'))}
                {(DQ )}
                {(DQ ('<') ($ VSub_DollarName '$hf') ('>'))}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (C {(rmf)} {(x)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$na')})
                (C {(ac_cppflags)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: addsrcs
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Equals '=')} {(x) (DQ ('!'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fr) op:Equal rhs:{(0)})]
                    )
                    (C {(shift)})
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fr) op:Equal rhs:{(1)})]
                )
              ]
            )
            (C {(eval)} 
              {(Lit_VarLike 'i=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                ($ VSub_Number '$1')
              }
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$fr')} {(Lit_Equals '=')} {(DQ ($ VSub_DollarName '$i'))})
                (command.Case
                  to_match: {(DQ (' ') ($ VSub_DollarName '$SRCS') (' '))}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Star '*') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) 
                          ($ VSub_Number '$2') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) (Lit_Star '*')
                        }
                      ]
                    )
                    (case_arm
                      pat_list: [{(Lit_Star '*')}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SRCS)
                              op: Equal
                              rhs: {(DQ ($ VSub_DollarName '$SRCS') (' ') ($ VSub_Number '$2'))}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:curdir)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_Backtick '`'>
                command_list: (command.CommandList children:[(C {(pwd)})])
              )
            }
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:srcdir)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [{(dirname)} {(DQ ($ VSub_Number '$0'))}]
                        redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                      )
                    ]
                  )
              )
            }
        )
      ]
    )
    (command.Case
      to_match: {(x) ($ VSub_DollarName '$srcdir')}
      arms: [
        (case_arm
          pat_list: [{(x)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:srcdir) op:Equal rhs:{(.)})]
            )
          ]
        )
        (case_arm
          pat_list: [
            {(Lit_Star '*') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) (Lit_Star '*')}
            {(Lit_Star '*') (DQ ('\t')) (Lit_Star '*')}
            {(Lit_Star '*') (DQ ($ VSub_DollarName '$nl')) (Lit_Star '*')}
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {(Source)}
                {(directory)}
                {(should)}
                {(not)}
                {(contain)}
                {(space)}
                {(or)}
                {(tab)}
                {(or)}
                {(newline.)}
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.Simple
              words: [{(echo)} {(Errors)} {(may)} {(occur.)}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*') (DQ ("'")) (Lit_Star '*')}]
          action: [
            (C {(echo)} {(Source)} {(directory)} {(must)} {(not)} {(contain)} {(single)} {(quotes.)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dstversion)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(sed)} {(-n)} {(SQ <'/define MKSH_VERSION/s/^.*"\\([^"]*\\)".*$/\\1/p'>)} 
                        {(DQ ($ VSub_DollarName '$srcdir') (/sh.h))}
                      )
                    ]
                  )
              )
            }
        )
      ]
    )
    (C {(add_cppflags)} {(-DMKSH_BUILDSH)})
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:e) op:Equal rhs:{(echo)})]
    )
    (command.ShAssignment pairs:[(assign_pair lhs:(sh_lhs_expr.Name name:r) op:Equal rhs:{(0)})])
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:eq) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:pm) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:cm) op:Equal rhs:{(normal)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:optflags) op:Equal rhs:{(-std-compile-opts)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:check_categories) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tfn) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:legacy) op:Equal rhs:{(0)})]
    )
    (command.ForEach
      iter_name: i
      do_arg_iter: T
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ VSub_DollarName '$last') (Lit_Other ':') ($ VSub_DollarName '$i')}
              arms: [
                (case_arm
                  pat_list: [
                    {(c) (Lit_Other ':') (combine)}
                    {(c) (Lit_Other ':') (dragonegg)}
                    {(c) (Lit_Other ':') (llvm)}
                    {(c) (Lit_Other ':') (lto)}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cm)
                          op: Equal
                          rhs: {($ VSub_DollarName '$i')}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:(word.Empty))]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(c) (Lit_Other ':') (Lit_Star '*')}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_DollarName '$me') (": Unknown option -c '") 
                            ($ VSub_DollarName '$i') ("'!")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(o) (Lit_Other ':') (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:optflags)
                          op: Equal
                          rhs: {($ VSub_DollarName '$i')}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:(word.Empty))]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(t) (Lit_Other ':') (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:tfn)
                          op: Equal
                          rhs: {($ VSub_DollarName '$i')}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:(word.Empty))]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-c)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:{(c)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-G)}]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ ($ VSub_DollarName '$me') (": Do not call me with '-G'!"))}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-g)}]
                  action: [
                    (C {(add_cppflags)} {(-DDEBUG)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' -g3 -fno-builtin'))}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-j)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:pm) op:Equal rhs:{(1)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-L)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:legacy) op:Equal rhs:{(1)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (Lit_Other '+') (L)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:legacy) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-M)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:cm) op:Equal rhs:{(makefile)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-O)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:optflags)
                          op: Equal
                          rhs: {(-std-compile-opts)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-o)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:{(o)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-Q)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:eq) op:Equal rhs:{(1)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-r)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:r) op:Equal rhs:{(1)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-t)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:last) op:Equal rhs:{(t)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-v)}]
                  action: [
                    (C {(echo)} {(DQ ('Build.sh ') ($ VSub_DollarName '$srcversion'))})
                    (C {(echo)} {(DQ ('for mksh ') ($ VSub_DollarName '$dstversion'))})
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (Lit_Star '*')}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_DollarName '$me') (": Unknown option '") ($ VSub_DollarName '$i') 
                            ("'!")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_DollarName '$me') (": Unknown option -'") 
                            ($ VSub_DollarName '$last') ("' '") ($ VSub_DollarName '$i') ("'!")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$last'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ($ VSub_DollarName '$me') (": Option -'") ($ VSub_DollarName '$last') 
                    ("' not followed by argument!")
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$tfn'))})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Equals '=')} {(0)})
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tfn) op:Equal rhs:{(mksh)})]
                )
              ]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tfn) op:Equal rhs:{(lksh)})]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(-d)} {($ VSub_DollarName '$tfn')})
                    (C {(test)} {(-d)} {($ VSub_DollarName '$tfn') (.exe)})
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ($ VSub_DollarName '$me') (': Error: ./') ($ VSub_DollarName '$tfn') 
                    (' is a directory!')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (C {(rmf)} {(a.exe) (Lit_Star '*')} {(a.out) (Lit_Star '*')} {(conftest.c)} 
      {(conftest.exe) (Lit_Star '*')} {(Lit_Star '*') (core)} {(core.) (Lit_Star '*')} {(${ VSub_Name tfn) (Lit_Star '*')} 
      {(Lit_Star '*') (.bc)} {(Lit_Star '*') (.dbg)} {(Lit_Star '*') (.ll)} {(Lit_Star '*') (.o)} {(Lit_Star '*') (.gen)} 
      {(Rebuild.sh)} {(lft)} {(no)} {(signames.inc)} {(test.sh)} {(x)} {(vv.out)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SRCS)
          op: Equal
          rhs: {(DQ ('lalloc.c eval.c exec.c expr.c funcs.c histrap.c jobs.c'))}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SRCS)
          op: Equal
          rhs: {(DQ ($ VSub_DollarName '$SRCS') (' lex.c main.c misc.c shf.c syn.c tree.c var.c'))}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Equals '=')} {(0)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SRCS)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$SRCS') (' edit.c'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' shell:legacy-no int:32'))}
                )
              ]
            )
          ]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' shell:legacy-yes'))}
            )
          ]
        )
        (C {(add_cppflags)} {(-DMKSH_LEGACY_MODE)})
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_PERSISTENT_HISTORY) op:Equal rhs:{(0)})]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_CONSERVATIVE_FDS)
              op: Equal
              rhs: {(1)}
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$srcdir'))} {(Lit_Equals '=')} {(x) (DQ (.))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: Equal
                  rhs: {(DQ ('-I. ') ($ VSub_DollarName '$CPPFLAGS'))}
                )
              ]
            )
          ]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CPPFLAGS)
              op: Equal
              rhs: 
                {
                  (DQ ("-I. -I'") ($ VSub_DollarName '$srcdir') ("' ") ($ VSub_DollarName '$CPPFLAGS'))
                }
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$LDSTATIC'))})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$LDFLAGS'))})
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LDFLAGS)
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$LDSTATIC'))}
                    )
                  ]
                )
              ]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LDFLAGS)
                  op: Equal
                  rhs: {($ VSub_DollarName '$LDSTATIC')}
                )
              ]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$TARGET_OS'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:x)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.AndOr
                                ops: [Op_DPipe]
                                children: [
                                  (command.Simple
                                    words: [{(uname)} {(-s)}]
                                    redirects: [
                                      (redir.Redir
                                        op: <Redir_Great '2>'>
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                  (C {(uname)})
                                ]
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$x'))} {(Lit_Equals '=')} 
                  {(x) 
                    (DQ 
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(uname)} {(-n)}]
                                redirects: [
                                  (redir.Redir
                                    op: <Redir_Great '2>'>
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OS)
                      op: Equal
                      rhs: {($ VSub_DollarName '$x')}
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$TARGET_OS'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {(DQ ($ VSub_DollarName '$me') (': Set TARGET_OS, your uname is broken!'))}
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:oswarn) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpc) op:Equal rhs:{(-Wc) (Lit_Comma ',')})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpl) op:Equal rhs:{(-Wl) (Lit_Comma ',')})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:tsts) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ccpr)
          op: Equal
          rhs: 
            {
              (SQ 
                <
'|| for _f in ${tcfn}*; do case $_f in Build.sh|check.pl|check.t|dot.mkshrc|*.1|*.c|*.h|*.ico|*.opt) ;; *) rm -f "$_f" ;; esac; done'
                >
              )
            }
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OS'))} {(Lit_Equals '=')} 
                  {(x) (DQ (Android))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' android'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:TARGET_OS) op:Equal rhs:{(Linux)})]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OS'))} {(Lit_Equals '=')} 
                  {(x) (DQ (Minix))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('\n') ('WARNING: additional checks before running Build.sh required!\n') 
                    ('You can avoid these by calling Build.sh correctly, see below.\n')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 4319
                  stdin_parts: [
                    ('#include <sys/types.h>\n')
                    ('const char *\n')
                    ('#ifdef _NETBSD_SOURCE\n')
                    ('ct="Ninix3"\n')
                    ('#else\n')
                    ('ct="Minix3"\n')
                    ('#endif\n')
                    (';\n')
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ct) op:Equal rhs:{(unknown)})]
            )
            (C {(vv)} {(SQ <']'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.Unary op_id:VTest_Hyphen arg_word:{(cc)})
                  ) (' -E ') ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$CPPFLAGS') (' ') 
                  ($ VSub_DollarName '$NOWARN') (' conftest.c | grep ct= | tr -d ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>) 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>) ('015 >x')
                )
              }
            )
            (C {(sed)} {(SQ <'s/^/[ /'>)} {(x)})
            (C {(eval)} 
              {
                (command_sub
                  left_token: <Left_Backtick '`'>
                  command_list: (command.CommandList children:[(C {(cat)} {(x)})])
                )
              }
            )
            (C {(rmf)} {(x)} {(vv.out)})
            (command.Case
              to_match: {($ VSub_DollarName '$ct')}
              arms: [
                (case_arm
                  pat_list: [{(Minix3)} {(Ninix3)}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('\n') ('Warning: you set TARGET_OS to ') 
                            ($ VSub_DollarName '$TARGET_OS') (' but that is ambiguous.\n') ('Please set it to either Minix3 or Ninix3, whereas the latter is\n') 
                            ('all versions of Minix with even partial NetBSD(R) userland. The\n') ('value determined from your compiler for the current compilation\n') ('(which may be wrong) is: ') 
                            ($ VSub_DollarName '$ct') ('\n')
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TARGET_OS)
                          op: Equal
                          rhs: {($ VSub_DollarName '$ct')}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('\n') ('Warning: you set TARGET_OS to ') 
                            ($ VSub_DollarName '$TARGET_OS') (' but that is ambiguous.\n') ('Please set it to either Minix3 or Ninix3, whereas the latter is\n') 
                            ('all versions of Minix with even partial NetBSD(R) userland. The\n') ("proper value couldn't be determined, continue at your own risk.\n")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{(NEXTSTEP)}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Left_Backtick '`'>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        words: [{(hostinfo)}]
                                        redirects: [
                                          (redir.Redir
                                            op: <Redir_GreatAnd '2>&'>
                                            fd: 2
                                            arg_word: {(1)}
                                          )
                                        ]
                                      )
                                      (C {(grep)} {(SQ <'NeXT Mach [0-9][0-9.]*:'>)})
                                      (C {(sed)} {(SQ <'s/^.*NeXT Mach \\([0-9][0-9.]*\\):.*$/\\1/'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                    )
                  ]
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(QNX)} {(SCO_SV)}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Left_Backtick '`'>
                            command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                          )
                        }
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{(386BSD)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_CAN_OTWO>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_NO_SIGSETJMP)})
            (C {(add_cppflags)} {(-DMKSH_TYPEDEF_SIG_ATOMIC_T) (Lit_Equals '=') (int)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
          ]
        )
        (case_arm
          pat_list: [{(AIX)}]
          action: [
            (C {(add_cppflags)} {(-D_ALL_SOURCE)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(BeOS)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$KSH_VERSION')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Star '*') (MIRBSD) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) 
                      (KSH) (Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: Equal
                          rhs: {(DQ ('; it has minor issues'))}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: Equal
                          rhs: {(DQ ('; you must recompile mksh with'))}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$oswarn') (${ VSub_Name nl) 
                                ('itself in a second stage')
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_DISABLE_TTY_WARNING)})
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
          ]
        )
        (case_arm
          pat_list: [{(BSD/OS)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(Coherent)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it has major issues'))}
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH__NO_SYMLINK)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' nosymlink'))}
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-DMKSH_DISABLE_TTY_WARNING)})
          ]
        )
        (case_arm
          pat_list: [{(CYGWIN) (Lit_Star '*')}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm pat_list:[{(Darwin)}] action:[(C {(add_cppflags)} {(-D_DARWIN_C_SOURCE)})])
        (case_arm pat_list:[{(DragonFly)}])
        (case_arm pat_list:[{(FreeBSD)}])
        (case_arm
          pat_list: [{(FreeMiNT)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it has minor issues'))}
                )
              ]
            )
            (C {(add_cppflags)} {(-D_GNU_SOURCE)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(GNU)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$CC')}
              arms: [
                (case_arm pat_list:[{(Lit_Star '*') (tendracc) (Lit_Star '*')}])
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [(C {(add_cppflags)} {(-D_GNU_SOURCE)})]
                )
              ]
            )
            (C {(add_cppflags)} {(-DSETUID_CAN_FAIL_WITH_EAGAIN)})
            (C {(add_cppflags)} {(-DMKSH__NO_PATH_MAX)})
          ]
        )
        (case_arm
          pat_list: [{(GNU/kFreeBSD)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$CC')}
              arms: [
                (case_arm pat_list:[{(Lit_Star '*') (tendracc) (Lit_Star '*')}])
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [(C {(add_cppflags)} {(-D_GNU_SOURCE)})]
                )
              ]
            )
            (C {(add_cppflags)} {(-DSETUID_CAN_FAIL_WITH_EAGAIN)})
          ]
        )
        (case_arm
          pat_list: [{(Haiku)}]
          action: [
            (command.Sentence
              child: (C {(add_cppflags)} {(-DMKSH_ASSUME_UTF8)})
              terminator: <Op_Semi ';'>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_ASSUME_UTF8)
                  op: Equal
                  rhs: {(1)}
                )
              ]
            )
          ]
        )
        (case_arm pat_list:[{(HP-UX)}])
        (case_arm
          pat_list: [{(Interix)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpc) op:Equal rhs:{(SQ <'-X '>)})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpl) op:Equal rhs:{(SQ <'-Y '>)})]
            )
            (C {(add_cppflags)} {(-D_ALL_SOURCE)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name LIBS>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(-lcrypt)})
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(IRIX) (Lit_Star '*')}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(Linux)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$CC')}
              arms: [
                (case_arm pat_list:[{(Lit_Star '*') (tendracc) (Lit_Star '*')}])
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [(C {(add_cppflags)} {(-D_GNU_SOURCE)})]
                )
              ]
            )
            (C {(add_cppflags)} {(-DSETUID_CAN_FAIL_WITH_EAGAIN)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_REVOKE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(LynxOS)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it has minor issues'))}
                )
              ]
            )
          ]
        )
        (case_arm pat_list:[{(MidnightBSD)}])
        (case_arm
          pat_list: [{(Minix-vmd)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-D_MINIX_SOURCE)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:oldish_ed) op:Equal rhs:{(no-stderr-ed)})]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(Minix3)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-DMKSH_NO_LIMITS)})
            (C {(add_cppflags)} {(-D_POSIX_SOURCE)} {(-D_POSIX_1_SOURCE) (Lit_Equals '=') (2)} 
              {(-D_MINIX)}
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:oldish_ed) op:Equal rhs:{(no-stderr-ed)})]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm pat_list:[{(MirBSD)}])
        (case_arm
          pat_list: [{(MSYS_) (Lit_Star '*')}]
          action: [
            (command.Sentence
              child: (C {(add_cppflags)} {(-DMKSH_ASSUME_UTF8) (Lit_Equals '=') (0)})
              terminator: <Op_Semi ';'>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_ASSUME_UTF8)
                  op: Equal
                  rhs: {(1)}
                )
              ]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_STDINT_H>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm pat_list:[{(NetBSD)}])
        (case_arm
          pat_list: [{(NEXTSTEP)}]
          action: [
            (C {(add_cppflags)} {(-D_NEXT_SOURCE)})
            (C {(add_cppflags)} {(-D_POSIX_SOURCE)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name AWK>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(gawk)})
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{('cc -posix')})
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_NO_SIGSETJMP)})
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{(4.2) (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: Equal
                          rhs: {(DQ ('; it needs libposix.a'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
          ]
        )
        (case_arm
          pat_list: [{(Ninix3)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-DMKSH_NO_LIMITS)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it has unknown issues'))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(OpenBSD)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(OS/2)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_TERMIOS_H) op:Equal rhs:{(0)})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_MKNOD) op:Equal rhs:{(0)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it is currently being ported'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' nosymlink'))}
                )
              ]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(gcc)})
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name SIZE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(': size')})
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_NOPROSPECTOFWORK)})
          ]
        )
        (case_arm
          pat_list: [{(OSF1)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_SIG_T) op:Equal rhs:{(0)})]
            )
            (C {(add_cppflags)} {(-D_OSF_SOURCE)})
            (C {(add_cppflags)} {(-D_POSIX_C_SOURCE) (Lit_Equals '=') (200112L)})
            (C {(add_cppflags)} {(-D_XOPEN_SOURCE) (Lit_Equals '=') (600)})
            (C {(add_cppflags)} {(-D_XOPEN_SOURCE_EXTENDED)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(Plan9)}]
          action: [
            (C {(add_cppflags)} {(-D_POSIX_SOURCE)})
            (C {(add_cppflags)} {(-D_LIMITS_EXTENSION)})
            (C {(add_cppflags)} {(-D_BSD_EXTENSION)})
            (C {(add_cppflags)} {(-D_SUSV2_SOURCE)})
            (command.Sentence
              child: (C {(add_cppflags)} {(-DMKSH_ASSUME_UTF8)})
              terminator: <Op_Semi ';'>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_ASSUME_UTF8)
                  op: Equal
                  rhs: {(1)}
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH_NO_CMDLINE_EDITING)})
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(SQ <' and will currently not work'>)}
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_MAYBE_KENCC)})
          ]
        )
        (case_arm
          pat_list: [{(PW32) (Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_SIG_T) op:Equal rhs:{(0)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(SQ <' and will currently not work'>)}
                )
              ]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(QNX)}]
          action: [
            (C {(add_cppflags)} {(-D__NO_EXT_QNX)})
            (C {(add_cppflags)} {(-D__EXT_UNIX_MISC)})
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_LBracket '[') (012345) (Lit_RBracket ']') (.) (Lit_Star '*')}
                    {(6.) (Lit_LBracket '[') (0123) (Lit_RBracket ']') (.) (Lit_Star '*')}
                    {(6.4.) (Lit_LBracket '[') (01) (Lit_RBracket ']')}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oldish_ed)
                          op: Equal
                          rhs: {(no-stderr-ed)}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(SCO_SV)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{(3.2) (Lit_Star '*')}]
                  action: [(C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})]
                )
                (case_arm pat_list:[{(5) (Lit_Star '*')}])
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: Equal
                          rhs: {(SQ <'; this is an unknown version of'>)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$oswarn') ($ VSub_DollarName '$nl') 
                                ($ VSub_DollarName '$TARGET_OS') (' ') (${ VSub_Name TARGET_OSREV) (', please tell me what to do')
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  ) 
                  (braced_var_sub
                    token: <VSub_Name HAVE__SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(skyos)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it has minor issues'))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(SunOS)}]
          action: [(C {(add_cppflags)} {(-D_BSD_SOURCE)}) (C {(add_cppflags)} {(-D__EXTENSIONS__)})]
        )
        (case_arm
          pat_list: [{(syllable)}]
          action: [
            (C {(add_cppflags)} {(-D_GNU_SOURCE)})
            (C {(add_cppflags)} {(-DMKSH_NO_SIGSUSPEND)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(SQ <' and will currently not work'>)}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(ULTRIX)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{('cc -YPOSIX')})
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_TYPEDEF_SSIZE_T) (Lit_Equals '=') (int)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(UnixWare)} {(UNIX_SV)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  ) 
                  (braced_var_sub
                    token: <VSub_Name HAVE__SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(UWIN) (Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpc) op:Equal rhs:{(SQ <'-Yc,'>)})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpl) op:Equal rhs:{(SQ <'-Yl,'>)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tsts)
                  op: Equal
                  rhs: {(DQ (' 3<>/dev/tty'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(DQ ('; it will compile, but the target'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$oswarn') (${ VSub_Name nl) 
                        ('platform itself is very flakey/unreliable')
                      )
                    }
                )
              ]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(_svr4)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(SQ <'; it may or may not work'>)}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Left_Backtick '`'>
                            command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                          )
                        }
                    )
                  ]
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: Equal
                  rhs: {(SQ <'; it may or may not work'>)}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Left_Backtick '`'>
                            command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                          )
                        }
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {(Lit_Other ':')} 
      {
        (DQ 
          (braced_var_sub
            token: <VSub_Name HAVE_MKNOD>
            suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
          )
        )
      }
    )
    (C {(Lit_Other ':')} 
      {
        (DQ 
          (braced_var_sub
            token: <VSub_Name AWK>
            suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(awk)})
          ) (braced_var_sub token:<VSub_Name CC> suffix_op:(suffix_op.Unary op_id:VTest_Equals arg_word:{(cc)})) 
          (braced_var_sub
            token: <VSub_Name NROFF>
            suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(nroff)})
          ) (braced_var_sub token:<VSub_Name SIZE> suffix_op:(suffix_op.Unary op_id:VTest_Equals arg_word:{(size)}))
        )
      }
    )
    (command.AndOr
      ops: [Op_DAmp Op_DAmp Op_DAmp]
      children: [
        (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$r')})
        (command.Pipeline
          children: [
            (C {(echo)})
            (command.Simple
              words: [{($ VSub_DollarName '$NROFF')} {(-v)}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})]
            )
            (command.Simple
              words: [{(grep)} {(GNU)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          negated: F
        )
        (command.Pipeline
          children: [
            (C {(echo)})
            (command.Simple
              words: [{($ VSub_DollarName '$NROFF')} {(-c)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:NROFF)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$NROFF') (' -c'))}
            )
          ]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ('Hi from') ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$bi') 
          ($ VSub_DollarName '$srcversion') ($ VSub_DollarName '$ao') (' on:')
        )
      }
    )
    (command.Case
      to_match: {($ VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{(AIX)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('oslevel >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
          ]
        )
        (case_arm
          pat_list: [{(Darwin)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('hwprefs machine_type os_type os_class >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('sw_vers >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('system_profiler SPSoftwareDataType SPHardwareDataType >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('/bin/sh --version >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('xcodebuild -version >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ 
                  (
'sysctl kern.version hw.machine hw.model hw.memsize hw.availcpu hw.cpufrequency hw.byteorder hw.cpu64bit_capable >&2'
                  )
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(IRIX) (Lit_Star '*')}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('hinv -v >&2'))})
          ]
        )
        (case_arm
          pat_list: [{(OSF1)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('/usr/sbin/sizer -v >&2'))})
          ]
        )
        (case_arm
          pat_list: [{(SCO_SV)} {(UnixWare)} {(UNIX_SV)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -X >&2'))})
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [(C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$oswarn'))})
        (command.Simple
          words: [
            {(echo)}
            {
              (DQ ('\n') ('Warning: mksh has not yet been ported to or tested on your\n') 
                ("operating system '") ($ VSub_DollarName '$TARGET_OS') ("'") ($ VSub_DollarName '$oswarn') ('. If you can provide\n') 
                ('a shell account to the developer, this may improve; please\n') ('drop us a success or failure notice or even send in diffs.\n')
              )
            }
          ]
          redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ($ VSub_DollarName '$bi') ($ VSub_DollarName '$me') (': Building the MirBSD Korn Shell') 
          ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$ui') ($ VSub_DollarName '$dstversion') ($ VSub_DollarName '$ao') (' on ') 
          ($ VSub_DollarName '$TARGET_OS') (' ') (${ VSub_Name TARGET_OSREV) (...)
        )
      }
    )
    (C {($ VSub_DollarName '$e')} {($ VSub_DollarName '$bi') ($ VSub_DollarName '$me') (Lit_Other ':')} 
      {(Scanning)} {(KW_For for)} {(functions...)} {(please)} {(ignore)} {(any)} {(errors.) ($ VSub_DollarName '$ao')}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPP)
          op: Equal
          rhs: {(DQ ($ VSub_DollarName '$CC') (' -E'))}
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} {(...)} {(which)} {(compiler)} {(seems)} {(to)} {(be)} {(used)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 6522
          stdin_parts: [
            ('const char *\n')
            ('#if defined(__ICC) || defined(__INTEL_COMPILER)\n')
            ('ct="icc"\n')
            ('#elif defined(__xlC__) || defined(__IBMC__)\n')
            ('ct="xlc"\n')
            ('#elif defined(__SUNPRO_C)\n')
            ('ct="sunpro"\n')
            ('#elif defined(__ACK__)\n')
            ('ct="ack"\n')
            ('#elif defined(__BORLANDC__)\n')
            ('ct="bcc"\n')
            ('#elif defined(__WATCOMC__)\n')
            ('ct="watcom"\n')
            ('#elif defined(__MWERKS__)\n')
            ('ct="metrowerks"\n')
            ('#elif defined(__HP_cc)\n')
            ('ct="hpcc"\n')
            ('#elif defined(__DECC) || (defined(__osf__) && !defined(__GNUC__))\n')
            ('ct="dec"\n')
            ('#elif defined(__PGI)\n')
            ('ct="pgi"\n')
            ('#elif defined(__DMC__)\n')
            ('ct="dmc"\n')
            ('#elif defined(_MSC_VER)\n')
            ('ct="msc"\n')
            ('#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)\n')
            ('ct="adsp"\n')
            ('#elif defined(__IAR_SYSTEMS_ICC__)\n')
            ('ct="iar"\n')
            ('#elif defined(SDCC)\n')
            ('ct="sdcc"\n')
            ('#elif defined(__PCC__)\n')
            ('ct="pcc"\n')
            ('#elif defined(__TenDRA__)\n')
            ('ct="tendra"\n')
            ('#elif defined(__TINYC__)\n')
            ('ct="tcc"\n')
            ('#elif defined(__llvm__) && defined(__clang__)\n')
            ('ct="clang"\n')
            ('#elif defined(__NWCC__)\n')
            ('ct="nwcc"\n')
            ('#elif defined(__GNUC__)\n')
            ('ct="gcc"\n')
            ('#elif defined(_COMPILER_VERSION)\n')
            ('ct="mipspro"\n')
            ('#elif defined(__sgi)\n')
            ('ct="mipspro"\n')
            ('#elif defined(__hpux) || defined(__hpua)\n')
            ('ct="hpcc"\n')
            ('#elif defined(__ultrix)\n')
            ('ct="ucode"\n')
            ('#elif defined(__USLC__)\n')
            ('ct="uslc"\n')
            ('#elif defined(__LCC__)\n')
            ('ct="lcc"\n')
            ('#elif defined(MKSH_MAYBE_KENCC)\n')
            ('/* and none of the above matches */\n')
            ('ct="kencc"\n')
            ('#else\n')
            ('ct="unknown"\n')
            ('#endif\n')
            (';\n')
            ('const char *\n')
            ('#if defined(__KLIBC__) && !defined(__OS2__)\n')
            ('et="klibc"\n')
            ('#else\n')
            ('et="unknown"\n')
            ('#endif\n')
            (';\n')
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ct) op:Equal rhs:{(untested)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:et) op:Equal rhs:{(untested)})]
    )
    (C {(vv)} {(SQ <']'>)} 
      {
        (DQ ($ VSub_DollarName '$CPP') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c | ') ("    sed -n '/^ *[ce]t *= */s/^ *") 
          (Lit_Other '\\') ('([ce]t') (Lit_Other '\\') (') *= */') (Lit_Other '\\') ("1=/p' | tr -d ") 
          (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>) ('015 >x')
        )
      }
    )
    (C {(sed)} {(SQ <'s/^/[ /'>)} {(x)})
    (C {(eval)} 
      {
        (command_sub
          left_token: <Left_Backtick '`'>
          command_list: (command.CommandList children:[(C {(cat)} {(x)})])
        )
      }
    )
    (C {(rmf)} {(x)} {(vv.out)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 6593
          stdin_parts: [('#include <unistd.h>\n') ('int main(void) { return (isatty(0)); }\n')]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{(ack)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: Equal
                  rhs: {(DQ ('-Dconst= ') ($ VSub_DollarName '$CPPFLAGS'))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(adsp)}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (SQ <'Warning: Analog Devices C++ compiler for Blackfin, TigerSHARC\n'> 
                    <'    and SHARC (21000) DSPs detected. This compiler has not yet\n'> <'    been tested for compatibility with mksh. Continue at your\n'> 
                    <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(bcc)}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('Warning: Borland C++ Builder detected. This compiler might\n') 
                    ('    produce broken executables. Continue at your own risk,\n') ('    please report success/failure to the developers.')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(clang)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -version')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name CLANG>
                    suffix_op: (suffix_op.Unary op_id:VTest_Hyphen arg_word:{(clang)})
                  ) (' -version')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name CLANG>
                    suffix_op: (suffix_op.Unary op_id:VTest_Hyphen arg_word:{(clang)})
                  ) (' --version')
                )
              }
            )
            (command.Case
              to_match: {($ VSub_DollarName '$CCC_CC') (Lit_Other ':') ($ VSub_DollarName '$CCC_LD')}
              arms: [
                (case_arm pat_list:[{(Lit_Other ':') (Lit_Star '*')}])
                (case_arm
                  pat_list: [{(Lit_Star '*') (Lit_Other ':')}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CCC_LD)
                              op: Equal
                              rhs: {($ VSub_DollarName '$CCC_CC')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(export)} {(CCC_LD)})
                  ]
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(dec)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -Wl,-V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(dmc)}]
          action: [
            (command.Simple
              words: [{(echo)} {(DQ ('Warning: Digital Mars Compiler detected. When running under'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('    UWIN, mksh tends to be unstable due to the limitations'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('    of this platform. Continue at your own risk,'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('    please report success/failure to the developers.'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(gcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (SQ <'echo `$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS \\\n'> 
                  <'\t    -dumpmachine` gcc`$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN \\\n'> <'\t    $LIBS -dumpversion`'>
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(hpcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(iar)}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (SQ <'Warning: IAR Systems (http://www.iar.com) compiler for embedded\n'> 
                    <'    systems detected. This unsupported compiler has not yet\n'> <'    been tested for compatibility with mksh. Continue at your\n'> 
                    <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(icc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(kencc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(lcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
            (C {(add_cppflags)} {(-D__inline__) (Lit_Equals '=') (__inline)})
          ]
        )
        (case_arm
          pat_list: [{(metrowerks)}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (SQ <'Warning: Metrowerks C compiler detected. This has not yet\n'> 
                    <'    been tested for compatibility with mksh. Continue at your\n'> <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(mipspro)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -version')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(msc)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ccpr) op:Equal rhs:(word.Empty))]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OS')}
              arms: [
                (case_arm
                  pat_list: [{(Interix)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$C89_COMPILER')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:C89_COMPILER)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_Backtick '`'>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(ntpath2posix)} {(-c)} 
                                                {(DQ ($ VSub_DollarName '$C89_COMPILER'))}
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:C89_COMPILER)
                              op: Equal
                              rhs: {(CL.EXE)}
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$C89_LINKER')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:C89_LINKER)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_Backtick '`'>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(ntpath2posix)} {(-c)} 
                                                {(DQ ($ VSub_DollarName '$C89_LINKER'))}
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:C89_LINKER)
                              op: Equal
                              rhs: {(LINK.EXE)}
                            )
                          ]
                        )
                      ]
                    )
                    (C {(vv)} {(SQ <'|'>)} {(DQ ($ VSub_DollarName '$C89_COMPILER') (' /HELP >&2'))})
                    (C {(vv)} {(SQ <'|'>)} {(DQ ($ VSub_DollarName '$C89_LINKER') (' /LINK >&2'))})
                  ]
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(nwcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -version')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(pcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -v')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(pgi)}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (SQ <'Warning: PGI detected. This unknown compiler has not yet\n'> 
                    <'    been tested for compatibility with mksh. Continue at your\n'> <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(sdcc)}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (SQ <'Warning: sdcc (http://sdcc.sourceforge.net), the small devices\n'> 
                    <'    C compiler for embedded systems detected. This has not yet\n'> <'    been tested for compatibility with mksh. Continue at your\n'> 
                    <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(sunpro)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(tcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -v')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(tendra)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V 2>&1 | ') ('\t    grep -F -i -e version -e release')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(ucode)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -Wl,-V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(uslc)}]
          action: [
            (command.Case
              to_match: 
                {($ VSub_DollarName '$TARGET_OS') (Lit_Other ':') ($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{(SCO_SV) (Lit_Other ':') (3.2) (Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' -g'))}
                        )
                      ]
                    )
                    (C {(Lit_Other ':')} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <VSub_Name HAVE_CAN_OTWO>
                            suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                          ) 
                          (braced_var_sub
                            token: <VSub_Name HAVE_CAN_OPTIMISE>
                            suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(watcom)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
        (case_arm
          pat_list: [{(xlc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -qversion')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -qversion=verbose')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} {(DQ ('ld -V'))})
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$ct'))} {(Lit_Equals '=')} {(x) (DQ (untested))})
                (C {($ VSub_DollarName '$e')} {(DQ ('!!! detecting preprocessor failed'))})
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ct) op:Equal rhs:{(unknown)})]
            )
            (C {(vv)} {(DQ ($ VSub_DollarName '$CC') (' --version'))})
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)} {(llvm)}]
          action: [(C {(vv)} {(SQ <'|'>)} {(DQ ('llc -version'))})]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:etd)
          op: Equal
          rhs: {(DQ (' on ') ($ VSub_DollarName '$et'))}
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$et')}
      arms: [
        (case_arm pat_list:[{(klibc)}] action:[(C {(add_cppflags)} {(-DMKSH_NO_LIMITS)})])
        (case_arm
          pat_list: [{(unknown)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:etd) op:Equal rhs:(word.Empty))]
            )
          ]
        )
        (case_arm pat_list:[{(Lit_Star '*')}])
      ]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ($ VSub_DollarName '$bi') ('==> which compiler seems to be used...') 
          ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$ui') ($ VSub_DollarName '$ct') ($ VSub_DollarName '$etd') 
          ($ VSub_DollarName '$ao')
        )
      }
    )
    (C {(rmf)} {(conftest.c)} {(conftest.o)} {(conftest)} {(a.out) (Lit_Star '*')} {(a.exe) (Lit_Star '*')} 
      {(conftest.exe) (Lit_Star '*')} {(vv.out)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:save_NOWARN)
          op: Equal
          rhs: {($ VSub_DollarName '$NOWARN')}
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:NOWARN) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:DOWARN) op:Equal rhs:(word.Empty))]
    )
    (C {(ac_flags)} {(0)} {(compiler_works)} {(SQ )} {(SQ <'if the compiler works'>)})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_COMPILER_WORKS')})
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_COMPILER_KNOWN) op:Equal rhs:{(0)})]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(unknown)})
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_COMPILER_KNOWN) op:Equal rhs:{(1)})]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(ac_ifcpp)} {(SQ <'if 0'>)} {(compiler_fails)} {(SQ )} 
                  {(SQ <'if the compiler does not fail correctly'>)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_CFLAGS)
                  op: Equal
                  rhs: {($ VSub_DollarName '$CFLAGS')}
                )
              ]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_CAN_DELEXE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(x)})
                  )
                )
              }
            )
            (command.Case
              to_match: {($ VSub_DollarName '$ct')}
              arms: [
                (case_arm
                  pat_list: [{(dec)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$CFLAGS') (' ') (${ VSub_Name ccpl) (-non_shared))
                            }
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(ac_testn)}
                        {(can_delexe)}
                        {(compiler_fails)}
                        {(0)}
                        {(SQ <'for the -non_shared linker option'>)}
                      ]
                      redirects: [
                        (redir.HereDoc
                          op: <Redir_DLessDash '<<-'>
                          fd: 16777215
                          here_begin: {(EOF)}
                          here_end_span_id: 7926
                          stdin_parts: [
                            ('#include <unistd.h>\n')
                            ('int main(void) { return (isatty(0)); }\n')
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(dmc)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$CFLAGS') (' ') (${ VSub_Name ccpl) 
                                (/DELEXECUTABLE)
                              )
                            }
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(ac_testn)}
                        {(can_delexe)}
                        {(compiler_fails)}
                        {(0)}
                        {(SQ <'for the /DELEXECUTABLE linker option'>)}
                      ]
                      redirects: [
                        (redir.HereDoc
                          op: <Redir_DLessDash '<<-'>
                          fd: 16777215
                          here_begin: {(EOF)}
                          here_end_span_id: 7964
                          stdin_parts: [
                            ('#include <unistd.h>\n')
                            ('int main(void) { return (isatty(0)); }\n')
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [(command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_DELEXE')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CFLAGS)
                      op: Equal
                      rhs: {($ VSub_DollarName '$save_CFLAGS')}
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {(ac_testn)}
                {(compiler_still_fails)}
                {(SQ )}
                {(SQ <'if the compiler still does not fail correctly'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 8013
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_COMPILER_STILL_FAILS')})
                (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(ac_ifcpp)} {(SQ <'ifdef __TINYC__'>)} {(couldbe_tcc)} {(SQ <'!'>)} {(compiler_known)} 
                  {(0)} {(SQ <'if this could be tcc'>)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:ct) op:Equal rhs:{(tcc)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPP)
                  op: Equal
                  rhs: {(SQ <'cpp -D__TINYC__'>)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_COMPILER_KNOWN) op:Equal rhs:{(1)})]
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{(bcc)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (-w))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) ('-w!'))}
                )
              ]
            )
          ]
        )
        (case_arm pat_list:[{(dec)}])
        (case_arm
          pat_list: [{(dmc)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (-w))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (-wx))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(hpcc)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(Lit_Other '+') (We)}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(kencc)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:DOWARN) op:Equal rhs:(word.Empty))]
            )
          ]
        )
        (case_arm
          pat_list: [{(mipspro)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(DQ ('-diag_error 1-10000'))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(msc)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (/w))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (/WX))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(sunpro)}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$save_NOWARN'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_NOWARN)
                      op: Equal
                      rhs: {(SQ <'-errwarn=%none'>)}
                    )
                  ]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(errwarnnone)} {(DQ ($ VSub_DollarName '$save_NOWARN'))})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_ERRWARNNONE')})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(errwarnall)} {(DQ ('-errwarn=%all'))})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_ERRWARNALL')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DOWARN)
                      op: Equal
                      rhs: {(DQ ('-errwarn=%all'))}
                    )
                  ]
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(tendra)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:{(-w)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(ucode)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:DOWARN) op:Equal rhs:{(-w2)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(watcom)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(-Wc) (Lit_Comma ',') (-we)}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(xlc)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: Equal
                  rhs: {(-qflag) (Lit_Equals '=') (i) (Lit_Other ':') (e)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: Equal
                  rhs: {(-qflag) (Lit_Equals '=') (i) (Lit_Other ':') (i)}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$save_NOWARN'))} {(Lit_Equals '=')} {(x) (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_NOWARN)
                      op: Equal
                      rhs: {(-Wno-error)}
                    )
                  ]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(wnoerror)} {(DQ ($ VSub_DollarName '$save_NOWARN'))})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_WNOERROR')})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:save_NOWARN) op:Equal rhs:(word.Empty))]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(werror)} {(-Werror)})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_WERROR')})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:DOWARN) op:Equal rhs:{(-Werror)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(icc)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DOWARN)
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$DOWARN') (' -wd1419'))}
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: Equal
          rhs: {($ VSub_DollarName '$save_NOWARN')}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(echo)} {(Lit_Other ':') (DQ ($ VSub_DollarName '$orig_CFLAGS'))})
                          (C {(sed)} {(SQ <'s/^://'>)})
                          (C {(tr)} {(-c)} {(-d)} 
                            {($ VSub_DollarName '$alll') ($ VSub_DollarName '$allu') 
                              ($ VSub_DollarName '$alln')
                            }
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(x) (DQ ($ VSub_DollarName '$i'))} {(Lit_Equals '=')} {(x) (DQ )})
        (command.Case
          to_match: {($ VSub_DollarName '$ct')}
          arms: [
            (case_arm
              pat_list: [{(hpcc)}]
              action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(u)})]
                )
                (C {(ac_flags)} {(1)} {(otwo)} {(Lit_Other '+') (O2)})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(x)})]
                )
              ]
            )
            (case_arm pat_list:[{(kencc)} {(tcc)} {(tendra)}])
            (case_arm
              pat_list: [{(sunpro)}]
              action: [
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})
                    (redir.HereDoc
                      op: <Redir_DLessDash '<<-'>
                      fd: 16777215
                      here_begin: {(SQ <EOF>)}
                      here_end_span_id: 8559
                      stdin_parts: [
                        ('#include <unistd.h>\n')
                        ('int main(void) { return (isatty(0)); }\n')
                        ('#define __IDSTRING_CONCAT(l,p)\t__LINTED__ ## l ## _ ## p\n')
                        ('#define __IDSTRING_EXPAND(l,p)\t__IDSTRING_CONCAT(l,p)\n')
                        ('#define pad\t\t\tvoid __IDSTRING_EXPAND(__LINE__,x)(void) { }\n')
                      ]
                    )
                  ]
                )
                (command.Pipeline
                  children: [
                    (C {(yes)} {(pad)})
                    (command.Simple
                      words: [{(head)} {(-n)} {(256)}]
                      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
                    )
                  ]
                  negated: F
                )
                (command.Simple
                  words: [{(ac_flags)} {(-)} {(1)} {(otwo)} {(-xO2)}]
                  redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
                )
                (C {(rmf)} {(x)})
              ]
            )
            (case_arm
              pat_list: [{(xlc)}]
              action: [
                (C {(ac_flags)} {(1)} {(othree)} {(DQ ('-O3 -qstrict'))})
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_OTHREE')})
                    (C {(ac_flags)} {(1)} {(otwo)} {(-O2)})
                  ]
                )
              ]
            )
            (case_arm
              pat_list: [{(Lit_Star '*')}]
              action: [
                (C {(ac_flags)} {(1)} {(otwo)} {(-O2)})
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_OTWO')})
                    (C {(ac_flags)} {(1)} {(optimise)} {(-O)})
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.ShAssignment pairs:[(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{(0)})])
    (command.Case
      to_match: {($ VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{(bcc)}]
          action: [
            (C {(ac_flags)} {(1)} {(strpool)} {(DQ (${ VSub_Name ccpc) (-d))} 
              {(SQ <'if string pooling can be enabled'>)}
            )
          ]
        )
        (case_arm
          pat_list: [{(clang)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{(1)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(dec)}]
          action: [
            (C {(ac_flags)} {(0)} {(verb)} {(-verbose)})
            (C {(ac_flags)} {(1)} {(rodata)} {(-readonly_strings)})
          ]
        )
        (case_arm
          pat_list: [{(dmc)}]
          action: [
            (C {(ac_flags)} {(1)} {(decl)} {(DQ (${ VSub_Name ccpc) (-r))} 
              {(SQ <'for strict prototype checks'>)}
            )
            (C {(ac_flags)} {(1)} {(schk)} {(DQ (${ VSub_Name ccpc) (-s))} 
              {(SQ <'for stack overflow checking'>)}
            )
          ]
        )
        (case_arm
          pat_list: [{(gcc)}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NOWARN)
                      op: Equal
                      rhs: {($ VSub_DollarName '$DOWARN')}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(u)})]
            )
            (C {(ac_flags)} {(1)} {(wnodeprecateddecls)} {(-Wno-deprecated-declarations)})
            (C {(ac_flags)} {(1)} {(no_eh_frame)} {(-fno-asynchronous-unwind-tables)})
            (C {(ac_flags)} {(1)} {(fnostrictaliasing)} {(-fno-strict-aliasing)})
            (C {(ac_flags)} {(1)} {(fstackprotectorstrong)} {(-fstack-protector-strong)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} 
                  {($ VSub_DollarName '$HAVE_CAN_FSTACKPROTECTORSTRONG')}
                )
                (C {(ac_flags)} {(1)} {(fstackprotectorall)} {(-fstack-protector-all)})
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(dragonegg)})
                (command.Case
                  to_match: 
                    {
                      (DQ (' ') ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                        ($ VSub_DollarName '$LDFLAGS') (' ')
                      )
                    }
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Star '*') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) 
                          (-fplugin) (Lit_Equals '=') (Lit_Star '*') (dragonegg) (Lit_Star '*')
                        }
                      ]
                    )
                    (case_arm
                      pat_list: [{(Lit_Star '*')}]
                      action: [
                        (C {(ac_flags)} {(1)} {(fplugin_dragonegg)} 
                          {(-fplugin) (Lit_Equals '=') (dragonegg)}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$cm')}
              arms: [
                (case_arm
                  pat_list: [{(combine)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:checks)
                          op: Equal
                          rhs: {(SQ <'7 8'>)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(lto)}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:checks)
                          op: Equal
                          rhs: {(SQ <'1 2 3 4 5 6 7 8'>)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(1)})]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(1)})
                (command.ForEach
                  iter_name: what
                  iter_words: [{($ VSub_DollarName '$checks')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(1)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ VSub_DollarName '$what')}
                          arms: [
                            (case_arm
                              pat_list: [{(1)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ <-fuse-linker-plugin>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(fltojs_lp)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(2)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ )}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(fltojs_nn)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(3)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ <'-fno-use-linker-plugin -fwhole-program'>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(fltojs_np)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(4)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <-flto>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ <-fuse-linker-plugin>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(fltons_lp)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(5)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <-flto>)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ )}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(fltons_nn)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(6)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <-flto>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ <'-fno-use-linker-plugin -fwhole-program'>)}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(fltons_np)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(7)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: Equal
                                      rhs: {(SQ <'-fwhole-program --combine'>)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: Equal
                                      rhs: {(SQ )}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: Equal
                                      rhs: {(0)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: Equal
                                      rhs: {(combine)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:cm)
                                      op: Equal
                                      rhs: {(combine)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (case_arm
                              pat_list: [{(8)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:fv)
                                      op: Equal
                                      rhs: {(1)}
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:cm)
                                      op: Equal
                                      rhs: {(normal)}
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(1)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                        )
                        (C {(ac_flags)} {($ VSub_DollarName '$t_use')} {($ VSub_DollarName '$t_name')} 
                          {(DQ ($ VSub_DollarName '$t_cflags'))} {(DQ ('if gcc supports ') ($ VSub_DollarName '$t_cflags') (' ') ($ VSub_DollarName '$t_ldflags'))} 
                          {(DQ ($ VSub_DollarName '$t_ldflags'))}
                        )
                      ]
                    )
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{(1)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(hpcc)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(u)})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(x)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(icc)}]
          action: [
            (C {(ac_flags)} {(1)} {(fnobuiltinsetmode)} {(-fno-builtin-setmode)})
            (C {(ac_flags)} {(1)} {(fnostrictaliasing)} {(-fno-strict-aliasing)})
            (C {(ac_flags)} {(1)} {(fstacksecuritycheck)} {(-fstack-security-check)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{(1)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(mipspro)}]
          action: [
            (C {(ac_flags)} {(1)} {(fullwarn)} {(-fullwarn)} {(SQ <'for remark output support'>)})
          ]
        )
        (case_arm
          pat_list: [{(msc)}]
          action: [
            (C {(ac_flags)} {(1)} {(strpool)} {(DQ (${ VSub_Name ccpc) (/GF))} 
              {(SQ <'if string pooling can be enabled'>)}
            )
            (command.Simple
              words: [{(echo)} {(SQ <'int main(void) { char test[64] = ""; return (*test); }'>)}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})]
            )
            (command.Simple
              words: [
                {(ac_flags)}
                {(-)}
                {(1)}
                {(stackon)}
                {(DQ (${ VSub_Name ccpc) (/GZ))}
                {(SQ <'if stack checks can be enabled'>)}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (command.Simple
              words: [
                {(ac_flags)}
                {(-)}
                {(1)}
                {(stckall)}
                {(DQ (${ VSub_Name ccpc) (/Ge))}
                {(SQ <'stack checks for all functions'>)}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (command.Simple
              words: [
                {(ac_flags)}
                {(-)}
                {(1)}
                {(secuchk)}
                {(DQ (${ VSub_Name ccpc) (/GS))}
                {(SQ <'for compiler security checks'>)}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (C {(rmf)} {(x)})
            (C {(ac_flags)} {(1)} {(wall)} {(DQ (${ VSub_Name ccpc) (/Wall))} 
              {(SQ <'to enable all warnings'>)}
            )
            (C {(ac_flags)} {(1)} {(wp64)} {(DQ (${ VSub_Name ccpc) (/Wp64))} 
              {(SQ <'to enable 64-bit warnings'>)}
            )
          ]
        )
        (case_arm
          pat_list: [{(nwcc)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{(1)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(sunpro)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(u)})]
            )
            (C {(ac_flags)} {(1)} {(v)} {(-v)})
            (C {(ac_flags)} {(1)} {(ipo)} {(-xipo)} {(SQ <'for cross-module optimisation'>)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(x)})]
            )
          ]
        )
        (case_arm pat_list:[{(tcc)}] action:[(C {(Lit_Other ':')})])
        (case_arm
          pat_list: [{(tendra)}]
          action: [
            (C {(ac_flags)} {(0)} {(ysystem)} {(-Ysystem)})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_YSYSTEM')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                      op: Equal
                      rhs: {(DQ ('-Ysystem ') ($ VSub_DollarName '$CPPFLAGS'))}
                    )
                  ]
                )
              ]
            )
            (C {(ac_flags)} {(1)} {(extansi)} {(-Xa)})
          ]
        )
        (case_arm
          pat_list: [{(xlc)}]
          action: [
            (C {(ac_flags)} {(1)} {(rodata)} {(DQ ('-qro -qroconst -qroptr'))})
            (C {(ac_flags)} {(1)} {(rtcheck)} {(-qcheck) (Lit_Equals '=') (all)})
            (C {(ac_flags)} {(1)} {(wformat)} {(DQ ('-qformat=all -qformat=nozln'))})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$i')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(ac_flags)} {(1)} {(wall)} {(-Wall)})
            (C {(ac_flags)} {(1)} {(fwrapv)} {(-fwrapv)})
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(x)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: Equal
          rhs: {($ VSub_DollarName '$DOWARN')}
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Equals '=')} {(pcc)})
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(u)})]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(attribute_bounded)} {(SQ )} {(SQ <'for __attribute__((__bounded__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9716
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <string.h>\n')
            ('#undef __attribute__\n')
            ('int xcopy(const void *, void *, size_t)\n')
            ('    __attribute__((__bounded__(__buffer__, 1, 3)))\n')
            ('    __attribute__((__bounded__(__buffer__, 2, 3)));\n')
            ('int main(int ac, char *av[]) { return (xcopy(av[0], av[--ac], 1)); }\n')
            ('int xcopy(const void *s, void *d, size_t n) {\n')
            ('/*\n')
            (' * if memmove does not exist, we are not on a system\n')
            (' * with GCC with __bounded__ attribute either so poo\n')
            (' */\n')
            ('memmove(d, s, n); return ((int)n);\n')
            ('}\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(attribute_format)} {(SQ )} {(SQ <'for __attribute__((__format__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9746
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#define fprintf printfoo\n')
            ('#include <stdio.h>\n')
            ('#undef __attribute__\n')
            ('#undef fprintf\n')
            ('extern int fprintf(FILE *, const char *format, ...)\n')
            ('    __attribute__((__format__(__printf__, 2, 3)));\n')
            ('int main(int ac, char **av) { return (fprintf(stderr, "%s%d", *av, ac)); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(attribute_noreturn)} {(SQ )} {(SQ <'for __attribute__((__noreturn__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9774
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <stdlib.h>\n')
            ('#undef __attribute__\n')
            ('void fnord(void) __attribute__((__noreturn__));\n')
            ('int main(void) { fnord(); }\n')
            ('void fnord(void) { exit(0); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(attribute_pure)} {(SQ )} {(SQ <'for __attribute__((__pure__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9802
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <unistd.h>\n')
            ('#undef __attribute__\n')
            ('int foo(const char *) __attribute__((__pure__));\n')
            ('int main(int ac, char **av) { return (foo(av[ac - 1]) + isatty(0)); }\n')
            ('int foo(const char *s) { return ((int)s[0]); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(attribute_unused)} {(SQ )} {(SQ <'for __attribute__((__unused__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9829
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <unistd.h>\n')
            ('#undef __attribute__\n')
            ('int main(int ac __attribute__((__unused__)), char **av\n')
            ('    __attribute__((__unused__))) { return (isatty(0)); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(attribute_used)} {(SQ )} {(SQ <'for __attribute__((__used__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9856
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <unistd.h>\n')
            ('#undef __attribute__\n')
            ('static const char fnord[] __attribute__((__used__)) = "42";\n')
            ('int main(void) { return (isatty(0)); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: Equal
          rhs: {($ VSub_DollarName '$save_NOWARN')}
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:phase) op:Equal rhs:{(x)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_SMALL'>)} {(isset_MKSH_SMALL)} {(SQ )} 
                  {(DQ ('if a reduced-feature mksh is requested'))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_NICE>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name HAVE_PERSISTENT_HISTORY>
                    suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
                  )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' smksh'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_CONSERVATIVE_FDS)
                  op: Equal
                  rhs: {(1)}
                )
              ]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'if defined(MKSH_BINSHPOSIX) || defined(MKSH_BINSHREDUCED)'>)} 
          {(isset_MKSH_BINSH)} {(SQ )} {(SQ <'if invoking as sh should be handled specially'>)}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' binsh'))}
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_UNEMPLOYED'>)} {(isset_MKSH_UNEMPLOYED)} {(SQ )} 
          {(DQ ('if mksh will be built without job control'))}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' arge'))}
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_NOPROSPECTOFWORK'>)} {(isset_MKSH_NOPROSPECTOFWORK)} {(SQ )} 
          {(DQ ('if mksh will be built without job signals'))}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' arge nojsig'))}
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_ASSUME_UTF8'>)} {(isset_MKSH_ASSUME_UTF8)} {(SQ )} 
          {(SQ <'if the default UTF-8 mode is specified'>)}
        )
        (C {(Lit_Other ':')} 
          {
            (DQ 
              (braced_var_sub
                token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                suffix_op: (suffix_op.Unary op_id:VTest_Equals arg_word:{(0)})
              )
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_CONSERVATIVE_FDS'>)} {(isset_MKSH_CONSERVATIVE_FDS)} {(SQ )} 
          {(SQ <'if traditional/conservative fd use is requested'>)}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' convfds'))}
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_MIDNIGHTBSD01ASH_COMPAT'>)} 
          {(isset_MKSH_MIDNIGHTBSD01ASH_COMPAT)} {(SQ )} {(SQ <'if the MidnightBSD 0.1 ash compatibility mode is requested'>)}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' mnbsdash'))}
            )
          ]
        )
      ]
    )
    (C {(ac_header)} {(sys/time.h)} {(sys/types.h)})
    (C {(ac_header)} {(time.h)} {(sys/types.h)})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(DQ (11))} {(Lit_Equals '=')} 
          {(DQ ($ VSub_DollarName '$HAVE_SYS_TIME_H') ($ VSub_DollarName '$HAVE_TIME_H'))}
        )
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_BOTH_TIME_H) op:Equal rhs:{(0)})]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(both_time_h)}
        {(SQ )}
        {(SQ <'whether <sys/time.h> and <time.h> can both be included'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10180
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <sys/time.h>\n')
            ('#include <time.h>\n')
            ('#include <unistd.h>\n')
            ('int main(void) { struct tm tm; return ((int)sizeof(tm) + isatty(0)); }\n')
          ]
        )
      ]
    )
    (C {(ac_header)} {(sys/bsdtypes.h)})
    (C {(ac_header)} {(sys/file.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/mkdev.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/mman.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/param.h)})
    (C {(ac_header)} {(sys/resource.h)} {(sys/types.h)} {(_time)})
    (C {(ac_header)} {(sys/select.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/sysmacros.h)})
    (C {(ac_header)} {(bstring.h)})
    (C {(ac_header)} {(grp.h)} {(sys/types.h)})
    (C {(ac_header)} {(io.h)})
    (C {(ac_header)} {(libgen.h)})
    (C {(ac_header)} {(libutil.h)} {(sys/types.h)})
    (C {(ac_header)} {(paths.h)})
    (C {(ac_header)} {(stdint.h)} {(stdarg.h)})
    (C {(ac_header)} {(strings.h)} {(sys/types.h)} {(string.h)})
    (C {(ac_header)} {(termios.h)})
    (C {(ac_header)} {(ulimit.h)} {(sys/types.h)})
    (C {(ac_header)} {(values.h)})
    (command.Simple
      words: [
        {(echo)}
        {
          (SQ <'#include <sys/types.h>\n'> <'#include <unistd.h>\n'> 
            <'/* check that off_t can represent 2^63-1 correctly, thx FSF */\n'> <'#define LARGE_OFF_T ((((off_t)1 << 31) << 31) - 1 + (((off_t)1 << 31) << 31))\n'> 
            <'int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 &&\n'> <'    LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];\n'> <'int main(void) { return (isatty(0)); }'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(lft.c)})]
    )
    (command.Simple
      words: [{(ac_testn)} {(can_lfs)} {(SQ )} {(DQ ('for large file support'))}]
      redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(lft.c)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:save_CPPFLAGS)
          op: Equal
          rhs: {($ VSub_DollarName '$CPPFLAGS')}
        )
      ]
    )
    (C {(add_cppflags)} {(-D_FILE_OFFSET_BITS) (Lit_Equals '=') (64)})
    (command.Simple
      words: [
        {(ac_testn)}
        {(can_lfs_sus)}
        {(SQ <'!'>)}
        {(can_lfs)}
        {(0)}
        {(DQ ('... with -D_FILE_OFFSET_BITS=64'))}
      ]
      redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(lft.c)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_LFS_SUS')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: Equal
                  rhs: {($ VSub_DollarName '$save_CPPFLAGS')}
                )
              ]
            )
            (C {(add_cppflags)} {(-D_LARGE_FILES) (Lit_Equals '=') (1)})
            (command.Simple
              words: [
                {(ac_testn)}
                {(can_lfs_aix)}
                {(SQ <'!'>)}
                {(can_lfs)}
                {(0)}
                {(DQ ('... with -D_LARGE_FILES=1'))}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(lft.c)})]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CAN_LFS_AIX')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                      op: Equal
                      rhs: {($ VSub_DollarName '$save_CPPFLAGS')}
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {(rm)} {(-f)} {(lft.c)})
    (C {(rmf)} {(lft) (Lit_Star '*')})
    (command.Simple
      words: [
        {(ac_test)}
        {(can_inttypes)}
        {(SQ <'!'>)}
        {(stdint_h)}
        {(1)}
        {(DQ ('for standard 32-bit integer types'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10459
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((uint32_t)(size_t)*av + (int32_t)ac); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(can_ucbints)}
        {(SQ <'!'>)}
        {(can_inttypes)}
        {(1)}
        {(DQ ('for UCB 32-bit integer types'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10484
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((u_int32_t)(size_t)*av + (int32_t)ac); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(can_int8type)}
        {(SQ <'!'>)}
        {(stdint_h)}
        {(1)}
        {(DQ ('for standard 8-bit integer type'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10509
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((uint8_t)(size_t)av[ac]); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(can_ucbint8)}
        {(SQ <'!'>)}
        {(can_int8type)}
        {(1)}
        {(DQ ('for UCB 8-bit integer type'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10534
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((u_int8_t)(size_t)av[ac]); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(rlim_t)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10559
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_BOTH_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#include <time.h>\n')
            ('#elif HAVE_SYS_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#elif HAVE_TIME_H\n')
            ('#include <time.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_RESOURCE_H\n')
            ('#include <sys/resource.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(void) { return (((int)(rlim_t)0) + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_testn)} {(sig_t)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10578
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <signal.h>\n')
            ('#include <stddef.h>\n')
            ('volatile sig_t foo = (sig_t)0;\n')
            ('int main(void) { return (foo == (sig_t)0); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_testn)} {(sighandler_t)} {(SQ <'!'>)} {(sig_t)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10602
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <signal.h>\n')
            ('#include <stddef.h>\n')
            ('volatile sighandler_t foo = (sighandler_t)0;\n')
            ('int main(void) { return (foo == (sighandler_t)0); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_SIGHANDLER_T')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(add_cppflags)} {(-Dsig_t) (Lit_Equals '=') (sighandler_t)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_SIG_T) op:Equal rhs:{(1)})]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_testn)} {(__sighandler_t)} {(SQ <'!'>)} {(sig_t)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10652
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <signal.h>\n')
            ('#include <stddef.h>\n')
            ('volatile __sighandler_t foo = (__sighandler_t)0;\n')
            ('int main(void) { return (foo == (__sighandler_t)0); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE___SIGHANDLER_T')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(add_cppflags)} {(-Dsig_t) (Lit_Equals '=') (__sighandler_t)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_SIG_T) op:Equal rhs:{(1)})]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_SIG_T')})
        (C {(add_cppflags)} {(-Dsig_t) (Lit_Equals '=') (nosig_t)})
      ]
    )
    (C {(ac_cppflags)} {(SIG_T)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(makefile)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(Lit_Other ':')} {(nothing)} {(to)} {(check)})]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_LINK_WORKS) op:Equal rhs:{(x)})]
        )
        (C {(ac_testinit)} {(link_works)} {(SQ )} 
          {(SQ <'checking if the final link command may succeed'>)}
        )
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(1)})]
        )
        (command.Simple
          words: [{(cat)}]
          redirects: [
            (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
            (redir.HereDoc
              op: <Redir_DLessDash '<<-'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 10783
              stdin_parts: [
                ('#define EXTERN\n')
                ('#define MKSH_INCLUDES_ONLY\n')
                ('#include ')
                (Right_DoubleQuote '"')
                (sh.h)
                (Right_DoubleQuote '"')
                ('\n')
                ('__RCSID(')
                (Right_DoubleQuote '"')
                ($ VSub_DollarName '$srcversion')
                (Right_DoubleQuote '"')
                (');\n')
                ('int main(void) { printf(')
                (Right_DoubleQuote '"')
                ('Hello, World!')
                (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>)
                (n)
                (Right_DoubleQuote '"')
                ('); return (isatty(0)); }\n')
              ]
            )
          ]
        )
        (command.Case
          to_match: {($ VSub_DollarName '$cm')}
          arms: [
            (case_arm
              pat_list: [{(llvm)}]
              action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -emit-llvm -c conftest.c')
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (C {(rmf)} {($ VSub_DollarName '$tfn') (.s)})
                (command.AndOr
                  ops: [Op_DPipe Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ('llvm-link -o - conftest.o | opt ') ($ VSub_DollarName '$optflags') 
                          (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' ') ($ VSub_DollarName '$tfn') ('.s ') ($ VSub_DollarName '$LIBS') 
                          (' ') ($ VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (case_arm
              pat_list: [{(dragonegg)}]
              action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -S -flto conftest.c')
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} {(DQ ('mv conftest.s conftest.ll'))})
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} {(DQ ('llvm-as conftest.ll'))})
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (C {(rmf)} {($ VSub_DollarName '$tfn') (.s)})
                (command.AndOr
                  ops: [Op_DPipe Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ('llvm-link -o - conftest.bc | opt ') ($ VSub_DollarName '$optflags') 
                          (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' ') ($ VSub_DollarName '$tfn') ('.s ') ($ VSub_DollarName '$LIBS') 
                          (' ') ($ VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (case_arm
              pat_list: [{(combine)}]
              action: [
                (C {(v)} 
                  {
                    (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                      ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' -fwhole-program --combine ') ($ VSub_DollarName '$NOWARN') 
                      (' -o ') ($ VSub_DollarName '$tcfn') (' conftest.c ') ($ VSub_DollarName '$LIBS') (' ') 
                      ($ VSub_DollarName '$ccpr')
                    )
                  }
                )
              ]
            )
            (case_arm
              pat_list: [{(lto)} {(normal)}]
              action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:cm) op:Equal rhs:{(normal)})]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -c conftest.c')
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' conftest.o ') ($ VSub_DollarName '$LIBS') (' ') 
                          ($ VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Op_DPipe]
          children: [
            (C {(test)} {(-f)} {($ VSub_DollarName '$tcfn')})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(0)})]
            )
          ]
        )
        (C {(ac_testdone)})
        (command.AndOr
          ops: [Op_DPipe]
          children: [
            (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Equals '=')} {(1)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(x) (DQ (NetBSD))} {(Lit_Equals '=')} {(x) (DQ ($ VSub_DollarName '$TARGET_OS'))})
        (C {($ VSub_DollarName '$e')} {(Ignore)} {(the)} {(compatibility)} {(warning.)})
      ]
    )
    (command.Simple
      words: [{(ac_testn)} {(sys_errlist)} {(SQ )} {(DQ ('the sys_errlist[] array and sys_nerr'))}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11183
          stdin_parts: [
            ('extern const int sys_nerr;\n')
            ('extern const char * const sys_errlist[];\n')
            ('extern int isatty(int);\n')
            ('int main(void) { return (*sys_errlist[sys_nerr - 1] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_testn)}
        {(_sys_errlist)}
        {(SQ <'!'>)}
        {(sys_errlist)}
        {(0)}
        {(DQ ('the _sys_errlist[] array and _sys_nerr'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11209
          stdin_parts: [
            ('extern const int _sys_nerr;\n')
            ('extern const char * const _sys_errlist[];\n')
            ('extern int isatty(int);\n')
            ('int main(void) { return (*_sys_errlist[_sys_nerr - 1] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(1)} {(Lit_Equals '=')} {(DQ ($ VSub_DollarName '$HAVE__SYS_ERRLIST'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(add_cppflags)} {(-Dsys_nerr) (Lit_Equals '=') (_sys_nerr)})
            (C {(add_cppflags)} {(-Dsys_errlist) (Lit_Equals '=') (_sys_errlist)})
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:HAVE_SYS_ERRLIST) op:Equal rhs:{(1)})]
            )
          ]
        )
      ]
    )
    (C {(ac_cppflags)} {(SYS_ERRLIST)})
    (command.ForEach
      iter_name: what
      iter_words: [{(name)} {(list)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:uwhat)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [(C {(upper)} {($ VSub_DollarName '$what')})]
                          )
                      )
                    }
                )
              ]
            )
            (command.Simple
              words: [
                {(ac_testn)}
                {(sys_sig) ($ VSub_DollarName '$what')}
                {(SQ )}
                {(DQ ('the sys_sig') (${ VSub_Name what) ('[] array'))}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 11305
                  stdin_parts: [
                    ('extern const char * const sys_sig')
                    (${ VSub_Name what)
                    ('[];\n')
                    ('extern int isatty(int);\n')
                    ('int main(void) { return (sys_sig')
                    (${ VSub_Name what)
                    ('[0][0] + isatty(0)); }\n')
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {(ac_testn)}
                {(_sys_sig) ($ VSub_DollarName '$what')}
                {(SQ <'!'>)}
                {(sys_sig) ($ VSub_DollarName '$what')}
                {(0)}
                {(DQ ('the _sys_sig') (${ VSub_Name what) ('[] array'))}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 11344
                  stdin_parts: [
                    ('extern const char * const _sys_sig')
                    (${ VSub_Name what)
                    ('[];\n')
                    ('extern int isatty(int);\n')
                    ('int main(void) { return (_sys_sig')
                    (${ VSub_Name what)
                    ('[0][0] + isatty(0)); }\n')
                  ]
                )
              ]
            )
            (C {(eval)} 
              {(Lit_VarLike 'uwhat_v=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                (HAVE__SYS_SIG) ($ VSub_DollarName '$uwhat')
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(1)} {(Lit_Equals '=')} {(DQ ($ VSub_DollarName '$uwhat_v'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(add_cppflags)} 
                      {(-Dsys_sig) ($ VSub_DollarName '$what') (Lit_Equals '=') (_sys_sig) 
                        ($ VSub_DollarName '$what')
                      }
                    )
                    (C {(eval)} {(HAVE_SYS_SIG) ($ VSub_DollarName '$uwhat') (Lit_Equals '=') (1)})
                  ]
                )
              ]
            )
            (C {(ac_cppflags)} {(SYS_SIG) ($ VSub_DollarName '$uwhat')})
          ]
        )
    )
    (command.Simple
      words: [{(ac_test)} {(flock)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11423
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <fcntl.h>\n')
            ('#undef flock\n')
            ('#if HAVE_SYS_FILE_H\n')
            ('#include <sys/file.h>\n')
            ('#endif\n')
            ('int main(void) { return (flock(0, LOCK_EX | LOCK_UN)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(lock_fcntl)}
        {(SQ <'!'>)}
        {(flock)}
        {(1)}
        {(SQ <'whether we can lock files with fcntl'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11453
          stdin_parts: [
            ('#include <fcntl.h>\n')
            ('#undef flock\n')
            ('int main(void) {\n')
            ('struct flock lks;\n')
            ('lks.l_type = F_WRLCK | F_UNLCK;\n')
            ('return (fcntl(0, F_SETLKW, &lks));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(getrusage)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11471
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) {\n')
            ('struct rusage ru;\n')
            ('return (getrusage(RUSAGE_SELF, &ru) +\n')
            ('    getrusage(RUSAGE_CHILDREN, &ru));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(getsid)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11484
          stdin_parts: [('#include <unistd.h>\n') ('int main(void) { return ((int)getsid(0)); }\n')]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(gettimeofday)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11498
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { struct timeval tv; return (gettimeofday(&tv, NULL)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(killpg)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11511
          stdin_parts: [
            ('#include <signal.h>\n')
            ('int main(int ac, char *av[]) { return (av[0][killpg(123, ac)]); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(memmove)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11531
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('#include <string.h>\n')
            ('#if HAVE_STRINGS_H\n')
            ('#include <strings.h>\n')
            ('#endif\n')
            ('int main(int ac, char *av[]) {\n')
            ('return (*(int *)(void *)memmove(av[0], av[1], (size_t)ac));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(mknod)} {(SQ )} {(SQ <'if to use mknod(), makedev() and friends'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11557
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(int ac, char *av[]) {\n')
            ('dev_t dv;\n')
            ('dv = makedev((unsigned int)ac, (unsigned int)av[0][0]);\n')
            ('return (mknod(av[0], (mode_t)0, dv) ? (int)major(dv) :\n')
            ('    (int)minor(dv));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(mmap)} {(lock_fcntl)} {(0)} {(SQ <'for mmap and munmap'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11588
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_SYS_FILE_H\n')
            ('#include <sys/file.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_MMAN_H\n')
            ('#include <sys/mman.h>\n')
            ('#endif\n')
            ('#include <stddef.h>\n')
            ('#include <stdlib.h>\n')
            ('int main(void) { return ((void *)mmap(NULL, (size_t)0,\n')
            ('    PROT_READ, MAP_PRIVATE, 0, (off_t)0) == (void *)NULL ? 1 :\n')
            ('    munmap(NULL, 0)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(nice)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11601
          stdin_parts: [('#include <unistd.h>\n') ('int main(void) { return (nice(4)); }\n')]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(revoke)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11618
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_LIBUTIL_H\n')
            ('#include <libutil.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(int ac, char *av[]) { return (ac + revoke(av[0])); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(setlocale_ctype)} {(SQ )} {(SQ <'setlocale(LC_CTYPE, "")'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11639
          stdin_parts: [
            ('#include <locale.h>\n')
            ('#include <stddef.h>\n')
            ('int main(void) { return ((int)(size_t)(void *)setlocale(LC_CTYPE, "")); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(langinfo_codeset)} {(setlocale_ctype)} {(0)} {(SQ <'nl_langinfo(CODESET)'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11661
          stdin_parts: [
            ('#include <langinfo.h>\n')
            ('#include <stddef.h>\n')
            ('int main(void) { return ((int)(size_t)(void *)nl_langinfo(CODESET)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(select)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11702
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_BOTH_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#include <time.h>\n')
            ('#elif HAVE_SYS_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#elif HAVE_TIME_H\n')
            ('#include <time.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_BSDTYPES_H\n')
            ('#include <sys/bsdtypes.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_SELECT_H\n')
            ('#include <sys/select.h>\n')
            ('#endif\n')
            ('#if HAVE_BSTRING_H\n')
            ('#include <bstring.h>\n')
            ('#endif\n')
            ('#include <stddef.h>\n')
            ('#include <stdlib.h>\n')
            ('#include <string.h>\n')
            ('#if HAVE_STRINGS_H\n')
            ('#include <strings.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(void) {\n')
            ('struct timeval tv = { 1, 200000 };\n')
            ('fd_set fds; FD_ZERO(&fds); FD_SET(0, &fds);\n')
            ('return (select(FD_SETSIZE, &fds, NULL, NULL, &tv));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(setresugid)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11716
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <unistd.h>\n')
            ('int main(void) { return (setresuid(0,0,0) + setresgid(0,0,0)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(setgroups)} {(setresugid)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11737
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_GRP_H\n')
            ('#include <grp.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(void) { gid_t gid = 0; return (setgroups(0, &gid)); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$et'))} {(Lit_Equals '=')} {(x) (DQ (klibc))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [{(ac_testn)} {(__rt_sigsuspend)} {(SQ )} {(SQ <'whether klibc uses RT signals'>)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 11780
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('extern int __rt_sigsuspend(const sigset_t *, size_t);\n')
                    ('int main(void) { return (__rt_sigsuspend(NULL, 0)); }\n')
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {(ac_testn)}
                {(__sigsuspend_s)}
                {(SQ <'!'>)}
                {(__rt_sigsuspend)}
                {(1)}
                {(SQ <'whether sigsuspend is usable (1/2)'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 11815
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('extern int __sigsuspend_s(sigset_t);\n')
                    ('int main(void) { return (__sigsuspend_s(0)); }\n')
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {(ac_testn)}
                {(__sigsuspend_xxs)}
                {(SQ <'!'>)}
                {(__sigsuspend_s)}
                {(1)}
                {(SQ <'whether sigsuspend is usable (2/2)'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 11844
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('extern int __sigsuspend_xxs(int, int, sigset_t);\n')
                    ('int main(void) { return (__sigsuspend_xxs(0, 0, 0)); }\n')
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(DQ (000))} {(Lit_Equals '=')} 
                          {
                            (DQ ($ VSub_DollarName '$HAVE___RT_SIGSUSPEND') 
                              ($ VSub_DollarName '$HAVE___SIGSUSPEND_S') ($ VSub_DollarName '$HAVE___SIGSUSPEND_XXS')
                            )
                          }
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(add_cppflags)} {(-DMKSH_NO_SIGSUSPEND)})]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(strerror)} {(SQ <'!'>)} {(sys_errlist)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11900
          stdin_parts: [
            ('extern char *strerror(int);\n')
            ('int main(int ac, char *av[]) { return (*strerror(*av[ac])); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(strsignal)} {(SQ <'!'>)} {(sys_siglist)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11922
          stdin_parts: [
            ('#include <string.h>\n')
            ('#include <signal.h>\n')
            ('int main(void) { return (strsignal(1)[0]); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(strlcpy)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11936
          stdin_parts: [
            ('#include <string.h>\n')
            ('int main(int ac, char *av[]) { return (strlcpy(*av, av[1],\n')
            ('    (size_t)ac)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(flock_decl)} {(flock)} {(1)} {(SQ <'for declaration of flock()'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11970
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('#if HAVE_SYS_FILE_H\n')
            ('#include <sys/file.h>\n')
            ('#endif\n')
            ('int main(void) { return ((flock)(0, 0)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(ac_test)} {(revoke_decl)} {(revoke)} {(1)} {(SQ <'for declaration of revoke()'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11991
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { return ((revoke)("")); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(sys_errlist_decl)}
        {(sys_errlist)}
        {(0)}
        {(DQ ('for declaration of sys_errlist[] and sys_nerr'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 12012
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { return (*sys_errlist[sys_nerr - 1] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_test)}
        {(sys_siglist_decl)}
        {(sys_siglist)}
        {(0)}
        {(SQ <'for declaration of sys_siglist[]'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 12033
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { return (sys_siglist[0][0] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:fd)
          op: Equal
          rhs: {(SQ <'if to use persistent history'>)}
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(ac_cache)} {(PERSISTENT_HISTORY)})
        (command.Case
          to_match: 
            {($ VSub_DollarName '$HAVE_MMAP') ($ VSub_DollarName '$HAVE_FLOCK') 
              ($ VSub_DollarName '$HAVE_LOCK_FCNTL')
            }
          arms: [
            (case_arm
              pat_list: [{(11) (Lit_Star '*')} {(101)}]
              action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(1)})]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$fv')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' no-histfile'))}
            )
          ]
        )
      ]
    )
    (C {(ac_testdone)})
    (C {(ac_cppflags)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:save_CFLAGS)
          op: Equal
          rhs: {($ VSub_DollarName '$CFLAGS')}
        )
      ]
    )
    (command.Simple
      words: [
        {(ac_testn)}
        {(compile_time_asserts_) ($ VSub_Dollar '$$')}
        {(SQ )}
        {(SQ <'whether compile-time assertions pass'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 12173
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('#ifndef CHAR_BIT\n')
            ('#define CHAR_BIT 8\t/* defuse this test on really legacy systems */\n')
            ('#endif\n')
            ('struct ctasserts {\n')
            ('#define cta(name, assertion) char name[(assertion) ? 1 : -1]\n')
            ('/* this one should be defined by the standard */\n')
            ('cta(char_is_1_char, (sizeof(char) == 1) && (sizeof(signed char) == 1) &&\n')
            ('    (sizeof(unsigned char) == 1));\n')
            ('cta(char_is_8_bits, ((CHAR_BIT) == 8) && ((int)(unsigned char)0xFF == 0xFF) &&\n')
            ('    ((int)(unsigned char)0x100 == 0) && ((int)(unsigned char)(int)-1 == 0xFF));\n')
            ('/* the next assertion is probably not really needed */\n')
            ('cta(short_is_2_char, sizeof(short) == 2);\n')
            ('cta(short_size_no_matter_of_signedness, sizeof(short) == sizeof(unsigned short));\n')
            ('/* the next assertion is probably not really needed */\n')
            ('cta(int_is_4_char, sizeof(int) == 4);\n')
            ('cta(int_size_no_matter_of_signedness, sizeof(int) == sizeof(unsigned int));\n')
            ('\n')
            ('cta(long_ge_int, sizeof(long) >= sizeof(int));\n')
            ('cta(long_size_no_matter_of_signedness, sizeof(long) == sizeof(unsigned long));\n')
            ('\n')
            ('#ifndef MKSH_LEGACY_MODE\n')
            ('/* the next assertion is probably not really needed */\n')
            ('cta(ari_is_4_char, sizeof(mksh_ari_t) == 4);\n')
            ('/* but this is */\n')
            (
'cta(ari_has_31_bit, 0 < (mksh_ari_t)(((((mksh_ari_t)1 << 15) << 15) - 1) * 2 + 1));\n'
            )
            ('/* the next assertion is probably not really needed */\n')
            ('cta(uari_is_4_char, sizeof(mksh_uari_t) == 4);\n')
            ('/* but the next three are; we REQUIRE unsigned integer wraparound */\n')
            (
'cta(uari_has_31_bit, 0 < (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 2 + 1));\n'
            )
            (
'cta(uari_has_32_bit, 0 < (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 3));\n'
            )
            ('cta(uari_wrap_32_bit,\n')
            ('    (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 3) >\n')
            ('    (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 4));\n')
            ('#define NUM 22\n')
            ('#else\n')
            ('#define NUM 16\n')
            ('#endif\n')
            ('/* these are always required */\n')
            ('cta(ari_is_signed, (mksh_ari_t)-1 < (mksh_ari_t)0);\n')
            ('cta(uari_is_unsigned, (mksh_uari_t)-1 > (mksh_uari_t)0);\n')
            ('/* we require these to have the precisely same size and assume 2s complement */\n')
            ('cta(ari_size_no_matter_of_signedness, sizeof(mksh_ari_t) == sizeof(mksh_uari_t));\n')
            ('\n')
            ('cta(sizet_size_no_matter_of_signedness, sizeof(ssize_t) == sizeof(size_t));\n')
            ('cta(sizet_voidptr_same_size, sizeof(size_t) == sizeof(void *));\n')
            ('cta(sizet_funcptr_same_size, sizeof(size_t) == sizeof(void (*)(void)));\n')
            ('/* our formatting routines assume this */\n')
            ('cta(ptr_fits_in_long, sizeof(size_t) <= sizeof(long));\n')
            ('cta(ari_fits_in_long, sizeof(mksh_ari_t) <= sizeof(long));\n')
            ('/* for struct alignment people */\n')
            ('char padding[64 - NUM];\n')
            ('};\n')
            ('char ctasserts_dblcheck[sizeof(struct ctasserts) == 64 ? 1 : -1];\n')
            ('int main(void) { return (sizeof(ctasserts_dblcheck) + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CFLAGS)
          op: Equal
          rhs: {($ VSub_DollarName '$save_CFLAGS')}
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(eval)} {(test)} {(1)} {(Lit_Equals '=')} 
          {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) (HAVE_COMPILE_TIME_ASSERTS_) 
            ($ VSub_Dollar '$$')
          }
        )
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Equals '=')} {(1)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [{(ac_test)} {(long_32bit)} {(SQ )} {(SQ <'whether long is 32 bit wide'>)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 12246
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('#ifndef CHAR_BIT\n')
                    ('#define CHAR_BIT 0\n')
                    ('#endif\n')
                    ('struct ctasserts {\n')
                    ('#define cta(name, assertion) char name[(assertion) ? 1 : -1]\n')
                    ('cta(char_is_8_bits, (CHAR_BIT) == 8);\n')
                    ('cta(long_is_32_bits, sizeof(long) == 4);\n')
                    ('};\n')
                    ('int main(void) { return (sizeof(struct ctasserts)); }\n')
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {(ac_test)}
                {(long_64bit)}
                {(SQ <'!'>)}
                {(long_32bit)}
                {(0)}
                {(SQ <'whether long is 64 bit wide'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 12281
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('#ifndef CHAR_BIT\n')
                    ('#define CHAR_BIT 0\n')
                    ('#endif\n')
                    ('struct ctasserts {\n')
                    ('#define cta(name, assertion) char name[(assertion) ? 1 : -1]\n')
                    ('cta(char_is_8_bits, (CHAR_BIT) == 8);\n')
                    ('cta(long_is_64_bits, sizeof(long) == 8);\n')
                    ('};\n')
                    ('int main(void) { return (sizeof(struct ctasserts)); }\n')
                  ]
                )
              ]
            )
            (command.Case
              to_match: 
                {($ VSub_DollarName '$HAVE_LONG_32BIT') ($ VSub_DollarName '$HAVE_LONG_64BIT')}
              arms: [
                (case_arm
                  pat_list: [{(10)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:check_categories)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$check_categories') (' int:32'))}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(01)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:check_categories)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$check_categories') (' int:64'))}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:check_categories)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$check_categories') (' int:u'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_SYS_SIGNAME')})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {(ac_testinit)} {(cpp_dd)} {(SQ )} 
                      {(SQ <'checking if the C Preprocessor supports -dD'>)}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.Simple
                  words: [{(echo)} {(SQ <'#define foo bar'>)}]
                  redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})]
                )
                (C {(vv)} {(SQ <']'>)} 
                  {
                    (DQ ($ VSub_DollarName '$CPP') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                      ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -dD conftest.c >x')
                    )
                  }
                )
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (command.Simple
                      words: [{(grep)} {(SQ <'#define foo bar'>)} {(x)}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(/dev/null)}
                        )
                        (redir.Redir
                          op: <Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fv) op:Equal rhs:{(1)})]
                    )
                  ]
                )
                (C {(rmf)} {(conftest.c)} {(x)} {(vv.out)})
                (C {(ac_testdone)})
              ]
            )
          ]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} {(...)} {(done.)})
    (command.Simple
      words: [{(echo)} {(wq)}]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{(ed)} {(x)}]
              redirects: [
                (redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})
                (redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})
              ]
            )
            (command.Simple
              words: [{(grep)} {(3)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: Equal
              rhs: 
                {(DQ ($ VSub_DollarName '$check_categories') (' ') ($ VSub_DollarName '$oldish_ed'))}
            )
          ]
        )
      ]
    )
    (C {(rmf)} {(x)} {(vv.out)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_SYS_SIGNAME')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CPP_DD')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {($ VSub_DollarName '$e')} {(Generating)} {(list)} {(of)} {(signal)} {(names...)})
                  ]
                )
              ]
              else_action: [
                (C {($ VSub_DollarName '$e')} {(No)} {(list)} {(of)} {(signal)} {(names)} {(available)} 
                  {(via)} {(cpp.)} {(Falling)} {(back...)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigseenone)
                  op: Equal
                  rhs: {(Lit_Other ':')}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigseentwo)
                  op: Equal
                  rhs: {(Lit_Other ':')}
                )
              ]
            )
            (command.Simple
              words: [
                {(echo)}
                {
                  (SQ <'#include <signal.h>\n'> <'#if defined(NSIG_MAX)\n'> 
                    <'#define cfg_NSIG NSIG_MAX\n'> <'#elif defined(NSIG)\n'> <'#define cfg_NSIG NSIG\n'> <'#elif defined(_NSIG)\n'> 
                    <'#define cfg_NSIG _NSIG\n'> <'#elif defined(SIGMAX)\n'> <'#define cfg_NSIG (SIGMAX + 1)\n'> <'#elif defined(_SIGMAX)\n'> 
                    <'#define cfg_NSIG (_SIGMAX + 1)\n'> <'#else\n'> <'/*XXX better error out, see sh.h */\n'> <'#define cfg_NSIG 64\n'> <'#endif\n'> <'int\n'> 
                    <'mksh_cfg= cfg_NSIG\n'> <';'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NSIG)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(vq)} 
                                    {
                                      (DQ ($ VSub_DollarName '$CPP') (' ') 
                                        ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c')
                                      )
                                    }
                                  )
                                  (C {(grep)} {(-v)} {(SQ <'^#'>)})
                                  (C {(sed)} 
                                    {
                                      (SQ <'/mksh_cfg.*= *$/{\n'> <'\t\tN\n'> <'\t\ts/\\n/ /\n'> 
                                        <'\t\t}'>
                                      )
                                    }
                                  )
                                  (C {(grep)} {(SQ <'^ *mksh_cfg *='>)})
                                  (C {(sed)} 
                                    {
                                      (SQ 
                                        <
's/^ *mksh_cfg *=[\t ]*\\([()0-9x+-][()0-9x+\t -]*\\).*$/\\1/'
                                        >
                                      )
                                    }
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$NSIG')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Star '*') (mksh_cfg) (Lit_Star '*')}]
                  action: [
                    (command.Sentence
                      child: 
                        (C {($ VSub_DollarName '$e')} 
                          {(DQ ("Error: NSIG='") ($ VSub_DollarName '$NSIG') ("'"))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:NSIG) op:Equal rhs:{(0)})]
                    )
                  ]
                )
                (case_arm
                  pat_list: [
                    {(Lit_Star '*') (Lit_LBracket '[') 
                      (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\('>) 
                      (word_part.EscapedLiteral token:<Lit_EscapedChar '\\)'>) (Lit_Other '+') (-) (Lit_RBracket ']') (Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:NSIG)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_Backtick '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [
                                          {(DQ ($ VSub_DollarName '$AWK'))}
                                          {(DQ ('BEGIN { print ') ($ VSub_DollarName '$NSIG') (' }'))}
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(/dev/null)}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:printf) op:Equal rhs:{(printf)})]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Subshell
                  command_list: (command.CommandList children:[(C {(printf)} {(hallo)})])
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                )
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:printf) op:Equal rhs:{(echo)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$printf')} {(Lit_Equals '=')} {(echo)})
                (C {(test)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [(C {(printf)} {(Lit_Other '%') (d)} {(42)})]
                          )
                      )
                    )
                  } {(Lit_Equals '=')} {(42)}
                )
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:printf) op:Equal rhs:{(echo)})]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$printf')} {(Lit_Equals '=')} {(echo)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NSIG)
                      op: Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Left_Backtick '`'>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Simple
                                    words: [
                                      {(printf)}
                                      {(Lit_Other '%') (d)}
                                      {(DQ ($ VSub_DollarName '$NSIG'))}
                                    ]
                                    redirects: [
                                      (redir.Redir
                                        op: <Redir_Great '2>'>
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                ]
                              )
                          )
                        }
                    )
                  ]
                )
              ]
            )
            (C {($ VSub_DollarName '$printf')} {(DQ ('NSIG=') ($ VSub_DollarName '$NSIG') (' ... '))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: Equal
                  rhs: {(DQ ('ABRT FPE ILL INT SEGV TERM ALRM BUS CHLD CONT HUP KILL PIPE QUIT'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$sigs') 
                        (' STOP TSTP TTIN TTOU USR1 USR2 POLL PROF SYS TRAP URG VTALRM')
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$sigs') 
                        (' XCPU XFSZ INFO WINCH EMT IO DIL LOST PWR SAK CLD IOT STKFLT')
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$sigs') 
                        (' ABND DCE DUMP IOERR TRACE DANGER THCONT THSTOP RESV UNUSED')
                      )
                    }
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_CPP_DD')})
                (C {(test)} {($ VSub_DollarName '$NSIG')} {(-gt)} {(1)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:sigs)
                      op: Equal
                      rhs: 
                        {(DQ ($ VSub_DollarName '$sigs') (' ')) 
                          (command_sub
                            left_token: <Left_Backtick '`'>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(vq)} 
                                        {
                                          (DQ ($ VSub_DollarName '$CPP') (' ') 
                                            ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -dD conftest.c')
                                          )
                                        }
                                      )
                                      (C {(grep)} {(SQ <'[\t ]SIG[A-Z0-9][A-Z0-9]*[\t ]'>)})
                                      (C {(sed)} 
                                        {(SQ <'s/^.*[\t ]SIG\\([A-Z0-9][A-Z0-9]*\\)[\t ].*$/\\1/'>)}
                                      )
                                      (C {(sort)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$NSIG')} {(-gt)} {(1)})
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:sigs) op:Equal rhs:(word.Empty))]
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  iter_name: name
                  iter_words: [{($ VSub_DollarName '$sigs')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {($ VSub_DollarName '$sigseenone')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(Lit_Star '*') (Lit_Other ':') ($ VSub_DollarName '$name') 
                                  (Lit_Other ':') (Lit_Star '*')
                                }
                              ]
                              action: [(command.ControlFlow token:<ControlFlow_Continue continue>)]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:sigseenone)
                              op: Equal
                              rhs: 
                                {($ VSub_DollarName '$sigseenone') ($ VSub_DollarName '$name') 
                                  (Lit_Other ':')
                                }
                            )
                          ]
                        )
                        (command.Simple
                          words: [{(echo)} {(SQ <'#include <signal.h>'>)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.Simple
                          words: [{(echo)} {(int)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.Simple
                          words: [
                            {(echo)}
                            {(Lit_VarLike 'mksh_cfg=')}
                            {(SIG) ($ VSub_DollarName '$name')}
                          ]
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.Simple
                          words: [{(echo)} {(SQ <';'>)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {(vq)} 
                              {
                                (DQ ($ VSub_DollarName '$CPP') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c')
                                )
                              }
                            )
                            (C {(grep)} {(-v)} {(SQ <'^#'>)})
                            (C {(sed)} 
                              {
                                (SQ <'/mksh_cfg.*= *$/{\n'> <'\t\t\tN\n'> <'\t\t\ts/\\n/ /\n'> 
                                  <'\t\t\t}'>
                                )
                              }
                            )
                            (C {(grep)} {(SQ <'^ *mksh_cfg *='>)})
                            (C {(sed)} 
                              {(SQ <'s/^ *mksh_cfg *=[\t ]*\\([0-9][0-9x]*\\).*$/:\\1 '>) 
                                ($ VSub_DollarName '$name') (/)
                              }
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
                (C {(sed)} {(-n)} {(SQ <'/^:[^ ]/s/^://p'>)})
                (command.WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (command.Sentence
                      child: (C {(read)} {(nr)} {(name)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$printf')} {(Lit_Equals '=')} {(echo)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:nr)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_Backtick '`'>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Simple
                                                words: [
                                                  {(printf)}
                                                  {(Lit_Other '%') (d)}
                                                  {(DQ ($ VSub_DollarName '$nr'))}
                                                ]
                                                redirects: [
                                                  (redir.Redir
                                                    op: <Redir_Great '2>'>
                                                    fd: 2
                                                    arg_word: {(/dev/null)}
                                                  )
                                                ]
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Op_DAmp Op_DPipe]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$nr')} {(-gt)} {(0)})
                            (C {(test)} {($ VSub_DollarName '$nr')} {(-lt)} {($ VSub_DollarName '$NSIG')})
                            (command.ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ VSub_DollarName '$sigseentwo')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(Lit_Star '*') (Lit_Other ':') ($ VSub_DollarName '$nr') 
                                  (Lit_Other ':') (Lit_Star '*')
                                }
                              ]
                            )
                            (case_arm
                              pat_list: [{(Lit_Star '*')}]
                              action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('\t\t{ ') 
                                      (word_part.EscapedLiteral
                                        token: <Lit_EscapedChar '\\"'>
                                      ) ($ VSub_DollarName '$name') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (', ') 
                                      ($ VSub_DollarName '$nr') (' },')
                                    )
                                  }
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:sigseentwo)
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$sigseentwo') ($ VSub_DollarName '$nr') 
                                          (Lit_Other ':')
                                        }
                                    )
                                  ]
                                )
                                (command.Simple
                                  words: [
                                    {($ VSub_DollarName '$printf')}
                                    {
                                      (DQ ($ VSub_DollarName '$name') ('=') ($ VSub_DollarName '$nr') 
                                        (' ')
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_GreatAnd '>&'>
                                      fd: 16777215
                                      arg_word: {(2)}
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  redirects: [
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(signames.inc)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(rmf)} {(conftest.c)})
            (C {($ VSub_DollarName '$e')} {(done.)})
          ]
        )
      ]
    )
    (C {(addsrcs)} {(SQ <'!'>)} {(HAVE_STRLCPY)} {(strlcpy.c)})
    (C {(addsrcs)} {(USE_PRINTF_BUILTIN)} {(printf.c)})
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {(DQ ($ VSub_DollarName '$USE_PRINTF_BUILTIN'))})
        (C {(add_cppflags)} {(-DMKSH_PRINTF_BUILTIN)})
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {(DQ ($ VSub_DollarName '$HAVE_CAN_VERB'))})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CFLAGS)
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' -verbose'))}
            )
          ]
        )
      ]
    )
    (C {(add_cppflags)} {(-DMKSH_BUILD_R) (Lit_Equals '=') (523)})
    (C {($ VSub_DollarName '$e')} {($ VSub_DollarName '$bi') ($ VSub_DollarName '$me') (Lit_Other ':')} 
      {(Finished)} {(configuration)} {(testing) (Lit_Comma ',')} {(now)} {(producing)} {(output.) ($ VSub_DollarName '$ao')}
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:files) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:objs) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:sp) op:Equal rhs:(word.Empty))]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$tcfn')}
      arms: [
        (case_arm
          pat_list: [{(a.exe)} {(conftest.exe)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshexe)
                  op: Equal
                  rhs: {($ VSub_DollarName '$tfn') (.exe)}
                )
              ]
            )
            (C {(add_cppflags)} {(-DMKSH_EXE_EXT)})
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshexe)
                  op: Equal
                  rhs: {($ VSub_DollarName '$tfn')}
                )
              ]
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$curdir')}
      arms: [
        (case_arm
          pat_list: [
            {(Lit_Star '*') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\ '>) (Lit_Star '*')}
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshshebang)
                  op: Equal
                  rhs: {(DQ ('#!./') ($ VSub_DollarName '$mkshexe'))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshshebang)
                  op: Equal
                  rhs: {(DQ ('#!') ($ VSub_DollarName '$curdir') (/) ($ VSub_DollarName '$mkshexe'))}
                )
              ]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(test.sh)})
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 13773
          stdin_parts: [
            ($ VSub_DollarName '$mkshshebang')
            ('\n')
            ("LC_ALL=C PATH='")
            ($ VSub_DollarName '$PATH')
            ("'; export LC_ALL PATH\n")
            ('test -n ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (KSH_VERSION)
            (Right_DoubleQuote '"')
            (' || exit 1\n')
            ('set -A check_categories -- ')
            ($ VSub_DollarName '$check_categories')
            ('\n')
            ("pflag='")
            ($ VSub_DollarName '$curdir')
            (/)
            ($ VSub_DollarName '$mkshexe')
            ("'\n")
            ("sflag='")
            ($ VSub_DollarName '$srcdir')
            ("/check.t'\n")
            ('usee=0 Pflag=0 Sflag=0 uset=0 vflag=1 xflag=0\n')
            ('while getopts ')
            (Right_DoubleQuote '"')
            ('C:e:fPp:QSs:t:v')
            (Right_DoubleQuote '"')
            (' ch; do case ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('ch {\n')
            ('(C)\tcheck_categories[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#check_categories[*]}]=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(e)\tusee=1; eflag=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(f)\tcheck_categories[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#check_categories[*]}]=fastbox ;;\n')
            ('(P)\tPflag=1 ;;\n')
            ('(+P)\tPflag=0 ;;\n')
            ('(p)\tpflag=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(Q)\tvflag=0 ;;\n')
            ('(+Q)\tvflag=1 ;;\n')
            ('(S)\tSflag=1 ;;\n')
            ('(+S)\tSflag=0 ;;\n')
            ('(s)\tsflag=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(t)\tuset=1; tflag=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(v)\tvflag=1 ;;\n')
            ('(+v)\tvflag=0 ;;\n')
            ('(*)\txflag=1 ;;\n')
            ('}\n')
            ('done\n')
            ('shift ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('((OPTIND - 1))\n')
            ("set -A args -- '")
            ($ VSub_DollarName '$srcdir')
            ("/check.pl' -p ")
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (pflag)
            (Right_DoubleQuote '"')
            ('\n')
            ('x=\n')
            ('for y in ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{check_categories[@]}')
            (Right_DoubleQuote '"')
            ('; do\n')
            ('x=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('x,')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('y\n')
            ('done\n')
            ('if [[ -n ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('x ]]; then\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-C\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{x#,}\n')
            ('fi\n')
            ('if (( usee )); then\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-e\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('eflag\n')
            ('fi\n')
            ('(( Pflag )) && args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-P\n')
            ('if (( uset )); then\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-t\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('tflag\n')
            ('fi\n')
            ('(( vflag )) && args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-v\n')
            ('(( xflag )) && args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-x\t# force usage by synerr\n')
            ('if [[ -n ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('TMPDIR && -d ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('TMPDIR/. ]]; then\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-T\n')
            ('args[')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('TMPDIR\n')
            ('fi\n')
            ('print Testing mksh for conformance:\n')
            ("grep -F -e Mir''OS: -e MIRBSD ")
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            ('\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('This shell is actually:')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>)
            (n)
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\\\'>)
            (t)
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (KSH_VERSION)
            (Right_DoubleQuote '"')
            ('\n')
            ("print 'test.sh built for mksh ")
            ($ VSub_DollarName '$dstversion')
            ("'\n")
            ("cstr='")
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('os = defined ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('^O ? ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('^O : ')
            (Right_DoubleQuote '"')
            (unknown)
            (Right_DoubleQuote '"')
            (";'\n")
            ('cstr=')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (cstr)
            (Right_DoubleQuote '"')
            ("'print ")
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('os . ')
            (Right_DoubleQuote '"')
            (', Perl version ')
            (Right_DoubleQuote '"')
            (' . ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ("];'\n")
            ('for perli in ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('PERL perl5 perl no; do\n')
            ('if [[ ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perli = no ]]; then\n')
            ('print Cannot find a working Perl interpreter, aborting.\n')
            ('exit 1\n')
            ('fi\n')
            ('print ')
            (Right_DoubleQuote '"')
            ("Trying Perl interpreter '")
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ("perli'...")
            (Right_DoubleQuote '"')
            ('\n')
            ('perlos=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('(')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perli -e ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (cstr)
            (Right_DoubleQuote '"')
            (')\n')
            ('rv=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('?\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('Errorlevel ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ("rv, running on '")
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ("perlos'")
            (Right_DoubleQuote '"')
            ('\n')
            ('if (( rv )); then\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('=> not using')
            (Right_DoubleQuote '"')
            ('\n')
            ('continue\n')
            ('fi\n')
            ('if [[ -n ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perlos ]]; then\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('=> using it')
            (Right_DoubleQuote '"')
            ('\n')
            ('break\n')
            ('fi\n')
            ('done\n')
            ('(( Sflag )) || echo + ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ('\n')
            ('(( Sflag )) || exec ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ($ VSub_DollarName '$tsts')
            ('\n')
            ('# use of the -S option for check.t split into multiple chunks\n')
            ('rv=0\n')
            ('for s in ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            ('.*; do\n')
            ('echo + ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (s)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ('\n')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            (s)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ($ VSub_DollarName '$tsts')
            ('\n')
            ('rc=')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('?\n')
            ('(( rv = rv ? rv : rc ))\n')
            ('done\n')
            ('exit ')
            (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
            ('rv\n')
          ]
        )
      ]
    )
    (C {(chmod)} {(755)} {(test.sh)})
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:emitbc) op:Equal rhs:{(DQ ('-S -flto'))})]
            )
          ]
        )
        (case_arm
          pat_list: [{(llvm)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:emitbc)
                  op: Equal
                  rhs: {(DQ ('-emit-llvm -c'))}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:emitbc) op:Equal rhs:{(-c)})]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(echo)} {(DQ (': # work around NeXTstep bug'))}]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (C {(cd)} {(DQ ($ VSub_DollarName '$srcdir'))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:optfiles)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_Backtick '`'>
                command_list: (command.CommandList children:[(C {(echo)} {(Lit_Star '*') (.opt)})])
              )
            }
        )
      ]
    )
    (C {(cd)} {(DQ ($ VSub_DollarName '$curdir'))})
    (command.ForEach
      iter_name: file
      iter_words: [{($ VSub_DollarName '$optfiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {(DQ ("echo + Running genopt on '") ($ VSub_DollarName '$file') ("'..."))})
            (C {(echo)} 
              {
                (DQ ("(srcfile='") ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file') 
                  ("'; BUILDSH_RUN_GENOPT=1; . '") ($ VSub_DollarName '$srcdir') ("/Build.sh')")
                )
              }
            )
          ]
        )
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.Simple
      words: [{(echo)} {(KW_Set set)} {(-x)}]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ VSub_DollarName '$SRCS')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:op)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(x) (DQ ($ VSub_DollarName '$file'))})
                                  (C {(sed)} {(SQ <'s/^x\\(.*\\)\\.c$/\\1./'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:file)
                      op: Equal
                      rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:files)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$files') ($ VSub_DollarName '$sp') 
                        ($ VSub_DollarName '$file')
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:sp) op:Equal rhs:{(SQ <' '>)})]
            )
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                    ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$file') (' || exit 1')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(dragonegg)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ ('mv ') (${ VSub_Name op) ('s ') (${ VSub_Name op) (ll))}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(Rebuild.sh)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('llvm-as ') (${ VSub_Name op) ('ll || exit 1'))}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(Rebuild.sh)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:objs)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$objs') ($ VSub_DollarName '$sp') 
                                (${ VSub_Name op) (bc)
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:objs)
                      op: Equal
                      rhs: 
                        {
                          (DQ ($ VSub_DollarName '$objs') ($ VSub_DollarName '$sp') (${ VSub_Name op) 
                            (o)
                          )
                        }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)} {(llvm)}]
          action: [
            (command.Simple
              words: [{(echo)} {(DQ ('rm -f ') ($ VSub_DollarName '$tfn') (.s))}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
            )
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('llvm-link -o - ') ($ VSub_DollarName '$objs') (' | opt ') 
                    ($ VSub_DollarName '$optflags') (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lobjs)
                  op: Equal
                  rhs: {($ VSub_DollarName '$tfn') (.s)}
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lobjs)
                  op: Equal
                  rhs: {($ VSub_DollarName '$objs')}
                )
              ]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(echo)} {(Lit_VarLike 'tcfn=') ($ VSub_DollarName '$mkshexe')}]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.Simple
      words: [
        {(echo)}
        {
          (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
            ($ VSub_DollarName '$LDFLAGS') (' -o ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) ('tcfn ') ($ VSub_DollarName '$lobjs') 
            (' ') ($ VSub_DollarName '$LIBS') (' ') ($ VSub_DollarName '$ccpr')
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.Simple
      words: [
        {(echo)}
        {
          (DQ ('test -f ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
            ('tcfn || exit 1; ') ($ VSub_DollarName '$SIZE') (' ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) (tcfn)
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(makefile)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:extras)
                  op: Equal
                  rhs: {(SQ <'emacsfn.h rlimits.opt sh.h sh_flags.opt var_spec.h'>)}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$HAVE_SYS_SIGNAME')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:extras)
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$extras') (' signames.inc'))}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair lhs:(sh_lhs_expr.Name name:gens) op:Equal rhs:(word.Empty))
                (assign_pair lhs:(sh_lhs_expr.Name name:genq) op:Equal rhs:(word.Empty))
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ VSub_DollarName '$optfiles')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:genf)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_Backtick '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(basename)} {(DQ ($ VSub_DollarName '$file'))})
                                          (C {(sed)} {(SQ <'s/.opt$/.gen/'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:gens)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$gens') (' ') ($ VSub_DollarName '$genf'))}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:genq)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$genq') ($ VSub_DollarName '$nl') 
                                ($ VSub_DollarName '$genf') (': ') ($ VSub_DollarName '$srcdir') ('/Build.sh ') ($ VSub_DollarName '$srcdir') (/) 
                                ($ VSub_DollarName '$file') ('\n') ('\t\t\tsrcfile=') ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file') 
                                ('; BUILDSH_RUN_GENOPT=1; . ') ($ VSub_DollarName '$srcdir') (/Build.sh)
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(Makefrag.inc)}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 14387
                  stdin_parts: [
                    ('# Makefile fragment for building mksh ')
                    ($ VSub_DollarName '$dstversion')
                    ('\n')
                    ('\n')
                    ('PROG=\t\t')
                    ($ VSub_DollarName '$mkshexe')
                    ('\n')
                    ('MAN=\t\tmksh.1\n')
                    ('SRCS=\t\t')
                    ($ VSub_DollarName '$SRCS')
                    ('\n')
                    ('SRCS_FP=\t')
                    ($ VSub_DollarName '$files')
                    ('\n')
                    ('OBJS_BP=\t')
                    ($ VSub_DollarName '$objs')
                    ('\n')
                    ('INDSRCS=\t')
                    ($ VSub_DollarName '$extras')
                    ('\n')
                    ('NONSRCS_INST=\tdot.mkshrc ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(MAN)\n')
                    ('NONSRCS_NOINST=\tBuild.sh Makefile Rebuild.sh check.pl check.t test.sh\n')
                    ('CC=\t\t')
                    ($ VSub_DollarName '$CC')
                    ('\n')
                    ('CFLAGS=\t\t')
                    ($ VSub_DollarName '$CFLAGS')
                    ('\n')
                    ('CPPFLAGS=\t')
                    ($ VSub_DollarName '$CPPFLAGS')
                    ('\n')
                    ('LDFLAGS=\t')
                    ($ VSub_DollarName '$LDFLAGS')
                    ('\n')
                    ('LIBS=\t\t')
                    ($ VSub_DollarName '$LIBS')
                    ('\n')
                    ('\n')
                    ('.depend ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP):')
                    ($ VSub_DollarName '$gens')
                    ($ VSub_DollarName '$genq')
                    ('\n')
                    ('\n')
                    ('# not BSD make only:\n')
                    ('#VPATH=\t\t')
                    ($ VSub_DollarName '$srcdir')
                    ('\n')
                    ('#all: ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(PROG)\n')
                    ('#')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(PROG): ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP)\n')
                    ('#\t')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(CC) ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(CFLAGS) ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(LDFLAGS) -o ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('@ ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP) ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(LIBS)\n')
                    ('#')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP): ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(SRCS_FP) ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(NONSRCS)\n')
                    ('#.c.o:\n')
                    ('#\t')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(CC) ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(CFLAGS) ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(CPPFLAGS) -c ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('<\n')
                    ('\n')
                    ('# for all make variants:\n')
                    ('#REGRESS_FLAGS=\t-f\n')
                    ('#regress:\n')
                    ('#\t./test.sh ')
                    (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>)
                    ('(REGRESS_FLAGS)\n')
                    ('check_categories=')
                    ($ VSub_DollarName '$check_categories')
                    ('\n')
                    ('\n')
                    ('# for BSD make only:\n')
                    ('#.PATH: ')
                    ($ VSub_DollarName '$srcdir')
                    ('\n')
                    ('#.include <bsd.prog.mk>\n')
                  ]
                )
              ]
            )
            (C {($ VSub_DollarName '$e')})
            (C {($ VSub_DollarName '$e')} {(Generated)} {(Makefrag.inc)} {(successfully.)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
        )
      ]
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ VSub_DollarName '$optfiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {($ VSub_DollarName '$e')} 
              {(DQ ("+ Running genopt on '") ($ VSub_DollarName '$file') ("'..."))}
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(do_genopt)} {(DQ ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file'))})
                (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(combine)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:objs)
                  op: Equal
                  rhs: {(DQ ('-o ') ($ VSub_DollarName '$mkshexe'))}
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ VSub_DollarName '$SRCS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:file)
                              op: Equal
                              rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:objs)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$objs') (' ') ($ VSub_DollarName '$file'))}
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:emitbc)
                  op: Equal
                  rhs: {(DQ ('-fwhole-program --combine'))}
                )
              ]
            )
            (C {(v)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$objs') 
                  (' ') ($ VSub_DollarName '$LIBS') (' ') ($ VSub_DollarName '$ccpr')
                )
              }
            )
          ]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$pm')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ForEach
              iter_name: file
              iter_words: [{($ VSub_DollarName '$SRCS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:file)
                              op: Equal
                              rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                            )
                          ]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {(v)} 
                          {
                            (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                              ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$file')
                            )
                          }
                        )
                      terminator: <Op_Amp '&'>
                    )
                  ]
                )
            )
            (C {(wait)})
          ]
        )
      ]
      else_action: [
        (command.ForEach
          iter_name: file
          iter_words: [{($ VSub_DollarName '$SRCS')}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(dragonegg)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:op)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_Backtick '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(x) (DQ ($ VSub_DollarName '$file'))})
                                          (C {(sed)} {(SQ <'s/^x\\(.*\\)\\.c$/\\1./'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:file)
                          op: Equal
                          rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$file')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(dragonegg)})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(v)} {(DQ ('mv ') (${ VSub_Name op) ('s ') (${ VSub_Name op) (ll))})
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(v)} {(DQ ('llvm-as ') (${ VSub_Name op) (ll))})
                            (command.ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(1)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)} {(llvm)}]
          action: [
            (C {(rmf)} {($ VSub_DollarName '$tfn') (.s)})
            (C {(v)} 
              {
                (DQ ('llvm-link -o - ') ($ VSub_DollarName '$objs') (' | opt ') 
                  ($ VSub_DollarName '$optflags') (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                )
              }
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tcfn)
          op: Equal
          rhs: {($ VSub_DollarName '$mkshexe')}
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Equals '=')} {(combine)})
        (C {(v)} 
          {
            (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
              ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' ') ($ VSub_DollarName '$lobjs') (' ') ($ VSub_DollarName '$LIBS') 
              (' ') ($ VSub_DollarName '$ccpr')
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {($ VSub_DollarName '$tcfn')})
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.AndOr
      ops: [Op_DPipe Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$r')})
        (C {(v)} 
          {
            (DQ ($ VSub_DollarName '$NROFF') (" -mdoc <'") ($ VSub_DollarName '$srcdir') ("/mksh.1' >") 
              ($ VSub_DollarName '$tfn') (.cat1)
            )
          }
        )
        (C {(rmf)} {($ VSub_DollarName '$tfn') (.cat1)})
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(0)} {(Lit_Equals '=')} {($ VSub_DollarName '$eq')})
        (C {(v)} {($ VSub_DollarName '$SIZE')} {($ VSub_DollarName '$tcfn')})
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{(install)})]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(/usr/ucb/) ($ VSub_DollarName '$i')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:i)
              op: Equal
              rhs: {(/usr/ucb/) ($ VSub_DollarName '$i')}
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(1)} {(Lit_Equals '=')} {($ VSub_DollarName '$eq')})
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:e) op:Equal rhs:{(Lit_Other ':')})]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')})
    (C {($ VSub_DollarName '$e')} {(Installing)} {(the)} {(shell) (Lit_Other ':')})
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ('# ') ($ VSub_DollarName '$i') (' -c -s -o root -g bin -m 555 ') ($ VSub_DollarName '$tfn') 
          (' /bin/') ($ VSub_DollarName '$tfn')
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Equals '=')} {(0)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ('# grep -x /bin/') ($ VSub_DollarName '$tfn') 
                  (' /etc/shells >/dev/null || echo /bin/') ($ VSub_DollarName '$tfn') (' >>/etc/shells')
                )
              }
            )
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ('# ') ($ VSub_DollarName '$i') 
                  (' -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/')
                )
              }
            )
          ]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')})
    (C {($ VSub_DollarName '$e')} {(Installing)} {(the)} {(manual) (Lit_Other ':')})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-f)} {($ VSub_DollarName '$tfn') (.cat1)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ('# ') ($ VSub_DollarName '$i') (' -c -o root -g bin -m 444 ') 
                  ($ VSub_DollarName '$tfn') (.cat1)
                )
              } {(DQ (/usr/share/man/cat1/) ($ VSub_DollarName '$tfn') (.0))}
            )
            (C {($ VSub_DollarName '$e')} {(or)})
          ]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ('# ') ($ VSub_DollarName '$i') (' -c -o root -g bin -m 444 ') ($ VSub_DollarName '$tfn') 
          ('.1 /usr/share/man/man1/') ($ VSub_DollarName '$tfn') (.1)
        )
      }
    )
    (C {($ VSub_DollarName '$e')})
    (C {($ VSub_DollarName '$e')} {(Run)} {(the)} {(regression)} {(test)} {(suite) (Lit_Other ':')} 
      {(./test.sh)}
    )
    (C {($ VSub_DollarName '$e')} {(Please)} {(also)} {(read)} {(the)} {(sample)} {(file)} {(dot.mkshrc)} 
      {(and)} {(the)} {(fine)} {(manual.)}
    )
    (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
    (command.Simple
      words: [{(Lit_Other ':')}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOD>)}
          here_end_span_id: 15135
          stdin_parts: [
            ('\n')
            ('=== Environment used ===\n')
            ('\n')
            ('==== build environment ====\n')
            ('AWK\t\t\t\tdefault: awk\n')
            ('CC\t\t\t\tdefault: cc\n')
            ('CFLAGS\t\t\t\tif empty, defaults to -xO2 or +O2\n')
            ('\t\t\t\tor -O3 -qstrict or -O2, per compiler\n')
            ('CPPFLAGS\t\t\tdefault empty\n')
            ('LDFLAGS\t\t\t\tdefault empty; added before sources\n')
            ("LDSTATIC\t\t\tset this to '-static'; default unset\n")
            ('LIBS\t\t\t\tdefault empty; added after sources\n')
            ('\t\t\t\t[Interix] default: -lcrypt (XXX still needed?)\n')
            ('NOWARN\t\t\t\t-Wno-error or similar\n')
            ('NROFF\t\t\t\tdefault: nroff\n')
            ('TARGET_OS\t\t\tdefault: $(uname -s || uname)\n')
            ('TARGET_OSREV\t\t\t[QNX] default: $(uname -r)\n')
            ('\n')
            ('==== feature selectors ====\n')
            ('USE_PRINTF_BUILTIN\t\t1 to include (unsupported) printf(1) as builtin\n')
            ('===== general format =====\n')
            ('HAVE_STRLEN\t\t\tac_test\n')
            ('HAVE_STRING_H\t\t\tac_header\n')
            ('HAVE_CAN_FSTACKPROTECTORALL\tac_flags\n')
            ('\n')
            ('==== cpp definitions ====\n')
            ('DEBUG\t\t\t\tdont use in production, wants gcc, implies:\n')
            ('DEBUG_LEAKS\t\t\tenable freeing resources before exiting\n')
            ('MKSHRC_PATH\t\t\t"~/.mkshrc" (do not change)\n')
            ('MKSH_A4PB\t\t\tforce use of arc4random_pushb\n')
            ('MKSH_ASSUME_UTF8\t\t(0=disabled, 1=enabled; default: unset)\n')
            ('MKSH_BINSHPOSIX\t\t\tif */sh or */-sh, enable set -o posix\n')
            ('MKSH_BINSHREDUCED\t\tif */sh or */-sh, enable set -o sh\n')
            ('MKSH_CLRTOEOL_STRING\t\t"\\033[K"\n')
            ('MKSH_CLS_STRING\t\t\t"\\033[;H\\033[J"\n')
            ('MKSH_CONSERVATIVE_FDS\t\tfd 0-9 for scripts, shell only up to 31\n')
            ('MKSH_DEFAULT_EXECSHELL\t\t"/bin/sh" (do not change)\n')
            ('MKSH_DEFAULT_PROFILEDIR\t\t"/etc" (do not change)\n')
            ('MKSH_DEFAULT_TMPDIR\t\t"/tmp" (do not change)\n')
            ('MKSH_DISABLE_DEPRECATED\t\tdisable code paths scheduled for later removal\n')
            ('MKSH_DISABLE_EXPERIMENTAL\tdisable code not yet comfy for (LTS) snapshots\n')
            ('MKSH_DISABLE_TTY_WARNING\tshut up warning about ctty if OS cant be fixed\n')
            ('MKSH_DONT_EMIT_IDSTRING\t\tomit RCS IDs from binary\n')
            ('MKSH_MIDNIGHTBSD01ASH_COMPAT\tset -o sh: additional compatibility quirk\n')
            ('MKSH_NOPROSPECTOFWORK\t\tdisable jobs, co-processes, etc. (do not use)\n')
            ('MKSH_NOPWNAM\t\t\tskip PAM calls, for -static on glibc or Solaris\n')
            ('MKSH_NO_CMDLINE_EDITING\t\tdisable command line editing code entirely\n')
            ('MKSH_NO_DEPRECATED_WARNING\tomit warning when deprecated stuff is run\n')
            ('MKSH_NO_LIMITS\t\t\tomit ulimit code\n')
            ('MKSH_NO_SIGSETJMP\t\tdefine if sigsetjmp is broken or not available\n')
            ('MKSH_NO_SIGSUSPEND\t\tuse sigprocmask+pause instead of sigsuspend\n')
            ('MKSH_SMALL\t\t\tomit some code, optimise hard for size (slower)\n')
            ('MKSH_SMALL_BUT_FAST\t\tdisable some hard-for-size optim. (modern sys.)\n')
            ('MKSH_S_NOVI=1\t\t\tdisable Vi editing mode (default if MKSH_SMALL)\n')
            ("MKSH_TYPEDEF_SIG_ATOMIC_T\tdefine to e.g. 'int' if sig_atomic_t is missing\n")
            ("MKSH_TYPEDEF_SSIZE_T\t\tdefine to e.g. 'long' if your OS has no ssize_t\n")
            ('MKSH_UNEMPLOYED\t\t\tdisable job control (but not jobs/co-processes)\n')
            ('\n')
            ('=== generic installation instructions ===\n')
            ('\n')
            ('Set CC and possibly CFLAGS, CPPFLAGS, LDFLAGS, LIBS. If cross-compiling,\n')
            ('also set TARGET_OS. To disable tests, set e.g. HAVE_STRLCPY=0; to enable\n')
            ('them, set to a value other than 0 or 1. Ensure /bin/ed is installed. For\n')
            ('MKSH_SMALL but with Vi mode, add -DMKSH_S_NOVI=0 to CPPFLAGS as well.\n')
            ('\n')
            ('Normally, the following command is what you want to run, then:\n')
            ('$ (sh Build.sh -r -c lto && ./test.sh -f) 2>&1 | tee log\n')
            ('\n')
            ('Copy dot.mkshrc to /etc/skel/.mkshrc; install mksh into $prefix/bin; or\n')
            ('/bin; install the manpage, if omitting the -r flag a catmanpage is made\n')
            ('using $NROFF. Consider using a forward script as /etc/skel/.mkshrc like\n')
            ('http://anonscm.debian.org/cgit/collab-maint/mksh.git/plain/debian/.mkshrc\n')
            ('and put dot.mkshrc as /etc/mkshrc so users need not keep up their HOME.\n')
            ('\n')
            ('You may also want to install the lksh binary (also as /bin/sh) built by:\n')
            ('$ CPPFLAGS="$CPPFLAGS -DMKSH_BINSHPOSIX" sh Build.sh -L -r -c lto\n')
            ('\n')
          ]
        )
      ]
    )
  ]
)