(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:srcversion)
          op: assign_op.Equal
          rhs: {(SQ <'$MirOS: src/bin/mksh/Build.sh,v 1.697 2016/03/04 18:28:39 tg Exp $'>)}
          spids: [3]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LC_ALL)
          op: assign_op.Equal
          rhs: {<C>}
          spids: [81]
        )
      ]
    )
    (C {<export>} {<LC_ALL>})
    (command.Case
      to_match: 
        {($ Id.VSub_DollarName '$ZSH_VERSION') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$VERSION')}
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Colon ':'> <zsh> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ZSH_VERSION)
                  op: assign_op.Equal
                  rhs: {<2>}
                  spids: [102]
                )
              ]
            )
          ]
          spids: [97 100 105 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-n>} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name ZSH_VERSION>
                                suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<x>})
                              )
                            )
                          }
                        )
                        (command.Subshell
                          child: (C {<emulate>} {<sh>})
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<emulate>} {<sh>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NULLCMD)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [147]
                )
              ]
            )
          ]
          spids: [110 139]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<test>} {<-d>} {<'/usr/xpg4/bin/.'>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATH)
                  op: assign_op.Equal
                  rhs: {<'/usr/xpg4/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$PATH')}
                  spids: [175]
                )
              ]
            )
            (C {<export>} {<PATH>})
          ]
          spids: [153 168]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nl)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
          spids: [188]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:safeIFS)
          op: assign_op.Equal
          rhs: {(SQ <'\t'>)}
          spids: [193]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:safeIFS)
          op: assign_op.Equal
          rhs: {(DQ <' '> ($ Id.VSub_DollarName '$safeIFS') ($ Id.VSub_DollarName '$nl'))}
          spids: [198]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IFS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$safeIFS')}
          spids: [205]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:allu)
          op: assign_op.Equal
          rhs: {<QWERTYUIOPASDFGHJKLZXCVBNM>}
          spids: [208]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alll)
          op: assign_op.Equal
          rhs: {<qwertyuiopasdfghjklzxcvbnm>}
          spids: [211]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alln)
          op: assign_op.Equal
          rhs: {<0123456789>}
          spids: [214]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alls)
          op: assign_op.Equal
          rhs: {<______________________________________________________________>}
          spids: [217]
        )
      ]
    )
    (command.ShFunction
      name: genopt_die
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'E: '> ($ Id.VSub_Star '$*'))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'E: in \''> ($ Id.VSub_DollarName '$srcfile') <'\': \''> 
                            ($ Id.VSub_DollarName '$line') <'\''>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [228 239]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'E: invalid input in \''> ($ Id.VSub_DollarName '$srcfile') <'\': \''> 
                        ($ Id.VSub_DollarName '$line') <'\''>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
            )
            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$bn') <.gen>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: genopt_soptc
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:optc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))})
                              (C {<sed>} {(SQ <'s/^[<>]\\(.\\).*$/\\1/'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [311]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$optc'))} {<Id.Lit_Equals '='>} 
                  {<x> (SQ <'|'>)}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:optclo)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$optc'))})
                              (C {<tr>} {($ Id.VSub_DollarName '$allu')} 
                                {($ Id.VSub_DollarName '$alll')}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [356]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$optc'))} {<Id.Lit_Equals '='>} 
                              {<x> (DQ ($ Id.VSub_DollarName '$optclo'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:islo)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [396]
                        )
                      ]
                    )
                  ]
                  spids: [376 393]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:islo)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [403]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sym)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))})
                              (C {<sed>} {(SQ <'s/^[<>]/|/'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [410]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_str)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$o_str') ($ Id.VSub_DollarName '$nl') 
                      (DQ <'<'> ($ Id.VSub_DollarName '$optclo') ($ Id.VSub_DollarName '$islo') 
                        ($ Id.VSub_DollarName '$sym')
                      )
                    }
                  spids: [430]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: genopt_scond
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {<x> ($ Id.VSub_DollarName '$cond')}
              arms: [
                (case_arm
                  pat_list: [{<x>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [462]
                        )
                      ]
                    )
                  ]
                  spids: [458 459 465 -1]
                )
                (case_arm
                  pat_list: [{<x> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                                      (C {<sed>} {(SQ <'s/^ //'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [477]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: assign_op.Equal
                          rhs: {(DQ <'#if '> ($ Id.VSub_DollarName '$cond'))}
                          spids: [497]
                        )
                      ]
                    )
                  ]
                  spids: [468 474 504 -1]
                )
                (case_arm
                  pat_list: [{<x> (SQ <'!'>) <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                                      (C {<sed>} {(SQ <'s/^!//'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [515]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: assign_op.Equal
                          rhs: {(DQ <'#ifndef '> ($ Id.VSub_DollarName '$cond'))}
                          spids: [535]
                        )
                      ]
                    )
                  ]
                  spids: [507 512 542 -1]
                )
                (case_arm
                  pat_list: [{<x> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cond)
                          op: assign_op.Equal
                          rhs: {(DQ <'#ifdef '> ($ Id.VSub_DollarName '$cond'))}
                          spids: [550]
                        )
                      ]
                    )
                  ]
                  spids: [545 547 557 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_genopt
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcfile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [572]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$srcfile'))})
                (C {<genopt_die>} {<Source>} {<file>} 
                  {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <srcfile>} {<not>} {<set.>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:bn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<basename>} {(DQ ($ Id.VSub_DollarName '$srcfile'))})
                              (C {<sed>} {(SQ <'s/.opt$//'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [600]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_hdr)
                  op: assign_op.Equal
                  rhs: {(SQ <'/* +++ GENERATED FILE +++ DO NOT EDIT +++ */'>)}
                  spids: [620]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_gen)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [626]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_str)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [629]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:o_sym)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [632]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ddefs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [635]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:state)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [638]
                )
              ]
            )
            (command.Simple
              words: [{<exec>}]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$srcfile'))}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [650]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<read>} {<line>}]
                          more_env: [(env_pair name:IFS val:(word.Empty) spids:[655])]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$safeIFS')}
                          spids: [665]
                        )
                      ]
                    )
                    (command.Case
                      to_match: 
                        {($ Id.VSub_DollarName '$state') <Id.Lit_Colon ':'> 
                          ($ Id.VSub_DollarName '$line')
                        }
                      arms: [
                        (case_arm
                          pat_list: [{<2> <Id.Lit_Colon ':'> (SQ <'|'>) <Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_sym)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))})
                                              (C {<sed>} {(SQ <'s/^.//'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [691]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ <'#undef F0'>)
                                    }
                                  spids: [711]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ <'#undef FN'>)
                                    }
                                  spids: [719]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$ddefs')}
                                  spids: [727]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:state)
                                  op: assign_op.Equal
                                  rhs: {<3>}
                                  spids: [732]
                                )
                              ]
                            )
                          ]
                          spids: [678 684 736 -1]
                        )
                        (case_arm
                          pat_list: [{<1> <Id.Lit_Colon ':'> <Id.Lit_At '@'> <Id.Lit_At '@'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ <'#endif'>)
                                    }
                                  spids: [750]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ <'#ifndef F0'>)
                                    }
                                  spids: [758]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ <'#define F0 FN'>)
                                    }
                                  spids: [766]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ <'#endif'>)
                                    }
                                  spids: [774]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:state)
                                  op: assign_op.Equal
                                  rhs: {<2>}
                                  spids: [782]
                                )
                              ]
                            )
                          ]
                          spids: [739 743 786 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_At '@'> <Id.Lit_At '@'> 
                              <Id.Lit_Star '*'>
                            }
                          ]
                          action: [(C {<genopt_die>})]
                          spids: [789 794 799 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<0> <Id.Lit_Colon ':'> <'/'> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\*'>
                              ) <->
                            }
                            {<0> <Id.Lit_Colon ':'> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\ '>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>) <Id.Lit_Star '*'>
                            }
                            {<0> <Id.Lit_Colon ':'>}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_hdr)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_hdr') ($ Id.VSub_DollarName '$nl') 
                                      ($ Id.VSub_DollarName '$line')
                                    }
                                  spids: [819]
                                )
                              ]
                            )
                          ]
                          spids: [802 816 825 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<0> <Id.Lit_Colon ':'> <Id.Lit_At '@'> <Id.Lit_Star '*'>}
                            {<1> <Id.Lit_Colon ':'> <Id.Lit_At '@'> <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:sym)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))})
                                              (C {<sed>} {(SQ <'s/^@//'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [844]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {($ Id.VSub_DollarName '$state')} 
                                              {<Id.Lit_Equals '='>} {<0>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:o_gen)
                                          op: assign_op.Equal
                                          rhs: 
                                            {($ Id.VSub_DollarName '$o_gen') 
                                              ($ Id.VSub_DollarName '$nl') (DQ <'#if defined('> ($ Id.VSub_DollarName '$sym') <')'>)
                                            }
                                          spids: [878]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [864 875]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:o_gen)
                                      op: assign_op.Equal
                                      rhs: 
                                        {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                          (DQ <'#elif defined('> ($ Id.VSub_DollarName '$sym') <')'>)
                                        }
                                      spids: [891]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ddefs)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$ddefs') ($ Id.VSub_DollarName '$nl') 
                                        <'#undef '> ($ Id.VSub_DollarName '$sym')
                                      )
                                    }
                                  spids: [904]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:state)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [913]
                                )
                              ]
                            )
                          ]
                          spids: [828 837 917 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<0> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}
                            {<3> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}
                          ]
                          action: [(C {<genopt_die>})]
                          spids: [920 927 932 -1]
                        )
                        (case_arm
                          pat_list: [{<1> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      ($ Id.VSub_DollarName '$line')
                                    }
                                  spids: [945]
                                )
                              ]
                            )
                          ]
                          spids: [935 938 951 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<2> <Id.Lit_Colon ':'> (SQ <'<'>) <Id.Lit_Star '*'> (SQ <'|'>) 
                              <Id.Lit_Star '*'>
                            }
                          ]
                          action: [(C {<genopt_soptc>})]
                          spids: [954 964 970 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<2> <Id.Lit_Colon ':'> (SQ <'>'>) <Id.Lit_Star '*'> (SQ <'|'>) 
                              <Id.Lit_Star '*'>
                            }
                          ]
                          action: [
                            (C {<genopt_soptc>})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cond)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))})
                                              (C {<sed>} {(SQ <'s/^[^|]*|//'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [989]
                                )
                              ]
                            )
                            (C {<genopt_scond>})
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$optc')}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ <'|'>)}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:optc)
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                          spids: [1024]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1019 1022 1027 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:optc)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\\''>
                                              ) ($ Id.VSub_DollarName '$optc') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>)
                                            }
                                          spids: [1033]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1030 1031 1038 -1]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{<read>} {<line>}]
                                  more_env: [(env_pair name:IFS val:(word.Empty) spids:[1044])]
                                  do_fork: T
                                )
                                (C {<genopt_die>} {<Unexpected>} {<EOF>})
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$safeIFS')}
                                  spids: [1059]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:o_gen)
                                      op: assign_op.Equal
                                      rhs: 
                                        {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                          (DQ ($ Id.VSub_DollarName '$cond'))
                                        }
                                      spids: [1073]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:o_gen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                      (DQ ($ Id.VSub_DollarName '$line') <', '> 
                                        ($ Id.VSub_DollarName '$optc') <')'>
                                      )
                                    }
                                  spids: [1081]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:o_gen)
                                      op: assign_op.Equal
                                      rhs: 
                                        {($ Id.VSub_DollarName '$o_gen') ($ Id.VSub_DollarName '$nl') 
                                          (DQ <'#endif'>)
                                        }
                                      spids: [1102]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [973 983 1110 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$state') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$o_sym')}
              arms: [
                (case_arm
                  pat_list: [{<3> <Id.Lit_Colon ':'>}]
                  action: [(C {<genopt_die>} {<Expected>} {<optc>} {<sym>} {<at>} {<EOF>})]
                  spids: [1128 1130 1144 -1]
                )
                (case_arm
                  pat_list: [{<3> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                  spids: [1147 1150 1152 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<genopt_die>} {<Missing>} {<EOF>} {<marker>})]
                  spids: [1155 1156 1166 -1]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$o_str'))})
                (C {<sort>})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<read>} {<x>} {<opts>} {<cond>}]
                              more_env: [(env_pair name:IFS val:{(SQ <'|'>)} spids:[1186])]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$safeIFS')}
                              spids: [1203]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$x'))})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (C {<genopt_scond>})
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                            (C {<echo>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                          ]
                        )
                        (C {<echo>} 
                          {
                            (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                              ($ Id.VSub_DollarName '$opts') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$cond'))})
                            (C {<echo>} {(DQ <'#endif'>)})
                          ]
                        )
                      ]
                    )
                )
                (BraceGroup
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$o_hdr'))})
                    (C {<echo>} 
                      {
                        (DQ <'#ifndef '> ($ Id.VSub_DollarName '$o_sym') 
                          ($ Id.VSub_DollarName '$o_gen')
                        )
                      }
                    )
                    (C {<echo>} {(DQ <'#else'>)})
                    (C {<cat>})
                    (C {<echo>} {(DQ <'#undef '> ($ Id.VSub_DollarName '$o_sym'))})
                    (C {<echo>} {(DQ <'#endif'>)})
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$bn') <.gen>)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$safeIFS')}
                  spids: [1323]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$BUILDSH_RUN_GENOPT'))} 
                      {<Id.Lit_Equals '='>} {<x> (DQ <1>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<set>} {<x>} {<-G>} {(DQ ($ Id.VSub_DollarName '$srcfile'))}) (C {<shift>})]
          spids: [1334 1351]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} {<x> (DQ <-G>)})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<do_genopt>} {(DQ ($ Id.VSub_Number '$2'))})
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
          spids: [1369 1386]
        )
      ]
    )
    (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: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$e')} {(DQ ($ Id.VSub_Star '$*'))})
            (C {<eval>} {(DQ ($ Id.VSub_At '$@'))})
          ]
        )
    )
    (command.ShFunction
      name: vv
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_c)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1448]
                )
              ]
            )
            (C {<shift>})
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$e')}
                {
                  (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <' '> 
                    ($ Id.VSub_Star '$*')
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (command.Simple
              words: [{<eval>} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<vv.out>})
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<sed>} {(DQ <'s\x07^\x07'> (${ Id.VSub_Name _c) <' \x07'>)}]
              redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<vv.out>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: vq
      body: (BraceGroup children:[(C {<eval>} {(DQ ($ Id.VSub_At '$@'))})])
    )
    (command.ShFunction
      name: rmf
      body: 
        (BraceGroup
          children: [
            (command.ForEach
              iter_name: _f
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$_f')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Build.sh>}
                            {<check.pl>}
                            {<check.t>}
                            {<dot.mkshrc>}
                            {<Id.Lit_Star '*'> <.1>}
                            {<Id.Lit_Star '*'> <.c>}
                            {<Id.Lit_Star '*'> <.h>}
                            {<Id.Lit_Star '*'> <.ico>}
                            {<Id.Lit_Star '*'> <.opt>}
                          ]
                          spids: [1540 1562 1564 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$_f'))})]
                          spids: [1567 1568 1578 -1]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tcfn)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [1589]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bi)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1592]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ui)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1594]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ao)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1596]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:fx)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1598]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:me)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<basename>} {(DQ ($ Id.VSub_Number '$0'))})
              )
            }
          spids: [1600]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:orig_CFLAGS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$CFLAGS')}
          spids: [1611]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:phase)
          op: assign_op.Equal
          rhs: {<x>}
          spids: [1614]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:oldish_ed)
          op: assign_op.Equal
          rhs: {<stdout-ed> <Id.Lit_Comma ','> <no-stderr-ed>}
          spids: [1617]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-t>} {<1>}) terminator:<Id.Op_Semi _>)]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:bi)
                  op: assign_op.Equal
                  rhs: {(SQ <'\x1b[1m'>)}
                  spids: [1635]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ui)
                  op: assign_op.Equal
                  rhs: {(SQ <'\x1b[4m'>)}
                  spids: [1641]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ao)
                  op: assign_op.Equal
                  rhs: {(SQ <'\x1b[0m'>)}
                  spids: [1647]
                )
              ]
            )
          ]
          spids: [1623 1632]
        )
      ]
    )
    (command.ShFunction
      name: upper
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<echo>} {<Id.Lit_Colon ':'> (DQ ($ Id.VSub_At '$@'))})
                (C {<sed>} {(SQ <'s/^://'>)})
                (C {<tr>} {($ Id.VSub_DollarName '$alll')} {($ Id.VSub_DollarName '$allu')})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_testdone
      body: 
        (BraceGroup
          children: [
            (C {<eval>} 
              {<HAVE_> ($ Id.VSub_DollarName '$fu') <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$fv')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fr)
                  op: assign_op.Equal
                  rhs: {<no>}
                  spids: [1706]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$fv')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fr)
                      op: assign_op.Equal
                      rhs: {<yes>}
                      spids: [1720]
                    )
                  ]
                )
              ]
            )
            (C {($ Id.VSub_DollarName '$e')} 
              {
                (DQ ($ Id.VSub_DollarName '$bi') <'==> '> ($ Id.VSub_DollarName '$fd') <...> 
                  ($ Id.VSub_DollarName '$ao') <' '> ($ Id.VSub_DollarName '$ui') ($ Id.VSub_DollarName '$fr') ($ Id.VSub_DollarName '$ao') 
                  ($ Id.VSub_DollarName '$fx')
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fx)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1740]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_cache
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:f)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1755]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fu)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<upper>} {($ Id.VSub_DollarName '$f')})
                      )
                    }
                  spids: [1759]
                )
              ]
            )
            (C {<eval>} 
              {<Id.Lit_VarLike 'fv='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                <HAVE_> ($ Id.VSub_DollarName '$fu')
              }
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$fv')}
              arms: [
                (case_arm
                  pat_list: [{<0>} {<1>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fx)
                          op: assign_op.Equal
                          rhs: {(SQ <' (cached)'>)}
                          spids: [1790]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [1784 1787 1801 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fv)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1807]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: ac_testinit
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<ac_cache>} {($ Id.VSub_Number '$1')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<x> (DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Equals '='>} 
                          {<x> (DQ <'!'>)}
                        )
                        (C {<shift>})
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<x> (DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                        (C {<shift>})
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fd)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Number 3>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_Hyphen ->
                                    arg_word: {($ Id.VSub_DollarName '$f')}
                                  )
                              )
                            }
                          spids: [1878]
                        )
                      ]
                    )
                    (C {<ac_testdone>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1831 1838]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fc)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1897]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<x> (DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ft)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [1920]
                        )
                      ]
                    )
                  ]
                  spids: [1901 1917]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {<x> (DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Equals '='>} 
                                  {<x> (DQ <'!'>)}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:fc)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [1947]
                            )
                          ]
                        )
                        (C {<shift>})
                      ]
                      spids: [1927 1944]
                    )
                  ]
                )
                (C {<eval>} 
                  {<Id.Lit_VarLike 'ft='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                    <HAVE_> (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<upper>} {($ Id.VSub_Number '$2')}))
                  }
                )
                (C {<shift>})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 3>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_Hyphen ->
                            arg_word: {($ Id.VSub_DollarName '$f')}
                          )
                      )
                    }
                  spids: [1977]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {($ Id.VSub_DollarName '$fc')} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$ft'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$2')}
                          spids: [2001]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fx)
                          op: assign_op.Equal
                          rhs: {(SQ <' (implied)'>)}
                          spids: [2005]
                        )
                      ]
                    )
                    (C {<ac_testdone>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1985 1998]
                )
              ]
            )
            (C {($ Id.VSub_DollarName '$e')} {<Id.Lit_TDot ...>} {($ Id.VSub_DollarName '$fd')})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: ac_testnnd
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                              {<x> (DQ <'!'>)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fr)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [2066]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [2046 2063]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fr)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [2076]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<ac_testinit>} {(DQ ($ Id.VSub_At '$@'))})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conftest.c>})]
              do_fork: T
            )
            (C {<vv>} {(SQ <']'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS') <' '> ($ Id.VSub_DollarName '$ccpr')
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$tcfn')} {<Id.Lit_Equals '='>} {<no>})
                (C {<test>} {<-f>} {<a.out>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tcfn)
                      op: assign_op.Equal
                      rhs: {<a.out>}
                      spids: [2143]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$tcfn')} {<Id.Lit_Equals '='>} {<no>})
                (C {<test>} {<-f>} {<a.exe>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tcfn)
                      op: assign_op.Equal
                      rhs: {<a.exe>}
                      spids: [2165]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$tcfn')} {<Id.Lit_Equals '='>} {<no>})
                (C {<test>} {<-f>} {<conftest.exe>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tcfn)
                      op: assign_op.Equal
                      rhs: {<conftest.exe>}
                      spids: [2187]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$tcfn')} {<Id.Lit_Equals '='>} {<no>})
                (C {<test>} {<-f>} {<conftest>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tcfn)
                      op: assign_op.Equal
                      rhs: {<conftest>}
                      spids: [2209]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-f>} {($ Id.VSub_DollarName '$tcfn')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$fr')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:fv)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [2235]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2213 2222]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$fr')})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [2252]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:vscan)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2259]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {($ Id.VSub_DollarName '$phase')} {<Id.Lit_Equals '='>} {<u>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<gcc>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: assign_op.Equal
                              rhs: {(SQ <'unrecogni[sz]ed'>)}
                              spids: [2286]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<hpcc>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: assign_op.Equal
                              rhs: {(SQ <unsupported>)}
                              spids: [2302]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<pcc>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: assign_op.Equal
                              rhs: {(SQ <unsupported>)}
                              spids: [2318]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<sunpro>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:vscan)
                              op: assign_op.Equal
                              rhs: {(SQ <'-e ignored -e turned.off'>)}
                              spids: [2334]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2262 2273]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$vscan'))})
                (command.Simple
                  words: [{<grep>} {($ Id.VSub_DollarName '$vscan')} {<vv.out>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  do_fork: T
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fv)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$fr')}
                      spids: [2367]
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: ac_testn
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<ac_testnnd>} {(DQ ($ Id.VSub_At '$@'))})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<rmf>} {<conftest.c>} {<conftest.o>} {(${ Id.VSub_Name tcfn) <Id.Lit_Star '*'>} {<vv.out>})
            (C {<ac_testdone>})
          ]
        )
    )
    (command.ShFunction
      name: ac_ifcpp
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:expr)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [2424]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Simple
              words: [{<ac_testn>} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                        <'#'>
                        ($ Id.VSub_DollarName '$expr')
                        <'\n'>
                        <'    0\n'>
                        <'#else\n'>
                        <'/* force a failure: expr is false */\n'>
                        <'    thiswillneverbedefinedIhope()\n'>
                        <'#endif\n'>
                        <'    ); }\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} {<x> (DQ <'!'>)})
                (C {<shift>})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:f)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2474]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fu)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<upper>} {($ Id.VSub_DollarName '$f')})
                      )
                    }
                  spids: [2478]
                )
              ]
            )
            (C {<eval>} 
              {<Id.Lit_VarLike 'fv='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                <HAVE_> ($ Id.VSub_DollarName '$fu')
              }
            )
            (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$fv'))} {<Id.Lit_Equals '='>} {<x> (DQ <1>)})
          ]
        )
    )
    (command.ShFunction
      name: add_cppflags
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_Star '$*'))}
                  spids: [2520]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_cppflags
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fu)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [2552]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fv)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [2556]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (C {<eval>} 
                  {<Id.Lit_VarLike 'fv='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                    <HAVE_> ($ Id.VSub_DollarName '$fu')
                  }
                )
              ]
            )
            (C {<add_cppflags>} 
              {<-DHAVE_> ($ Id.VSub_DollarName '$fu') <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$fv')}
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_test
      body: (BraceGroup children:[(C {<ac_testn>} {(DQ ($ Id.VSub_At '$@'))}) (C {<ac_cppflags>})])
    )
    (command.ShFunction
      name: ac_flags
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                              {<x> (DQ <->)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<shift>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:hf)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [2645]
                        )
                      ]
                    )
                  ]
                  spids: [2622 2639]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:hf)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [2652]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fa)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2659]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:vn)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [2663]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:f)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$3')}
                  spids: [2667]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ft)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$4')}
                  spids: [2671]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fl)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$5')}
                  spids: [2675]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$ft'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ft)
                      op: assign_op.Equal
                      rhs: {(DQ <'if '> ($ Id.VSub_DollarName '$f') <' can be used'>)}
                      spids: [2694]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_CFLAGS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$CFLAGS')}
                  spids: [2702]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CFLAGS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$CFLAGS') <' '> ($ Id.VSub_DollarName '$f'))}
                  spids: [2706]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$fl'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:save_LDFLAGS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$LDFLAGS')}
                          spids: [2728]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:LDFLAGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$fl'))
                            }
                          spids: [2732]
                        )
                      ]
                    )
                  ]
                  spids: [2714 2725]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$hf')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<ac_testn>} {<can_> ($ Id.VSub_DollarName '$vn')} {(SQ )} 
                      {(DQ ($ Id.VSub_DollarName '$ft'))}
                    )
                  ]
                  spids: [2743 2754]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<ac_testn>}
                    {<can_> ($ Id.VSub_DollarName '$vn')}
                    {(SQ )}
                    {(DQ ($ Id.VSub_DollarName '$ft'))}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DLessDash '<<-'>
                      loc: (redir_loc.Fd fd:0)
                      arg: 
                        (redir_param.HereDoc
                          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'>
                          ]
                        )
                    )
                  ]
                  do_fork: T
                )
              ]
            )
            (C {<eval>} 
              {<Id.Lit_VarLike 'fv='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                <HAVE_CAN_> (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<upper>} {($ Id.VSub_DollarName '$vn')}))
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$fl'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<11>} {<Id.Lit_Equals '='>} 
                          {($ Id.VSub_DollarName '$fa') ($ Id.VSub_DollarName '$fv')}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:LDFLAGS)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$save_LDFLAGS')}
                              spids: [2837]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2812 2823]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<11>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName '$fa') ($ Id.VSub_DollarName '$fv')}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CFLAGS)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$save_CFLAGS')}
                      spids: [2855]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ac_header
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                              {<x> (DQ <'!'>)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:na)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [2891]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [2871 2888]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:na)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [2901]
                    )
                  ]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:hf)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [2908]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:hv)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$hf'))})
                              (C {<tr>} {<-d>} {(SQ <'\\012\\015'>)})
                              (C {<tr>} {<-c>} 
                                {($ Id.VSub_DollarName '$alll') ($ Id.VSub_DollarName '$allu') 
                                  ($ Id.VSub_DollarName '$alln')
                                } {($ Id.VSub_DollarName '$alls')}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [2915]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'/* NeXTstep bug workaround */'>)}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
              do_fork: T
            )
            (command.ForEach
              iter_name: i
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$i')}
                      arms: [
                        (case_arm
                          pat_list: [{<_time>}]
                          action: [
                            (command.Simple
                              words: [{<echo>} {(SQ <'#if HAVE_BOTH_TIME_H'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#include <sys/time.h>'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#include <time.h>'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#elif HAVE_SYS_TIME_H'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#include <sys/time.h>'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#elif HAVE_TIME_H'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#include <time.h>'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<echo>} {(SQ <'#endif'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [2978 2979 3062 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.Simple
                              words: [{<echo>} {(DQ <'#include <'> ($ Id.VSub_DollarName '$i') <'>'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<x>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [3065 3066 3081 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{<echo>} {(DQ <'#include <'> ($ Id.VSub_DollarName '$hf') <'>'>)}]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(SQ <'#include <unistd.h>'>)}]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(SQ <'int main(void) { return (isatty(0)); }'>)}]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_testn>}
                {(DQ ($ Id.VSub_DollarName '$hv'))}
                {(DQ )}
                {(DQ <'<'> ($ Id.VSub_DollarName '$hf') <'>'>)}
              ]
              redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})]
              do_fork: T
            )
            (C {<rmf>} {<x>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$na')})
                (C {<ac_cppflags>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: addsrcs
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<x> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                              {<x> (DQ <'!'>)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fr)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [3188]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [3168 3185]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fr)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [3198]
                    )
                  ]
                )
              ]
            )
            (C {<eval>} 
              {<Id.Lit_VarLike 'i='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                ($ Id.VSub_Number '$1')
              }
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$fr')} {<Id.Lit_Equals '='>} 
                  {(DQ ($ Id.VSub_DollarName '$i'))}
                )
                (command.Case
                  to_match: {(DQ <' '> ($ Id.VSub_DollarName '$SRCS') <' '>)}
                  arms: [
                    (case_arm
                      pat_list: [
                        {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
                          ($ Id.VSub_Number '$2') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <Id.Lit_Star '*'>
                        }
                      ]
                      spids: [3235 3240 3242 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SRCS)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName '$SRCS') <' '> ($ Id.VSub_Number '$2'))}
                              spids: [3248]
                            )
                          ]
                        )
                      ]
                      spids: [3245 3246 3255 -1]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:curdir)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
          spids: [3264]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:srcdir)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [{<dirname>} {(DQ ($ Id.VSub_Number '$0'))}]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [3271]
        )
      ]
    )
    (command.Case
      to_match: {<x> ($ Id.VSub_DollarName '$srcdir')}
      arms: [
        (case_arm
          pat_list: [{<x>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcdir)
                  op: assign_op.Equal
                  rhs: {<.>}
                  spids: [3296]
                )
              ]
            )
          ]
          spids: [3292 3293 3300 -1]
        )
        (case_arm
          pat_list: [
            {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
              <Id.Lit_Star '*'>
            }
            {<Id.Lit_Star '*'> (DQ <'\t'>) <Id.Lit_Star '*'>}
            {<Id.Lit_Star '*'> (DQ ($ Id.VSub_DollarName '$nl')) <Id.Lit_Star '*'>}
          ]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {<Source>}
                {<directory>}
                {<should>}
                {<not>}
                {<contain>}
                {<space>}
                {<or>}
                {<tab>}
                {<or>}
                {<newline.>}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<Errors>} {<may>} {<occur.>}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [3302 3317 3358 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> (DQ <'\''>) <Id.Lit_Star '*'>}]
          action: [
            (C {<echo>} {<Source>} {<directory>} {<must>} {<not>} {<contain>} {<single>} {<quotes.>})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [3360 3365 3390 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dstversion)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<sed>} {<-n>} {(SQ <'/define MKSH_VERSION/s/^.*"\\([^"]*\\)".*$/\\1/p'>)} 
                    {(DQ ($ Id.VSub_DollarName '$srcdir') <'/sh.h'>)}
                  )
              )
            }
          spids: [3394]
        )
      ]
    )
    (C {<add_cppflags>} {<-DMKSH_BUILDSH>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:e)
          op: assign_op.Equal
          rhs: {<echo>}
          spids: [3423]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:r) op:assign_op.Equal rhs:{<0>} spids:[3426])]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:eq) op:assign_op.Equal rhs:{<0>} spids:[3429])]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:pm) op:assign_op.Equal rhs:{<0>} spids:[3432])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cm)
          op: assign_op.Equal
          rhs: {<normal>}
          spids: [3435]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:optflags)
          op: assign_op.Equal
          rhs: {<-std-compile-opts>}
          spids: [3438]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:check_categories)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3441]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:last)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3443]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tfn)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3445]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:legacy)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [3447]
        )
      ]
    )
    (command.ForEach
      iter_name: i
      do_arg_iter: T
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$last') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$i')}
              arms: [
                (case_arm
                  pat_list: [
                    {<c> <Id.Lit_Colon ':'> <combine>}
                    {<c> <Id.Lit_Colon ':'> <dragonegg>}
                    {<c> <Id.Lit_Colon ':'> <llvm>}
                    {<c> <Id.Lit_Colon ':'> <lto>}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cm)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$i')}
                          spids: [3485]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [3489]
                        )
                      ]
                    )
                  ]
                  spids: [3467 3482 3492 -1]
                )
                (case_arm
                  pat_list: [{<c> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName '$me') <': Unknown option -c \''> 
                            ($ Id.VSub_DollarName '$i') <'\'!'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3495 3498 3519 -1]
                )
                (case_arm
                  pat_list: [{<o> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:optflags)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$i')}
                          spids: [3528]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [3532]
                        )
                      ]
                    )
                  ]
                  spids: [3522 3525 3535 -1]
                )
                (case_arm
                  pat_list: [{<t> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:tfn)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$i')}
                          spids: [3544]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [3548]
                        )
                      ]
                    )
                  ]
                  spids: [3538 3541 3551 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-c>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last)
                          op: assign_op.Equal
                          rhs: {<c>}
                          spids: [3559]
                        )
                      ]
                    )
                  ]
                  spids: [3554 3556 3563 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-G>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ ($ Id.VSub_DollarName '$me') <': Do not call me with \'-G\'!'>)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3566 3568 3587 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-g>}]
                  action: [
                    (C {<add_cppflags>} {<-DDEBUG>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$CFLAGS') <' -g3 -fno-builtin'>)}
                          spids: [3604]
                        )
                      ]
                    )
                  ]
                  spids: [3590 3592 3611 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-j>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pm)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [3619]
                        )
                      ]
                    )
                  ]
                  spids: [3614 3616 3623 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-L>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:legacy)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [3631]
                        )
                      ]
                    )
                  ]
                  spids: [3626 3628 3635 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <Id.Lit_Other '+'> <L>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:legacy)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [3644]
                        )
                      ]
                    )
                  ]
                  spids: [3638 3641 3648 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-M>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cm)
                          op: assign_op.Equal
                          rhs: {<makefile>}
                          spids: [3656]
                        )
                      ]
                    )
                  ]
                  spids: [3651 3653 3660 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-O>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:optflags)
                          op: assign_op.Equal
                          rhs: {<-std-compile-opts>}
                          spids: [3668]
                        )
                      ]
                    )
                  ]
                  spids: [3663 3665 3672 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-o>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last)
                          op: assign_op.Equal
                          rhs: {<o>}
                          spids: [3680]
                        )
                      ]
                    )
                  ]
                  spids: [3675 3677 3684 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-Q>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:eq)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [3692]
                        )
                      ]
                    )
                  ]
                  spids: [3687 3689 3696 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-r>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:r)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [3704]
                        )
                      ]
                    )
                  ]
                  spids: [3699 3701 3708 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-t>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last)
                          op: assign_op.Equal
                          rhs: {<t>}
                          spids: [3716]
                        )
                      ]
                    )
                  ]
                  spids: [3711 3713 3720 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <-v>}]
                  action: [
                    (C {<echo>} {(DQ <'Build.sh '> ($ Id.VSub_DollarName '$srcversion'))})
                    (C {<echo>} {(DQ <'for mksh '> ($ Id.VSub_DollarName '$dstversion'))})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [3723 3725 3749 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName '$me') <': Unknown option \''> 
                            ($ Id.VSub_DollarName '$i') <'\'!'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3752 3754 3775 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName '$me') <': Unknown option -\''> 
                            ($ Id.VSub_DollarName '$last') <'\' \''> ($ Id.VSub_DollarName '$i') <'\'!'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3778 3779 3802 -1]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$last'))})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ ($ Id.VSub_DollarName '$me') <': Option -\''> ($ Id.VSub_DollarName '$last') 
                    <'\' not followed by argument!'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [3809 3820]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$tfn'))})
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<test>} {($ Id.VSub_DollarName '$legacy')} {<Id.Lit_Equals '='>} {<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tfn)
                      op: assign_op.Equal
                      rhs: {<mksh>}
                      spids: [3867]
                    )
                  ]
                )
              ]
              spids: [3853 3864]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tfn)
                  op: assign_op.Equal
                  rhs: {<lksh>}
                  spids: [3873]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-d>} {($ Id.VSub_DollarName '$tfn')})
                        (C {<test>} {<-d>} {($ Id.VSub_DollarName '$tfn') <.exe>})
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ ($ Id.VSub_DollarName '$me') <': Error: ./'> ($ Id.VSub_DollarName '$tfn') 
                    <' is a directory!'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [3878 3896]
        )
      ]
    )
    (C {<rmf>} {<a.exe> <Id.Lit_Star '*'>} {<a.out> <Id.Lit_Star '*'>} {<conftest.c>} 
      {<conftest.exe> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <core>} {<core.> <Id.Lit_Star '*'>} {(${ Id.VSub_Name tfn) <Id.Lit_Star '*'>} 
      {<Id.Lit_Star '*'> <.bc>} {<Id.Lit_Star '*'> <.dbg>} {<Id.Lit_Star '*'> <.ll>} {<Id.Lit_Star '*'> <.o>} {<Id.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: assign_op.Equal
          rhs: {(DQ <'lalloc.c eval.c exec.c expr.c funcs.c histrap.c jobs.c'>)}
          spids: [3974]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SRCS)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$SRCS') <' lex.c main.c misc.c shf.c syn.c tree.c var.c'>)}
          spids: [3979]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {($ Id.VSub_DollarName '$legacy')} {<Id.Lit_Equals '='>} {<0>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SRCS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$SRCS') <' edit.c'>)}
                  spids: [4000]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' shell:legacy-no int:32'>)}
                  spids: [4007]
                )
              ]
            )
          ]
          spids: [3986 3997]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' shell:legacy-yes'>)}
              spids: [4016]
            )
          ]
        )
        (C {<add_cppflags>} {<-DMKSH_LEGACY_MODE>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HAVE_PERSISTENT_HISTORY)
              op: assign_op.Equal
              rhs: {<0>}
              spids: [4028]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_CONSERVATIVE_FDS)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [4032]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$srcdir'))} {<Id.Lit_Equals '='>} 
                      {<x> (DQ <.>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: assign_op.Equal
                  rhs: {(DQ <'-I. '> ($ Id.VSub_DollarName '$CPPFLAGS'))}
                  spids: [4061]
                )
              ]
            )
          ]
          spids: [4041 4058]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CPPFLAGS)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ <'-I. -I\''> ($ Id.VSub_DollarName '$srcdir') <'\' '> 
                    ($ Id.VSub_DollarName '$CPPFLAGS')
                  )
                }
              spids: [4070]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$LDSTATIC'))})
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$LDFLAGS'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LDFLAGS)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ($ Id.VSub_DollarName '$LDFLAGS') <' '> 
                            ($ Id.VSub_DollarName '$LDSTATIC')
                          )
                        }
                      spids: [4104]
                    )
                  ]
                )
              ]
              spids: [4090 4101]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LDFLAGS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$LDSTATIC')}
                  spids: [4114]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$TARGET_OS'))})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:x)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.AndOr
                            ops: [Id.Op_DPipe]
                            children: [
                              (command.Simple
                                words: [{<uname>} {<-s>}]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                              (C {<uname>})
                            ]
                          )
                      )
                    }
                  spids: [4134]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$x'))} {<Id.Lit_Equals '='>} 
                  {<x> 
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<uname>} {<-n>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OS)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$x')}
                      spids: [4176]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [4120 4131]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$TARGET_OS'))})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {(DQ ($ Id.VSub_DollarName '$me') <': Set TARGET_OS, your uname is broken!'>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [4181 4192]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:oswarn)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [4212]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ccpc)
          op: assign_op.Equal
          rhs: {<-Wc> <Id.Lit_Comma ','>}
          spids: [4214]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ccpl)
          op: assign_op.Equal
          rhs: {<-Wl> <Id.Lit_Comma ','>}
          spids: [4218]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tsts)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [4222]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ccpr)
          op: assign_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'
                >
              )
            }
          spids: [4224]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OS'))} {<Id.Lit_Equals '='>} 
                      {<x> (DQ <Android>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' android'>)}
                  spids: [4253]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGET_OS)
                  op: assign_op.Equal
                  rhs: {<Linux>}
                  spids: [4260]
                )
              ]
            )
          ]
          spids: [4233 4250]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OS'))} {<Id.Lit_Equals '='>} 
                      {<x> (DQ <Minix>)}
                    )
                  terminator: <Id.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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<conftest.c>}
                )
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ct)
                  op: assign_op.Equal
                  rhs: {<unknown>}
                  spids: [4321]
                )
              ]
            )
            (C {<vv>} {(SQ <']'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name CC>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<cc>})
                  ) <' -E '> ($ Id.VSub_DollarName '$CFLAGS') <' '> ($ Id.VSub_DollarName '$CPPFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$NOWARN') <' conftest.c | grep ct= | tr -d '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'015 >x'>
                )
              }
            )
            (C {<sed>} {(SQ <'s/^/[ /'>)} {<x>})
            (C {<eval>} {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<cat>} {<x>}))})
            (C {<rmf>} {<x>} {<vv.out>})
            (command.Case
              to_match: {($ Id.VSub_DollarName '$ct')}
              arms: [
                (case_arm
                  pat_list: [{<Minix3>} {<Ninix3>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'\n'> <'Warning: you set TARGET_OS to '> 
                            ($ Id.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: '> 
                            ($ Id.VSub_DollarName '$ct') <'\n'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TARGET_OS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$ct')}
                          spids: [4409]
                        )
                      ]
                    )
                  ]
                  spids: [4384 4387 4413 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'\n'> <'Warning: you set TARGET_OS to '> 
                            ($ Id.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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [4416 4417 4436 -1]
                )
              ]
            )
          ]
          spids: [4269 4286]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{<NEXTSTEP>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OSREV'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    words: [{<hostinfo>}]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_GreatAnd '2>&'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<1>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                  (C {<grep>} {(SQ <'NeXT Mach [0-9][0-9.]*:'>)})
                                  (C {<sed>} {(SQ <'s/^.*NeXT Mach \\([0-9][0-9.]*\\):.*$/\\1/'>)})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [4472]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [4453 4454 4515 -1]
        )
        (case_arm
          pat_list: [{<QNX>} {<SCO_SV>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OSREV'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: assign_op.Equal
                      rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-r>}))}
                      spids: [4538]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [4517 4520 4548 -1]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{<386BSD>}]
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_CAN_OTWO>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
            (C {<add_cppflags>} {<-DMKSH_NO_SIGSETJMP>})
            (C {<add_cppflags>} {<-DMKSH_TYPEDEF_SIG_ATOMIC_T> <Id.Lit_Equals '='> <int>})
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
          ]
          spids: [4562 4563 4594 -1]
        )
        (case_arm
          pat_list: [{<AIX>}]
          action: [
            (C {<add_cppflags>} {<-D_ALL_SOURCE>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4596 4597 4616 -1]
        )
        (case_arm
          pat_list: [{<BeOS>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$KSH_VERSION')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <MIRBSD> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\ '>
                      ) <KSH> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: assign_op.Equal
                          rhs: {(DQ <'; it has minor issues'>)}
                          spids: [4637]
                        )
                      ]
                    )
                  ]
                  spids: [4629 4634 4643 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: assign_op.Equal
                          rhs: {(DQ <'; you must recompile mksh with'>)}
                          spids: [4650]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$oswarn') (${ Id.VSub_Name nl) 
                                <'itself in a second stage'>
                              )
                            }
                          spids: [4656]
                        )
                      ]
                    )
                  ]
                  spids: [4646 4647 4666 -1]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH_UNEMPLOYED>})
            (C {<add_cppflags>} {<-DMKSH_DISABLE_TTY_WARNING>})
            (C {<add_cppflags>} {<-DMKSH__NO_SETEUGID>})
          ]
          spids: [4618 4619 4695 -1]
        )
        (case_arm
          pat_list: [{<'BSD/OS'>}]
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4697 4698 4712 -1]
        )
        (case_arm
          pat_list: [{<Coherent>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(DQ <'; it has major issues'>)}
                  spids: [4718]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH__NO_SYMLINK>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' nosymlink'>)}
                  spids: [4729]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH__NO_SETEUGID>})
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
            (C {<add_cppflags>} {<-DMKSH_DISABLE_TTY_WARNING>})
          ]
          spids: [4714 4715 4751 -1]
        )
        (case_arm
          pat_list: [{<CYGWIN> <Id.Lit_Star '*'>}]
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4753 4755 4769 -1]
        )
        (case_arm
          pat_list: [{<Darwin>}]
          action: [(C {<add_cppflags>} {<-D_DARWIN_C_SOURCE>})]
          spids: [4771 4772 4780 -1]
        )
        (case_arm pat_list:[{<DragonFly>}] spids:[4782 4783 4786 -1])
        (case_arm pat_list:[{<FreeBSD>}] spids:[4788 4789 4792 -1])
        (case_arm
          pat_list: [{<FreeMiNT>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(DQ <'; it has minor issues'>)}
                  spids: [4798]
                )
              ]
            )
            (C {<add_cppflags>} {<-D_GNU_SOURCE>})
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4794 4795 4825 -1]
        )
        (case_arm
          pat_list: [{<GNU>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$CC')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <tendracc> <Id.Lit_Star '*'>}]
                  spids: [4838 4841 4843 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<add_cppflags>} {<-D_GNU_SOURCE>})]
                  spids: [4846 4847 4853 -1]
                )
              ]
            )
            (C {<add_cppflags>} {<-DSETUID_CAN_FAIL_WITH_EAGAIN>})
            (C {<add_cppflags>} {<-DMKSH__NO_PATH_MAX>})
          ]
          spids: [4827 4828 4873 -1]
        )
        (case_arm
          pat_list: [{<'GNU/kFreeBSD'>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$CC')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <tendracc> <Id.Lit_Star '*'>}]
                  spids: [4886 4889 4891 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<add_cppflags>} {<-D_GNU_SOURCE>})]
                  spids: [4894 4895 4901 -1]
                )
              ]
            )
            (C {<add_cppflags>} {<-DSETUID_CAN_FAIL_WITH_EAGAIN>})
          ]
          spids: [4875 4876 4912 -1]
        )
        (case_arm
          pat_list: [{<Haiku>}]
          action: [
            (command.Sentence
              child: (C {<add_cppflags>} {<-DMKSH_ASSUME_UTF8>})
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_ASSUME_UTF8)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [4923]
                )
              ]
            )
          ]
          spids: [4914 4915 4927 -1]
        )
        (case_arm pat_list:[{<HP-UX>}] spids:[4929 4930 4933 -1])
        (case_arm
          pat_list: [{<Interix>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ccpc)
                  op: assign_op.Equal
                  rhs: {(SQ <'-X '>)}
                  spids: [4939]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ccpl)
                  op: assign_op.Equal
                  rhs: {(SQ <'-Y '>)}
                  spids: [4945]
                )
              ]
            )
            (C {<add_cppflags>} {<-D_ALL_SOURCE>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name LIBS>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<-lcrypt>})
                  )
                )
              }
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4935 4936 4978 -1]
        )
        (case_arm
          pat_list: [{<IRIX> <Id.Lit_Star '*'>}]
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4980 4982 4996 -1]
        )
        (case_arm
          pat_list: [{<Linux>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$CC')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <tendracc> <Id.Lit_Star '*'>}]
                  spids: [5009 5012 5014 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<add_cppflags>} {<-D_GNU_SOURCE>})]
                  spids: [5017 5018 5024 -1]
                )
              ]
            )
            (C {<add_cppflags>} {<-DSETUID_CAN_FAIL_WITH_EAGAIN>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_REVOKE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [4998 4999 5046 -1]
        )
        (case_arm
          pat_list: [{<LynxOS>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(DQ <'; it has minor issues'>)}
                  spids: [5052]
                )
              ]
            )
          ]
          spids: [5048 5049 5058 -1]
        )
        (case_arm pat_list:[{<MidnightBSD>}] spids:[5060 5061 5064 -1])
        (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: assign_op.Equal
                  rhs: {<no-stderr-ed>}
                  spids: [5090]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5066 5067 5108 -1]
        )
        (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> <Id.Lit_Equals '='> <2>} 
              {<-D_MINIX>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oldish_ed)
                  op: assign_op.Equal
                  rhs: {<no-stderr-ed>}
                  spids: [5140]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5110 5111 5158 -1]
        )
        (case_arm pat_list:[{<MirBSD>}] spids:[5160 5161 5164 -1])
        (case_arm
          pat_list: [{<MSYS_> <Id.Lit_Star '*'>}]
          action: [
            (command.Sentence
              child: (C {<add_cppflags>} {<-DMKSH_ASSUME_UTF8> <Id.Lit_Equals '='> <0>})
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_ASSUME_UTF8)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [5178]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_STDINT_H>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5166 5168 5212 -1]
        )
        (case_arm pat_list:[{<NetBSD>}] spids:[5214 5215 5218 -1])
        (case_arm
          pat_list: [{<NEXTSTEP>}]
          action: [
            (C {<add_cppflags>} {<-D_NEXT_SOURCE>})
            (C {<add_cppflags>} {<-D_POSIX_SOURCE>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name AWK>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<gawk>})
                  )
                )
              }
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name CC>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<'cc -posix'>})
                  )
                )
              }
            )
            (C {<add_cppflags>} {<-DMKSH_NO_SIGSETJMP>})
            (C {<add_cppflags>} {<-DMKSH_UNEMPLOYED>})
            (command.Case
              to_match: {($ Id.VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{<4.2> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: assign_op.Equal
                          rhs: {(DQ <'; it needs libposix.a'>)}
                          spids: [5286]
                        )
                      ]
                    )
                  ]
                  spids: [5277 5279 5292 -1]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
          ]
          spids: [5220 5221 5303 -1]
        )
        (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: assign_op.Equal
                  rhs: {(DQ <'; it has unknown issues'>)}
                  spids: [5332]
                )
              ]
            )
          ]
          spids: [5305 5306 5338 -1]
        )
        (case_arm
          pat_list: [{<OpenBSD>}]
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5340 5341 5355 -1]
        )
        (case_arm
          pat_list: [{<'OS/2'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_TERMIOS_H)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [5361]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_MKNOD)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [5365]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(DQ <'; it is currently being ported'>)}
                  spids: [5372]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' nosymlink'>)}
                  spids: [5378]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name CC>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<gcc>})
                  )
                )
              }
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name SIZE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<': size'>})
                  )
                )
              }
            )
            (C {<add_cppflags>} {<-DMKSH_UNEMPLOYED>})
            (C {<add_cppflags>} {<-DMKSH_NOPROSPECTOFWORK>})
          ]
          spids: [5357 5358 5417 -1]
        )
        (case_arm
          pat_list: [{<OSF1>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_SIG_T)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [5423]
                )
              ]
            )
            (C {<add_cppflags>} {<-D_OSF_SOURCE>})
            (C {<add_cppflags>} {<-D_POSIX_C_SOURCE> <Id.Lit_Equals '='> <200112L>})
            (C {<add_cppflags>} {<-D_XOPEN_SOURCE> <Id.Lit_Equals '='> <600>})
            (C {<add_cppflags>} {<-D_XOPEN_SOURCE_EXTENDED>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5419 5420 5465 -1]
        )
        (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: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_ASSUME_UTF8)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [5496]
                )
              ]
            )
            (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: assign_op.Equal
                  rhs: {(SQ <' and will currently not work'>)}
                  spids: [5510]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH_UNEMPLOYED>})
            (C {<add_cppflags>} {<-DMKSH_MAYBE_KENCC>})
          ]
          spids: [5467 5468 5530 -1]
        )
        (case_arm
          pat_list: [{<PW32> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_SIG_T)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [5537]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(SQ <' and will currently not work'>)}
                  spids: [5544]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5532 5534 5561 -1]
        )
        (case_arm
          pat_list: [{<QNX>}]
          action: [
            (C {<add_cppflags>} {<-D__NO_EXT_QNX>})
            (C {<add_cppflags>} {<-D__EXT_UNIX_MISC>})
            (command.Case
              to_match: {($ Id.VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_LBracket '['> <012345> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}
                    {<6.> <Id.Lit_LBracket '['> <0123> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}
                    {<6.4.> <Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'>}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oldish_ed)
                          op: assign_op.Equal
                          rhs: {<no-stderr-ed>}
                          spids: [5604]
                        )
                      ]
                    )
                  ]
                  spids: [5584 5601 5611 -1]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5563 5564 5628 -1]
        )
        (case_arm
          pat_list: [{<SCO_SV>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{<3.2> <Id.Lit_Star '*'>}]
                  action: [(C {<add_cppflags>} {<-DMKSH_UNEMPLOYED>})]
                  spids: [5641 5643 5655 -1]
                )
                (case_arm
                  pat_list: [{<5> <Id.Lit_Star '*'>}]
                  spids: [5658 5660 5667 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: assign_op.Equal
                          rhs: {(SQ <'; this is an unknown version of'>)}
                          spids: [5674]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oswarn)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$oswarn') ($ Id.VSub_DollarName '$nl') 
                                ($ Id.VSub_DollarName '$TARGET_OS') <' '> (${ Id.VSub_Name TARGET_OSREV) <', please tell me what to do'>
                              )
                            }
                          spids: [5680]
                        )
                      ]
                    )
                  ]
                  spids: [5670 5671 5693 -1]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  ) 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE__SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5630 5631 5720 -1]
        )
        (case_arm
          pat_list: [{<skyos>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(DQ <'; it has minor issues'>)}
                  spids: [5726]
                )
              ]
            )
          ]
          spids: [5722 5723 5732 -1]
        )
        (case_arm
          pat_list: [{<SunOS>}]
          action: [(C {<add_cppflags>} {<-D_BSD_SOURCE>}) (C {<add_cppflags>} {<-D__EXTENSIONS__>})]
          spids: [5734 5735 5748 -1]
        )
        (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: assign_op.Equal
                  rhs: {(SQ <' and will currently not work'>)}
                  spids: [5764]
                )
              ]
            )
          ]
          spids: [5750 5751 5770 -1]
        )
        (case_arm
          pat_list: [{<ULTRIX>}]
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name CC>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<'cc -YPOSIX'>})
                  )
                )
              }
            )
            (C {<add_cppflags>} {<-DMKSH_TYPEDEF_SSIZE_T> <Id.Lit_Equals '='> <int>})
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5772 5773 5810 -1]
        )
        (case_arm
          pat_list: [{<UnixWare>} {<UNIX_SV>}]
          action: [
            (C {<add_cppflags>} {<-DMKSH_CONSERVATIVE_FDS>})
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  ) 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE__SYS_SIGLIST>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5812 5815 5843 -1]
        )
        (case_arm
          pat_list: [{<UWIN> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ccpc)
                  op: assign_op.Equal
                  rhs: {(SQ <'-Yc,'>)}
                  spids: [5850]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ccpl)
                  op: assign_op.Equal
                  rhs: {(SQ <'-Yl,'>)}
                  spids: [5856]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tsts)
                  op: assign_op.Equal
                  rhs: {(DQ <' 3<>/dev/tty'>)}
                  spids: [5862]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(DQ <'; it will compile, but the target'>)}
                  spids: [5868]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$oswarn') (${ Id.VSub_Name nl) 
                        <'platform itself is very flakey/unreliable'>
                      )
                    }
                  spids: [5874]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
          ]
          spids: [5845 5847 5895 -1]
        )
        (case_arm
          pat_list: [{<_svr4>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(SQ <'; it may or may not work'>)}
                  spids: [5909]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OSREV'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: assign_op.Equal
                      rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-r>}))}
                      spids: [5930]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [5897 5898 5940 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oswarn)
                  op: assign_op.Equal
                  rhs: {(SQ <'; it may or may not work'>)}
                  spids: [5946]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OSREV'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGET_OSREV)
                      op: assign_op.Equal
                      rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-r>}))}
                      spids: [5967]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [5942 5943 5977 -1]
        )
      ]
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (DQ 
          (braced_var_sub
            token: <Id.VSub_Name HAVE_MKNOD>
            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
          )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (DQ 
          (braced_var_sub
            token: <Id.VSub_Name AWK>
            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<awk>})
          ) 
          (braced_var_sub
            token: <Id.VSub_Name CC>
            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<cc>})
          ) 
          (braced_var_sub
            token: <Id.VSub_Name NROFF>
            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<nroff>})
          ) 
          (braced_var_sub
            token: <Id.VSub_Name SIZE>
            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<size>})
          )
        )
      }
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$r')})
        (command.Pipeline
          children: [
            (C {<echo>})
            (command.Simple
              words: [{($ Id.VSub_DollarName '$NROFF')} {<-v>}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (command.Simple
              words: [{<grep>} {<GNU>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (command.Pipeline
          children: [
            (C {<echo>})
            (command.Simple
              words: [{($ Id.VSub_DollarName '$NROFF')} {<-c>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:NROFF)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$NROFF') <' -c'>)}
              spids: [6071]
            )
          ]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')} 
      {
        (DQ <'Hi from'> ($ Id.VSub_DollarName '$ao') <' '> ($ Id.VSub_DollarName '$bi') 
          ($ Id.VSub_DollarName '$srcversion') ($ Id.VSub_DollarName '$ao') <' on:'>
        )
      }
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{<AIX>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} {(DQ <'oslevel >&2'>)})
            (C {<vv>} {(SQ <'|'>)} {(DQ <'uname -a >&2'>)})
          ]
          spids: [6099 6100 6125 -1]
        )
        (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'
                  >
                )
              }
            )
          ]
          spids: [6127 6128 6208 -1]
        )
        (case_arm
          pat_list: [{<IRIX> <Id.Lit_Star '*'>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} {(DQ <'uname -a >&2'>)})
            (C {<vv>} {(SQ <'|'>)} {(DQ <'hinv -v >&2'>)})
          ]
          spids: [6210 6212 6237 -1]
        )
        (case_arm
          pat_list: [{<OSF1>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} {(DQ <'uname -a >&2'>)})
            (C {<vv>} {(SQ <'|'>)} {(DQ <'/usr/sbin/sizer -v >&2'>)})
          ]
          spids: [6239 6240 6265 -1]
        )
        (case_arm
          pat_list: [{<SCO_SV>} {<UnixWare>} {<UNIX_SV>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} {(DQ <'uname -a >&2'>)})
            (C {<vv>} {(SQ <'|'>)} {(DQ <'uname -X >&2'>)})
          ]
          spids: [6267 6272 6297 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [(C {<vv>} {(SQ <'|'>)} {(DQ <'uname -a >&2'>)})]
          spids: [6299 6300 6314 -1]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$oswarn'))})
        (command.Simple
          words: [
            {<echo>}
            {
              (DQ <'\n'> <'Warning: mksh has not yet been ported to or tested on your\n'> 
                <'operating system \''> ($ Id.VSub_DollarName '$TARGET_OS') <'\''> ($ Id.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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')} 
      {
        (DQ ($ Id.VSub_DollarName '$bi') ($ Id.VSub_DollarName '$me') 
          <': Building the MirBSD Korn Shell'> ($ Id.VSub_DollarName '$ao') <' '> ($ Id.VSub_DollarName '$ui') ($ Id.VSub_DollarName '$dstversion') 
          ($ Id.VSub_DollarName '$ao') <' on '> ($ Id.VSub_DollarName '$TARGET_OS') <' '> (${ Id.VSub_Name TARGET_OSREV) <...>
        )
      }
    )
    (C {($ Id.VSub_DollarName '$e')} 
      {($ Id.VSub_DollarName '$bi') ($ Id.VSub_DollarName '$me') <Id.Lit_Colon ':'>} {<Scanning>} {<Id.KW_For for>} {<functions...>} {<please>} {<ignore>} {<any>} 
      {<errors.> ($ Id.VSub_DollarName '$ao')}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPP)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$CC') <' -E'>)}
          spids: [6421]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')} {<Id.Lit_TDot ...>} {<which>} {<compiler>} {<seems>} {<to>} {<be>} 
      {<used>}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conftest.c>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ct)
          op: assign_op.Equal
          rhs: {<untested>}
          spids: [6523]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:et)
          op: assign_op.Equal
          rhs: {<untested>}
          spids: [6526]
        )
      ]
    )
    (C {<vv>} {(SQ <']'>)} 
      {
        (DQ ($ Id.VSub_DollarName '$CPP') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
          ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' conftest.c | '> <'    sed -n \'/^ *[ce]t *= */s/^ *'> 
          <Id.Lit_BadBackslash '\\'> <'([ce]t'> <Id.Lit_BadBackslash '\\'> <') *= */'> <Id.Lit_BadBackslash '\\'> <'1=/p\' | tr -d '> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'015 >x'>
        )
      }
    )
    (C {<sed>} {(SQ <'s/^/[ /'>)} {<x>})
    (C {<eval>} {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<cat>} {<x>}))})
    (C {<rmf>} {<x>} {<vv.out>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conftest.c>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 6593
              stdin_parts: [<'#include <unistd.h>\n'> <'int main(void) { return (isatty(0)); }\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{<ack>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: assign_op.Equal
                  rhs: {(DQ <'-Dconst= '> ($ Id.VSub_DollarName '$CPPFLAGS'))}
                  spids: [6608]
                )
              ]
            )
          ]
          spids: [6600 6601 6615 -1]
        )
        (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [6617 6618 6634 -1]
        )
        (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [6636 6637 6652 -1]
        )
        (case_arm
          pat_list: [{<clang>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -version'>
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name CLANG>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<clang>})
                  ) <' -version'>
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name CLANG>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<clang>})
                  ) <' --version'>
                )
              }
            )
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$CCC_CC') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$CCC_LD')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]
                  spids: [6733 6735 6737 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CCC_LD)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$CCC_CC')}
                              spids: [6744]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<export>} {<CCC_LD>})
                  ]
                  spids: [6740 6742 6752 -1]
                )
              ]
            )
          ]
          spids: [6654 6655 6758 -1]
        )
        (case_arm
          pat_list: [{<dec>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -V'>
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -Wl,-V conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [6760 6761 6807 -1]
        )
        (case_arm
          pat_list: [{<dmc>}]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'Warning: Digital Mars Compiler detected. When running under'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'    UWIN, mksh tends to be unstable due to the limitations'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'    of this platform. Continue at your own risk,'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'    please report success/failure to the developers.'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [6809 6810 6853 -1]
        )
        (case_arm
          pat_list: [{<gcc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -v conftest.c '> 
                  ($ Id.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`'>
                )
              }
            )
          ]
          spids: [6855 6856 6893 -1]
        )
        (case_arm
          pat_list: [{<hpcc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -V conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [6895 6896 6920 -1]
        )
        (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [6922 6923 6939 -1]
        )
        (case_arm
          pat_list: [{<icc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -V'>
                )
              }
            )
          ]
          spids: [6941 6942 6967 -1]
        )
        (case_arm
          pat_list: [{<kencc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -v conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [6969 6970 6994 -1]
        )
        (case_arm
          pat_list: [{<lcc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -v conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
            (C {<add_cppflags>} {<-D__inline__> <Id.Lit_Equals '='> <__inline>})
          ]
          spids: [6996 6997 7028 -1]
        )
        (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [7030 7031 7046 -1]
        )
        (case_arm
          pat_list: [{<mipspro>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -version'>
                )
              }
            )
          ]
          spids: [7048 7049 7074 -1]
        )
        (case_arm
          pat_list: [{<msc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ccpr)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [7080]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$TARGET_OS')}
              arms: [
                (case_arm
                  pat_list: [{<Interix>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: {($ Id.VSub_DollarName '$C89_COMPILER')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:C89_COMPILER)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<ntpath2posix>} {<-c>} 
                                            {(DQ ($ Id.VSub_DollarName '$C89_COMPILER'))}
                                          )
                                      )
                                    }
                                  spids: [7111]
                                )
                              ]
                            )
                          ]
                          spids: [7097 7108]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:C89_COMPILER)
                              op: assign_op.Equal
                              rhs: {<CL.EXE>}
                              spids: [7128]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: {($ Id.VSub_DollarName '$C89_LINKER')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:C89_LINKER)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<ntpath2posix>} {<-c>} 
                                            {(DQ ($ Id.VSub_DollarName '$C89_LINKER'))}
                                          )
                                      )
                                    }
                                  spids: [7149]
                                )
                              ]
                            )
                          ]
                          spids: [7135 7146]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:C89_LINKER)
                              op: assign_op.Equal
                              rhs: {<LINK.EXE>}
                              spids: [7166]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<vv>} {(SQ <'|'>)} {(DQ ($ Id.VSub_DollarName '$C89_COMPILER') <' /HELP >&2'>)})
                    (C {<vv>} {(SQ <'|'>)} {(DQ ($ Id.VSub_DollarName '$C89_LINKER') <' /LINK >&2'>)})
                  ]
                  spids: [7093 7094 7197 -1]
                )
              ]
            )
          ]
          spids: [7076 7077 7203 -1]
        )
        (case_arm
          pat_list: [{<nwcc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -version'>
                )
              }
            )
          ]
          spids: [7205 7206 7231 -1]
        )
        (case_arm
          pat_list: [{<pcc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -v'>
                )
              }
            )
          ]
          spids: [7233 7234 7259 -1]
        )
        (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [7261 7262 7277 -1]
        )
        (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [7279 7280 7296 -1]
        )
        (case_arm
          pat_list: [{<sunpro>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -V conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7298 7299 7323 -1]
        )
        (case_arm
          pat_list: [{<tcc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -v'>
                )
              }
            )
          ]
          spids: [7325 7326 7351 -1]
        )
        (case_arm
          pat_list: [{<tendra>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -V 2>&1 | '> <'\t    grep -F -i -e version -e release'>
                )
              }
            )
          ]
          spids: [7353 7354 7381 -1]
        )
        (case_arm
          pat_list: [{<ucode>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -V'>
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -Wl,-V conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7383 7384 7430 -1]
        )
        (case_arm
          pat_list: [{<uslc>}]
          action: [
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$TARGET_OS') <Id.Lit_Colon ':'> 
                  ($ Id.VSub_DollarName '$TARGET_OSREV')
                }
              arms: [
                (case_arm
                  pat_list: [{<SCO_SV> <Id.Lit_Colon ':'> <3.2> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$CFLAGS') <' -g'>)}
                          spids: [7456]
                        )
                      ]
                    )
                    (C {<Id.Lit_Colon ':'>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name HAVE_CAN_OTWO>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                          ) 
                          (braced_var_sub
                            token: <Id.VSub_Name HAVE_CAN_OPTIMISE>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                          )
                        )
                      }
                    )
                  ]
                  spids: [7445 7449 7479 -1]
                )
              ]
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -V conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7432 7433 7506 -1]
        )
        (case_arm
          pat_list: [{<watcom>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -v conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7508 7509 7533 -1]
        )
        (case_arm
          pat_list: [{<xlc>}]
          action: [
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -qversion'>
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' '> 
                  ($ Id.VSub_DollarName '$LIBS') <' -qversion=verbose'>
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} {(DQ <'ld -V'>)})
          ]
          spids: [7535 7536 7594 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$ct'))} {<Id.Lit_Equals '='>} 
                  {<x> (DQ <untested>)}
                )
                (C {($ Id.VSub_DollarName '$e')} {(DQ <'!!! detecting preprocessor failed'>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ct)
                  op: assign_op.Equal
                  rhs: {<unknown>}
                  spids: [7623]
                )
              ]
            )
            (C {<vv>} {(DQ ($ Id.VSub_DollarName '$CC') <' --version'>)})
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -v conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
            (C {<vv>} {(SQ <'|'>)} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -V conftest.c '> 
                  ($ Id.VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7596 7597 7677 -1]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{<dragonegg>} {<llvm>}]
          action: [(C {<vv>} {(SQ <'|'>)} {(DQ <'llc -version'>)})]
          spids: [7687 7690 7704 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:etd)
          op: assign_op.Equal
          rhs: {(DQ <' on '> ($ Id.VSub_DollarName '$et'))}
          spids: [7708]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$et')}
      arms: [
        (case_arm
          pat_list: [{<klibc>}]
          action: [(C {<add_cppflags>} {<-DMKSH_NO_LIMITS>})]
          spids: [7720 7721 7729 -1]
        )
        (case_arm
          pat_list: [{<unknown>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:etd)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [7739]
                )
              ]
            )
          ]
          spids: [7731 7732 7742 -1]
        )
        (case_arm pat_list:[{<Id.Lit_Star '*'>}] spids:[7744 7745 7752 -1])
      ]
    )
    (C {($ Id.VSub_DollarName '$e')} 
      {
        (DQ ($ Id.VSub_DollarName '$bi') <'==> which compiler seems to be used...'> 
          ($ Id.VSub_DollarName '$ao') <' '> ($ Id.VSub_DollarName '$ui') ($ Id.VSub_DollarName '$ct') ($ Id.VSub_DollarName '$etd') 
          ($ Id.VSub_DollarName '$ao')
        )
      }
    )
    (C {<rmf>} {<conftest.c>} {<conftest.o>} {<conftest>} {<a.out> <Id.Lit_Star '*'>} 
      {<a.exe> <Id.Lit_Star '*'>} {<conftest.exe> <Id.Lit_Star '*'>} {<vv.out>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:save_NOWARN)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$NOWARN')}
          spids: [7798]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [7801]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWARN)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [7803]
        )
      ]
    )
    (C {<ac_flags>} {<0>} {<compiler_works>} {(SQ )} {(SQ <'if the compiler works'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_COMPILER_WORKS')})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HAVE_COMPILER_KNOWN)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [7832]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<unknown>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HAVE_COMPILER_KNOWN)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [7845]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<ac_ifcpp>} {(SQ <'if 0'>)} {<compiler_fails>} {(SQ )} 
                      {(SQ <'if the compiler does not fail correctly'>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_CFLAGS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$CFLAGS')}
                  spids: [7871]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_CAN_DELEXE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<x>})
                  )
                )
              }
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$ct')}
              arms: [
                (case_arm
                  pat_list: [{<dec>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$CFLAGS') <' '> (${ Id.VSub_Name ccpl) 
                                <-non_shared>
                              )
                            }
                          spids: [7897]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {<ac_testn>}
                        {<can_delexe>}
                        {<compiler_fails>}
                        {<0>}
                        {(SQ <'for the -non_shared linker option'>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLessDash '<<-'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 7926
                              stdin_parts: [
                                <'#include <unistd.h>\n'>
                                <'int main(void) { return (isatty(0)); }\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [7893 7894 7928 -1]
                )
                (case_arm
                  pat_list: [{<dmc>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CFLAGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$CFLAGS') <' '> (${ Id.VSub_Name ccpl) 
                                <'/DELEXECUTABLE'>
                              )
                            }
                          spids: [7935]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {<ac_testn>}
                        {<can_delexe>}
                        {<compiler_fails>}
                        {<0>}
                        {(SQ <'for the /DELEXECUTABLE linker option'>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLessDash '<<-'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 7964
                              stdin_parts: [
                                <'#include <unistd.h>\n'>
                                <'int main(void) { return (isatty(0)); }\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [7931 7932 7966 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
                  spids: [7969 7970 7978 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_DELEXE')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CFLAGS)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$save_CFLAGS')}
                      spids: [7994]
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {<ac_testn>}
                {<compiler_still_fails>}
                {(SQ )}
                {(SQ <'if the compiler still does not fail correctly'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: (redir_param.HereDoc here_begin:{<EOF>} here_end_span_id:8013)
                )
              ]
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName '$HAVE_COMPILER_STILL_FAILS')}
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
          ]
          spids: [7848 7868]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<ac_ifcpp>} {(SQ <'ifdef __TINYC__'>)} {<couldbe_tcc>} {(SQ <'!'>)} 
                      {<compiler_known>} {<0>} {(SQ <'if this could be tcc'>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ct)
                  op: assign_op.Equal
                  rhs: {<tcc>}
                  spids: [8059]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPP)
                  op: assign_op.Equal
                  rhs: {(SQ <'cpp -D__TINYC__'>)}
                  spids: [8063]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_COMPILER_KNOWN)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [8069]
                )
              ]
            )
          ]
          spids: [8031 8056]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{<bcc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ccpc) <-w>)}
                  spids: [8085]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ccpc) <'-w!'>)}
                  spids: [8094]
                )
              ]
            )
          ]
          spids: [8081 8082 8103 -1]
        )
        (case_arm pat_list:[{<dec>}] spids:[8105 8106 8113 -1])
        (case_arm
          pat_list: [{<dmc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ccpc) <-w>)}
                  spids: [8119]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ccpc) <-wx>)}
                  spids: [8128]
                )
              ]
            )
          ]
          spids: [8115 8116 8137 -1]
        )
        (case_arm
          pat_list: [{<hpcc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [8143]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Other '+'> <We>}
                  spids: [8146]
                )
              ]
            )
          ]
          spids: [8139 8140 8151 -1]
        )
        (case_arm
          pat_list: [{<kencc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [8157]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [8160]
                )
              ]
            )
          ]
          spids: [8153 8154 8163 -1]
        )
        (case_arm
          pat_list: [{<mipspro>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [8169]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ <'-diag_error 1-10000'>)}
                  spids: [8172]
                )
              ]
            )
          ]
          spids: [8165 8166 8178 -1]
        )
        (case_arm
          pat_list: [{<msc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ccpc) <'/w'>)}
                  spids: [8184]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name ccpc) <'/WX'>)}
                  spids: [8193]
                )
              ]
            )
          ]
          spids: [8180 8181 8202 -1]
        )
        (case_arm
          pat_list: [{<sunpro>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$save_NOWARN'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_NOWARN)
                      op: assign_op.Equal
                      rhs: {(SQ <'-errwarn=%none'>)}
                      spids: [8223]
                    )
                  ]
                )
              ]
            )
            (C {<ac_flags>} {<0>} {<errwarnnone>} {(DQ ($ Id.VSub_DollarName '$save_NOWARN'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_ERRWARNNONE')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_NOWARN)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [8250]
                    )
                  ]
                )
              ]
            )
            (C {<ac_flags>} {<0>} {<errwarnall>} {(DQ <'-errwarn=%all'>)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_ERRWARNALL')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DOWARN)
                      op: assign_op.Equal
                      rhs: {(DQ <'-errwarn=%all'>)}
                      spids: [8274]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [8204 8205 8280 -1]
        )
        (case_arm
          pat_list: [{<tendra>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: {<-w>}
                  spids: [8286]
                )
              ]
            )
          ]
          spids: [8282 8283 8290 -1]
        )
        (case_arm
          pat_list: [{<ucode>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [8296]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {<-w2>}
                  spids: [8299]
                )
              ]
            )
          ]
          spids: [8292 8293 8303 -1]
        )
        (case_arm
          pat_list: [{<watcom>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [8309]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {<-Wc> <Id.Lit_Comma ','> <-we>}
                  spids: [8312]
                )
              ]
            )
          ]
          spids: [8305 8306 8318 -1]
        )
        (case_arm
          pat_list: [{<xlc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_NOWARN)
                  op: assign_op.Equal
                  rhs: {<-qflag> <Id.Lit_Equals '='> <i> <Id.Lit_Colon ':'> <e>}
                  spids: [8324]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWARN)
                  op: assign_op.Equal
                  rhs: {<-qflag> <Id.Lit_Equals '='> <i> <Id.Lit_Colon ':'> <i>}
                  spids: [8332]
                )
              ]
            )
          ]
          spids: [8320 8321 8340 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$save_NOWARN'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_NOWARN)
                      op: assign_op.Equal
                      rhs: {<-Wno-error>}
                      spids: [8361]
                    )
                  ]
                )
              ]
            )
            (C {<ac_flags>} {<0>} {<wnoerror>} {(DQ ($ Id.VSub_DollarName '$save_NOWARN'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_WNOERROR')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_NOWARN)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [8386]
                    )
                  ]
                )
              ]
            )
            (C {<ac_flags>} {<0>} {<werror>} {<-Werror>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_WERROR')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DOWARN)
                      op: assign_op.Equal
                      rhs: {<-Werror>}
                      spids: [8408]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<icc>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DOWARN)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$DOWARN') <' -wd1419'>)}
                      spids: [8422]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [8342 8343 8429 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$save_NOWARN')}
          spids: [8433]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {<Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$orig_CFLAGS'))})
                      (C {<sed>} {(SQ <'s/^://'>)})
                      (C {<tr>} {<-c>} {<-d>} 
                        {($ Id.VSub_DollarName '$alll') ($ Id.VSub_DollarName '$allu') 
                          ($ Id.VSub_DollarName '$alln')
                        }
                      )
                    ]
                    negated: F
                  )
              )
            }
          spids: [8446]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$i'))} {<Id.Lit_Equals '='>} {<x> (DQ )})
        (command.Case
          to_match: {($ Id.VSub_DollarName '$ct')}
          arms: [
            (case_arm
              pat_list: [{<hpcc>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:phase)
                      op: assign_op.Equal
                      rhs: {<u>}
                      spids: [8506]
                    )
                  ]
                )
                (C {<ac_flags>} {<1>} {<otwo>} {<Id.Lit_Other '+'> <O2>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:phase)
                      op: assign_op.Equal
                      rhs: {<x>}
                      spids: [8520]
                    )
                  ]
                )
              ]
              spids: [8502 8503 8524 -1]
            )
            (case_arm pat_list:[{<kencc>} {<tcc>} {<tendra>}] spids:[8526 8531 8538 -1])
            (case_arm
              pat_list: [{<sunpro>}]
              action: [
                (command.Simple
                  words: [{<cat>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<x>}
                    )
                    (redir
                      op: <Id.Redir_DLessDash '<<-'>
                      loc: (redir_loc.Fd fd:0)
                      arg: 
                        (redir_param.HereDoc
                          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'>
                          ]
                        )
                    )
                  ]
                  do_fork: T
                )
                (command.Pipeline
                  children: [
                    (C {<yes>} {<pad>})
                    (command.Simple
                      words: [{<head>} {<-n>} {<256>}]
                      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
                      do_fork: T
                    )
                  ]
                  negated: F
                )
                (command.Simple
                  words: [{<ac_flags>} {<->} {<1>} {<otwo>} {<-xO2>}]
                  redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})]
                  do_fork: T
                )
                (C {<rmf>} {<x>})
              ]
              spids: [8540 8541 8596 -1]
            )
            (case_arm
              pat_list: [{<xlc>}]
              action: [
                (C {<ac_flags>} {<1>} {<othree>} {(DQ <'-O3 -qstrict'>)})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_OTHREE')})
                    (C {<ac_flags>} {<1>} {<otwo>} {<-O2>})
                  ]
                )
              ]
              spids: [8598 8599 8632 -1]
            )
            (case_arm
              pat_list: [{<Id.Lit_Star '*'>}]
              action: [
                (C {<ac_flags>} {<1>} {<otwo>} {<-O2>})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_OTWO')})
                    (C {<ac_flags>} {<1>} {<optimise>} {<-O>})
                  ]
                )
              ]
              spids: [8634 8635 8666 -1]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:assign_op.Equal rhs:{<0>} spids:[8673])]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{<bcc>}]
          action: [
            (C {<ac_flags>} {<1>} {<strpool>} {(DQ (${ Id.VSub_Name ccpc) <-d>)} 
              {(SQ <'if string pooling can be enabled'>)}
            )
          ]
          spids: [8682 8683 8704 -1]
        )
        (case_arm
          pat_list: [{<clang>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [8710]
                )
              ]
            )
          ]
          spids: [8706 8707 8714 -1]
        )
        (case_arm
          pat_list: [{<dec>}]
          action: [
            (C {<ac_flags>} {<0>} {<verb>} {<-verbose>})
            (C {<ac_flags>} {<1>} {<rodata>} {<-readonly_strings>})
          ]
          spids: [8716 8717 8738 -1]
        )
        (case_arm
          pat_list: [{<dmc>}]
          action: [
            (C {<ac_flags>} {<1>} {<decl>} {(DQ (${ Id.VSub_Name ccpc) <-r>)} 
              {(SQ <'for strict prototype checks'>)}
            )
            (C {<ac_flags>} {<1>} {<schk>} {(DQ (${ Id.VSub_Name ccpc) <-s>)} 
              {(SQ <'for stack overflow checking'>)}
            )
          ]
          spids: [8740 8741 8780 -1]
        )
        (case_arm
          pat_list: [{<gcc>}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NOWARN)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$DOWARN')}
                      spids: [8790]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:phase)
                  op: assign_op.Equal
                  rhs: {<u>}
                  spids: [8794]
                )
              ]
            )
            (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: [Id.Op_DPipe]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                  {($ Id.VSub_DollarName '$HAVE_CAN_FSTACKPROTECTORSTRONG')}
                )
                (C {<ac_flags>} {<1>} {<fstackprotectorall>} {<-fstack-protector-all>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} {<dragonegg>})
                (command.Case
                  to_match: 
                    {
                      (DQ <' '> ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                        ($ Id.VSub_DollarName '$LDFLAGS') <' '>
                      )
                    }
                  arms: [
                    (case_arm
                      pat_list: [
                        {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
                          <-fplugin> <Id.Lit_Equals '='> <Id.Lit_Star '*'> <dragonegg> <Id.Lit_Star '*'>
                        }
                      ]
                      spids: [8884 8891 8893 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (C {<ac_flags>} {<1>} {<fplugin_dragonegg>} 
                          {<-fplugin> <Id.Lit_Equals '='> <dragonegg>}
                        )
                      ]
                      spids: [8896 8897 8909 -1]
                    )
                  ]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$cm')}
              arms: [
                (case_arm
                  pat_list: [{<combine>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [8926]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:checks)
                          op: assign_op.Equal
                          rhs: {(SQ <'7 8'>)}
                          spids: [8930]
                        )
                      ]
                    )
                  ]
                  spids: [8922 8923 8936 -1]
                )
                (case_arm
                  pat_list: [{<lto>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [8943]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:checks)
                          op: assign_op.Equal
                          rhs: {(SQ <'1 2 3 4 5 6 7 8'>)}
                          spids: [8947]
                        )
                      ]
                    )
                  ]
                  spids: [8939 8940 8953 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [8960]
                        )
                      ]
                    )
                  ]
                  spids: [8956 8957 8964 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<1>})
                (command.ForEach
                  iter_name: what
                  iter_words: [{($ Id.VSub_DollarName '$checks')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<1>})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$what')}
                          arms: [
                            (case_arm
                              pat_list: [{<1>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                      spids: [9015]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <-fuse-linker-plugin>)}
                                      spids: [9021]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9027]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<fltojs_lp>}
                                      spids: [9030]
                                    )
                                  ]
                                )
                              ]
                              spids: [9012 9013 9033 -1]
                            )
                            (case_arm
                              pat_list: [{<2>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                      spids: [9039]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ )}
                                      spids: [9044]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9049]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<fltojs_nn>}
                                      spids: [9052]
                                    )
                                  ]
                                )
                              ]
                              spids: [9036 9037 9055 -1]
                            )
                            (case_arm
                              pat_list: [{<3>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                      spids: [9061]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'-fno-use-linker-plugin -fwhole-program'>)}
                                      spids: [9067]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9073]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<fltojs_np>}
                                      spids: [9076]
                                    )
                                  ]
                                )
                              ]
                              spids: [9058 9059 9079 -1]
                            )
                            (case_arm
                              pat_list: [{<4>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <-flto>)}
                                      spids: [9085]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <-fuse-linker-plugin>)}
                                      spids: [9091]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9097]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<fltons_lp>}
                                      spids: [9100]
                                    )
                                  ]
                                )
                              ]
                              spids: [9082 9083 9103 -1]
                            )
                            (case_arm
                              pat_list: [{<5>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <-flto>)}
                                      spids: [9109]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ )}
                                      spids: [9114]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9119]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<fltons_nn>}
                                      spids: [9122]
                                    )
                                  ]
                                )
                              ]
                              spids: [9106 9107 9125 -1]
                            )
                            (case_arm
                              pat_list: [{<6>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <-flto>)}
                                      spids: [9131]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'-fno-use-linker-plugin -fwhole-program'>)}
                                      spids: [9137]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9143]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<fltons_np>}
                                      spids: [9146]
                                    )
                                  ]
                                )
                              ]
                              spids: [9128 9129 9149 -1]
                            )
                            (case_arm
                              pat_list: [{<7>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_cflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'-fwhole-program --combine'>)}
                                      spids: [9155]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_ldflags)
                                      op: assign_op.Equal
                                      rhs: {(SQ )}
                                      spids: [9160]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_use)
                                      op: assign_op.Equal
                                      rhs: {<0>}
                                      spids: [9165]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:t_name)
                                      op: assign_op.Equal
                                      rhs: {<combine>}
                                      spids: [9168]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:cm)
                                      op: assign_op.Equal
                                      rhs: {<combine>}
                                      spids: [9171]
                                    )
                                  ]
                                )
                              ]
                              spids: [9152 9153 9174 -1]
                            )
                            (case_arm
                              pat_list: [{<8>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:fv)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                      spids: [9180]
                                    )
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:cm)
                                      op: assign_op.Equal
                                      rhs: {<normal>}
                                      spids: [9183]
                                    )
                                  ]
                                )
                              ]
                              spids: [9177 9178 9186 -1]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<1>})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                        )
                        (C {<ac_flags>} {($ Id.VSub_DollarName '$t_use')} 
                          {($ Id.VSub_DollarName '$t_name')} {(DQ ($ Id.VSub_DollarName '$t_cflags'))} 
                          {
                            (DQ <'if gcc supports '> ($ Id.VSub_DollarName '$t_cflags') <' '> 
                              ($ Id.VSub_DollarName '$t_ldflags')
                            )
                          } {(DQ ($ Id.VSub_DollarName '$t_ldflags'))}
                        )
                      ]
                    )
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [9232]
                )
              ]
            )
          ]
          spids: [8782 8783 9236 -1]
        )
        (case_arm
          pat_list: [{<hpcc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:phase)
                  op: assign_op.Equal
                  rhs: {<u>}
                  spids: [9242]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:phase)
                  op: assign_op.Equal
                  rhs: {<x>}
                  spids: [9254]
                )
              ]
            )
          ]
          spids: [9238 9239 9258 -1]
        )
        (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: assign_op.Equal
                  rhs: {<1>}
                  spids: [9291]
                )
              ]
            )
          ]
          spids: [9260 9261 9295 -1]
        )
        (case_arm
          pat_list: [{<mipspro>}]
          action: [
            (C {<ac_flags>} {<1>} {<fullwarn>} {<-fullwarn>} {(SQ <'for remark output support'>)})
          ]
          spids: [9297 9298 9314 -1]
        )
        (case_arm
          pat_list: [{<msc>}]
          action: [
            (C {<ac_flags>} {<1>} {<strpool>} {(DQ (${ Id.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 op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_flags>}
                {<->}
                {<1>}
                {<stackon>}
                {(DQ (${ Id.VSub_Name ccpc) <'/GZ'>)}
                {(SQ <'if stack checks can be enabled'>)}
              ]
              redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_flags>}
                {<->}
                {<1>}
                {<stckall>}
                {(DQ (${ Id.VSub_Name ccpc) <'/Ge'>)}
                {(SQ <'stack checks for all functions'>)}
              ]
              redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_flags>}
                {<->}
                {<1>}
                {<secuchk>}
                {(DQ (${ Id.VSub_Name ccpc) <'/GS'>)}
                {(SQ <'for compiler security checks'>)}
              ]
              redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})]
              do_fork: T
            )
            (C {<rmf>} {<x>})
            (C {<ac_flags>} {<1>} {<wall>} {(DQ (${ Id.VSub_Name ccpc) <'/Wall'>)} 
              {(SQ <'to enable all warnings'>)}
            )
            (C {<ac_flags>} {<1>} {<wp64>} {(DQ (${ Id.VSub_Name ccpc) <'/Wp64'>)} 
              {(SQ <'to enable 64-bit warnings'>)}
            )
          ]
          spids: [9316 9317 9458 -1]
        )
        (case_arm
          pat_list: [{<nwcc>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [9464]
                )
              ]
            )
          ]
          spids: [9460 9461 9472 -1]
        )
        (case_arm
          pat_list: [{<sunpro>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:phase)
                  op: assign_op.Equal
                  rhs: {<u>}
                  spids: [9478]
                )
              ]
            )
            (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: assign_op.Equal
                  rhs: {<x>}
                  spids: [9504]
                )
              ]
            )
          ]
          spids: [9474 9475 9508 -1]
        )
        (case_arm
          pat_list: [{<tcc>}]
          action: [(C {<Id.Lit_Colon ':'>})]
          spids: [9510 9511 9520 -1]
        )
        (case_arm
          pat_list: [{<tendra>}]
          action: [
            (C {<ac_flags>} {<0>} {<ysystem>} {<-Ysystem>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_YSYSTEM')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                      op: assign_op.Equal
                      rhs: {(DQ <'-Ysystem '> ($ Id.VSub_DollarName '$CPPFLAGS'))}
                      spids: [9545]
                    )
                  ]
                )
              ]
            )
            (C {<ac_flags>} {<1>} {<extansi>} {<-Xa>})
          ]
          spids: [9522 9523 9561 -1]
        )
        (case_arm
          pat_list: [{<xlc>}]
          action: [
            (C {<ac_flags>} {<1>} {<rodata>} {(DQ <'-qro -qroconst -qroptr'>)})
            (C {<ac_flags>} {<1>} {<rtcheck>} {<-qcheck> <Id.Lit_Equals '='> <all>})
            (C {<ac_flags>} {<1>} {<wformat>} {(DQ <'-qformat=all -qformat=nozln'>)})
          ]
          spids: [9563 9564 9608 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$i')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<ac_flags>} {<1>} {<wall>} {<-Wall>})
            (C {<ac_flags>} {<1>} {<fwrapv>} {<-fwrapv>})
          ]
          spids: [9615 9626]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:phase)
          op: assign_op.Equal
          rhs: {<x>}
          spids: [9649]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$DOWARN')}
          spids: [9655]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {($ Id.VSub_DollarName '$ct')} {<Id.Lit_Equals '='>} {<pcc>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:phase)
              op: assign_op.Equal
              rhs: {<u>}
              spids: [9668]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{<ac_test>} {<attribute_bounded>} {(SQ )} {(SQ <'for __attribute__((__bounded__))'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<attribute_format>} {(SQ )} {(SQ <'for __attribute__((__format__))'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<attribute_noreturn>} {(SQ )} {(SQ <'for __attribute__((__noreturn__))'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<attribute_pure>} {(SQ )} {(SQ <'for __attribute__((__pure__))'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<attribute_unused>} {(SQ )} {(SQ <'for __attribute__((__unused__))'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<attribute_used>} {(SQ )} {(SQ <'for __attribute__((__used__))'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOWARN)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$save_NOWARN')}
          spids: [9861]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:phase)
          op: assign_op.Equal
          rhs: {<x>}
          spids: [9864]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<ac_ifcpp>} {(SQ <'ifdef MKSH_SMALL'>)} {<isset_MKSH_SMALL>} {(SQ )} 
                      {(DQ <'if a reduced-feature mksh is requested'>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_NICE>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name HAVE_PERSISTENT_HISTORY>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
                  )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_categories)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' smksh'>)}
                  spids: [9922]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_ISSET_MKSH_CONSERVATIVE_FDS)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [9929]
                )
              ]
            )
          ]
          spids: [9877 9897]
        )
      ]
    )
    (command.AndOr
      ops: [Id.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: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' binsh'>)}
              spids: [9958]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.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: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' arge'>)}
              spids: [9985]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.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: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' arge nojsig'>)}
              spids: [10012]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.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 {<Id.Lit_Colon ':'>} 
          {
            (DQ 
              (braced_var_sub
                token: <Id.VSub_Name HAVE_SETLOCALE_CTYPE>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<0>})
              )
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Id.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: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' convfds'>)}
              spids: [10068]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.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: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' mnbsdash'>)}
              spids: [10113]
            )
          ]
        )
      ]
    )
    (C {<ac_header>} {<'sys/time.h'>} {<'sys/types.h'>})
    (C {<ac_header>} {<time.h>} {<'sys/types.h'>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {(DQ <11>)} {<Id.Lit_Equals '='>} 
          {(DQ ($ Id.VSub_DollarName '$HAVE_SYS_TIME_H') ($ Id.VSub_DollarName '$HAVE_TIME_H'))}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HAVE_BOTH_TIME_H)
              op: assign_op.Equal
              rhs: {<0>}
              spids: [10156]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<both_time_h>}
        {(SQ )}
        {(SQ <'whether <sys/time.h> and <time.h> can both be included'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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 op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<lft.c>})]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_testn>} {<can_lfs>} {(SQ )} {(DQ <'for large file support'>)}]
      redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<lft.c>})]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:save_CPPFLAGS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$CPPFLAGS')}
          spids: [10323]
        )
      ]
    )
    (C {<add_cppflags>} {<-D_FILE_OFFSET_BITS> <Id.Lit_Equals '='> <64>})
    (command.Simple
      words: [
        {<ac_testn>}
        {<can_lfs_sus>}
        {(SQ <'!'>)}
        {<can_lfs>}
        {<0>}
        {(DQ <'... with -D_FILE_OFFSET_BITS=64'>)}
      ]
      redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<lft.c>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_LFS_SUS')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$save_CPPFLAGS')}
                  spids: [10365]
                )
              ]
            )
            (C {<add_cppflags>} {<-D_LARGE_FILES> <Id.Lit_Equals '='> <1>})
            (command.Simple
              words: [
                {<ac_testn>}
                {<can_lfs_aix>}
                {(SQ <'!'>)}
                {<can_lfs>}
                {<0>}
                {(DQ <'... with -D_LARGE_FILES=1'>)}
              ]
              redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<lft.c>})]
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CAN_LFS_AIX')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPPFLAGS)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$save_CPPFLAGS')}
                      spids: [10406]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [10351 10362]
        )
      ]
    )
    (C {<rm>} {<-f>} {<lft.c>})
    (C {<rmf>} {<lft> <Id.Lit_Star '*'>})
    (command.Simple
      words: [
        {<ac_test>}
        {<can_inttypes>}
        {(SQ <'!'>)}
        {<stdint_h>}
        {<1>}
        {(DQ <'for standard 32-bit integer types'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<can_ucbints>}
        {(SQ <'!'>)}
        {<can_inttypes>}
        {<1>}
        {(DQ <'for UCB 32-bit integer types'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<can_int8type>}
        {(SQ <'!'>)}
        {<stdint_h>}
        {<1>}
        {(DQ <'for standard 8-bit integer type'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<can_ucbint8>}
        {(SQ <'!'>)}
        {<can_int8type>}
        {<1>}
        {(DQ <'for UCB 8-bit integer type'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<rlim_t>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_testn>} {<sig_t>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_testn>} {<sighandler_t>} {(SQ <'!'>)} {<sig_t>} {<0>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_SIGHANDLER_T')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<add_cppflags>} {<-Dsig_t> <Id.Lit_Equals '='> <sighandler_t>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_SIG_T)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [10624]
                )
              ]
            )
          ]
          spids: [10603 10614]
        )
      ]
    )
    (command.Simple
      words: [{<ac_testn>} {<__sighandler_t>} {(SQ <'!'>)} {<sig_t>} {<0>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                      {($ Id.VSub_DollarName '$HAVE___SIGHANDLER_T')}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<add_cppflags>} {<-Dsig_t> <Id.Lit_Equals '='> <__sighandler_t>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_SIG_T)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [10674]
                )
              ]
            )
          ]
          spids: [10653 10664]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_SIG_T')})
        (C {<add_cppflags>} {<-Dsig_t> <Id.Lit_Equals '='> <nosig_t>})
      ]
    )
    (C {<ac_cppflags>} {<SIG_T>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} {<makefile>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<Id.Lit_Colon ':'>} {<nothing>} {<to>} {<check>})]
          spids: [10710 10721]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HAVE_LINK_WORKS)
              op: assign_op.Equal
              rhs: {<x>}
              spids: [10735]
            )
          ]
        )
        (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: assign_op.Equal
              rhs: {<1>}
              spids: [10751]
            )
          ]
        )
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conftest.c>})
            (redir
              op: <Id.Redir_DLessDash '<<-'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 10783
                  stdin_parts: [
                    <'#define EXTERN\n'>
                    <'#define MKSH_INCLUDES_ONLY\n'>
                    <'#include '>
                    <Id.Right_DoubleQuote '"'>
                    <sh.h>
                    <Id.Right_DoubleQuote '"'>
                    <'\n'>
                    <'__RCSID('>
                    <Id.Right_DoubleQuote '"'>
                    ($ Id.VSub_DollarName '$srcversion')
                    <Id.Right_DoubleQuote '"'>
                    <');\n'>
                    <'int main(void) { printf('>
                    <Id.Right_DoubleQuote '"'>
                    <'Hello, World!'>
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>)
                    <n>
                    <Id.Right_DoubleQuote '"'>
                    <'); return (isatty(0)); }\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Case
          to_match: {($ Id.VSub_DollarName '$cm')}
          arms: [
            (case_arm
              pat_list: [{<llvm>}]
              action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -emit-llvm -c conftest.c'>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [10811]
                        )
                      ]
                    )
                  ]
                )
                (C {<rmf>} {($ Id.VSub_DollarName '$tfn') <.s>})
                (command.AndOr
                  ops: [Id.Op_DPipe Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} 
                      {
                        (DQ <'llvm-link -o - conftest.o | opt '> ($ Id.VSub_DollarName '$optflags') 
                          <' | llc -o '> ($ Id.VSub_DollarName '$tfn') <.s>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [10843]
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$LDFLAGS') <' -o '> ($ Id.VSub_DollarName '$tcfn') <' '> ($ Id.VSub_DollarName '$tfn') <'.s '> 
                          ($ Id.VSub_DollarName '$LIBS') <' '> ($ Id.VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
              spids: [10792 10793 10876 -1]
            )
            (case_arm
              pat_list: [{<dragonegg>}]
              action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -S -flto conftest.c'>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [10898]
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} {(DQ <'mv conftest.s conftest.ll'>)})
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} {(DQ <'llvm-as conftest.ll'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [10937]
                        )
                      ]
                    )
                  ]
                )
                (C {<rmf>} {($ Id.VSub_DollarName '$tfn') <.s>})
                (command.AndOr
                  ops: [Id.Op_DPipe Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} 
                      {
                        (DQ <'llvm-link -o - conftest.bc | opt '> ($ Id.VSub_DollarName '$optflags') 
                          <' | llc -o '> ($ Id.VSub_DollarName '$tfn') <.s>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [10969]
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$LDFLAGS') <' -o '> ($ Id.VSub_DollarName '$tcfn') <' '> ($ Id.VSub_DollarName '$tfn') <'.s '> 
                          ($ Id.VSub_DollarName '$LIBS') <' '> ($ Id.VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
              spids: [10879 10880 11002 -1]
            )
            (case_arm
              pat_list: [{<combine>}]
              action: [
                (C {<v>} 
                  {
                    (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                      ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' -fwhole-program --combine '> ($ Id.VSub_DollarName '$NOWARN') 
                      <' -o '> ($ Id.VSub_DollarName '$tcfn') <' conftest.c '> ($ Id.VSub_DollarName '$LIBS') <' '> 
                      ($ Id.VSub_DollarName '$ccpr')
                    )
                  }
                )
              ]
              spids: [11005 11006 11030 -1]
            )
            (case_arm
              pat_list: [{<lto>} {<normal>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cm)
                      op: assign_op.Equal
                      rhs: {<normal>}
                      spids: [11039]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -c conftest.c'>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [11058]
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<0>})
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$LDFLAGS') <' -o '> ($ Id.VSub_DollarName '$tcfn') <' conftest.o '> ($ Id.VSub_DollarName '$LIBS') <' '> 
                          ($ Id.VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
              spids: [11033 11036 11089 -1]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {<-f>} {($ Id.VSub_DollarName '$tcfn')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fv)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [11103]
                )
              ]
            )
          ]
        )
        (C {<ac_testdone>})
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {($ Id.VSub_DollarName '$fv')} {<Id.Lit_Equals '='>} {<1>})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<x> (DQ <NetBSD>)} {<Id.Lit_Equals '='>} 
          {<x> (DQ ($ Id.VSub_DollarName '$TARGET_OS'))}
        )
        (C {($ Id.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
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_testn>}
        {<_sys_errlist>}
        {(SQ <'!'>)}
        {<sys_errlist>}
        {<0>}
        {(DQ <'the _sys_errlist[] array and _sys_nerr'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$HAVE__SYS_ERRLIST'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<add_cppflags>} {<-Dsys_nerr> <Id.Lit_Equals '='> <_sys_nerr>})
            (C {<add_cppflags>} {<-Dsys_errlist> <Id.Lit_Equals '='> <_sys_errlist>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HAVE_SYS_ERRLIST)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [11240]
                )
              ]
            )
          ]
          spids: [11210 11223]
        )
      ]
    )
    (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: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<upper>} {($ Id.VSub_DollarName '$what')})
                      )
                    }
                  spids: [11264]
                )
              ]
            )
            (command.Simple
              words: [
                {<ac_testn>}
                {<sys_sig> ($ Id.VSub_DollarName '$what')}
                {(SQ )}
                {(DQ <'the sys_sig'> (${ Id.VSub_Name what) <'[] array'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 11305
                      stdin_parts: [
                        <'extern const char * const sys_sig'>
                        (${ Id.VSub_Name what)
                        <'[];\n'>
                        <'extern int isatty(int);\n'>
                        <'int main(void) { return (sys_sig'>
                        (${ Id.VSub_Name what)
                        <'[0][0] + isatty(0)); }\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_testn>}
                {<_sys_sig> ($ Id.VSub_DollarName '$what')}
                {(SQ <'!'>)}
                {<sys_sig> ($ Id.VSub_DollarName '$what')}
                {<0>}
                {(DQ <'the _sys_sig'> (${ Id.VSub_Name what) <'[] array'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 11344
                      stdin_parts: [
                        <'extern const char * const _sys_sig'>
                        (${ Id.VSub_Name what)
                        <'[];\n'>
                        <'extern int isatty(int);\n'>
                        <'int main(void) { return (_sys_sig'>
                        (${ Id.VSub_Name what)
                        <'[0][0] + isatty(0)); }\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (C {<eval>} 
              {<Id.Lit_VarLike 'uwhat_v='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                <HAVE__SYS_SIG> ($ Id.VSub_DollarName '$uwhat')
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$uwhat_v'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<add_cppflags>} 
                      {<-Dsys_sig> ($ Id.VSub_DollarName '$what') <Id.Lit_Equals '='> <_sys_sig> 
                        ($ Id.VSub_DollarName '$what')
                      }
                    )
                    (C {<eval>} 
                      {<HAVE_SYS_SIG> ($ Id.VSub_DollarName '$uwhat') <Id.Lit_Equals '='> <1>}
                    )
                  ]
                  spids: [11354 11367]
                )
              ]
            )
            (C {<ac_cppflags>} {<SYS_SIG> ($ Id.VSub_DollarName '$uwhat')})
          ]
        )
    )
    (command.Simple
      words: [{<ac_test>} {<flock>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<lock_fcntl>}
        {(SQ <'!'>)}
        {<flock>}
        {<1>}
        {(SQ <'whether we can lock files with fcntl'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<getrusage>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<getsid>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 11484
              stdin_parts: [
                <'#include <unistd.h>\n'>
                <'int main(void) { return ((int)getsid(0)); }\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<gettimeofday>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<killpg>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<memmove>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<mknod>} {(SQ )} {(SQ <'if to use mknod(), makedev() and friends'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<mmap>} {<lock_fcntl>} {<0>} {(SQ <'for mmap and munmap'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<nice>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 11601
              stdin_parts: [<'#include <unistd.h>\n'> <'int main(void) { return (nice(4)); }\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<revoke>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<setlocale_ctype>} {(SQ )} {(SQ <'setlocale(LC_CTYPE, "")'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<langinfo_codeset>} {<setlocale_ctype>} {<0>} {(SQ <'nl_langinfo(CODESET)'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<select>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<setresugid>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<setgroups>} {<setresugid>} {<0>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$et'))} {<Id.Lit_Equals '='>} 
                      {<x> (DQ <klibc>)}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<ac_testn>} {<__rt_sigsuspend>} {(SQ )} {(SQ <'whether klibc uses RT signals'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_testn>}
                {<__sigsuspend_s>}
                {(SQ <'!'>)}
                {<__rt_sigsuspend>}
                {<1>}
                {(SQ <'whether sigsuspend is usable (1/2)'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_testn>}
                {<__sigsuspend_xxs>}
                {(SQ <'!'>)}
                {<__sigsuspend_s>}
                {<1>}
                {(SQ <'whether sigsuspend is usable (2/2)'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ <000>)} {<Id.Lit_Equals '='>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$HAVE___RT_SIGSUSPEND') 
                                  ($ Id.VSub_DollarName '$HAVE___SIGSUSPEND_S') ($ Id.VSub_DollarName '$HAVE___SIGSUSPEND_XXS')
                                )
                              }
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<add_cppflags>} {<-DMKSH_NO_SIGSUSPEND>})]
                  spids: [11847 11864]
                )
              ]
            )
          ]
          spids: [11739 11756]
        )
      ]
    )
    (command.Simple
      words: [{<ac_test>} {<strerror>} {(SQ <'!'>)} {<sys_errlist>} {<0>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<strsignal>} {(SQ <'!'>)} {<sys_siglist>} {<0>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<strlcpy>}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<flock_decl>} {<flock>} {<1>} {(SQ <'for declaration of flock()'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<ac_test>} {<revoke_decl>} {<revoke>} {<1>} {(SQ <'for declaration of revoke()'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<sys_errlist_decl>}
        {<sys_errlist>}
        {<0>}
        {(DQ <'for declaration of sys_errlist[] and sys_nerr'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<ac_test>}
        {<sys_siglist_decl>}
        {<sys_siglist>}
        {<0>}
        {(SQ <'for declaration of sys_siglist[]'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:fd)
          op: assign_op.Equal
          rhs: {(SQ <'if to use persistent history'>)}
          spids: [12044]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ac_cache>} {<PERSISTENT_HISTORY>})
        (command.Case
          to_match: 
            {($ Id.VSub_DollarName '$HAVE_MMAP') ($ Id.VSub_DollarName '$HAVE_FLOCK') 
              ($ Id.VSub_DollarName '$HAVE_LOCK_FCNTL')
            }
          arms: [
            (case_arm
              pat_list: [{<11> <Id.Lit_Star '*'>} {<101>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fv)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [12069]
                    )
                  ]
                )
              ]
              spids: [12063 12067 12072 -1]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$fv')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' no-histfile'>)}
              spids: [12086]
            )
          ]
        )
      ]
    )
    (C {<ac_testdone>})
    (C {<ac_cppflags>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:save_CFLAGS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$CFLAGS')}
          spids: [12097]
        )
      ]
    )
    (command.Simple
      words: [
        {<ac_testn>}
        {<compile_time_asserts_> ($ Id.VSub_Dollar '$$')}
        {(SQ )}
        {(SQ <'whether compile-time assertions pass'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CFLAGS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$save_CFLAGS')}
          spids: [12174]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<eval>} {<test>} {<1>} {<Id.Lit_Equals '='>} 
          {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <HAVE_COMPILE_TIME_ASSERTS_> 
            ($ Id.VSub_Dollar '$$')
          }
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {($ Id.VSub_DollarName '$legacy')} {<Id.Lit_Equals '='>} {<1>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<ac_test>} {<long_32bit>} {(SQ )} {(SQ <'whether long is 32 bit wide'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<ac_test>}
                {<long_64bit>}
                {(SQ <'!'>)}
                {<long_32bit>}
                {<0>}
                {(SQ <'whether long is 64 bit wide'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      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'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$HAVE_LONG_32BIT') ($ Id.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: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' int:32'>)}
                          spids: [12295]
                        )
                      ]
                    )
                  ]
                  spids: [12292 12293 12301 -1]
                )
                (case_arm
                  pat_list: [{<01>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:check_categories)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' int:64'>)}
                          spids: [12307]
                        )
                      ]
                    )
                  ]
                  spids: [12304 12305 12313 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:check_categories)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$check_categories') <' int:u'>)}
                          spids: [12319]
                        )
                      ]
                    )
                  ]
                  spids: [12316 12317 12325 -1]
                )
              ]
            )
          ]
          spids: [12205 12216]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_SYS_SIGNAME')})
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<ac_testinit>} {<cpp_dd>} {(SQ )} 
                          {(SQ <'checking if the C Preprocessor supports -dD'>)}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.Simple
                  words: [{<echo>} {(SQ <'#define foo bar'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<conftest.c>}
                    )
                  ]
                  do_fork: T
                )
                (C {<vv>} {(SQ <']'>)} 
                  {
                    (DQ ($ Id.VSub_DollarName '$CPP') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                      ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$NOWARN') <' -dD conftest.c >x'>
                    )
                  }
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (command.Simple
                      words: [{<grep>} {(SQ <'#define foo bar'>)} {<x>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fv)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [12415]
                        )
                      ]
                    )
                  ]
                )
                (C {<rmf>} {<conftest.c>} {<x>} {<vv.out>})
                (C {<ac_testdone>})
              ]
              spids: [12352 12368]
            )
          ]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')} {<Id.Lit_TDot ...>} {<done.>})
    (command.Simple
      words: [{<echo>} {<wq>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<ed>} {<x>}]
              redirects: [
                (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})
                (redir
                  op: <Id.Redir_Great '2>'>
                  loc: (redir_loc.Fd fd:2)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<grep>} {<3>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:check_categories)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ ($ Id.VSub_DollarName '$check_categories') <' '> 
                    ($ Id.VSub_DollarName '$oldish_ed')
                  )
                }
              spids: [12488]
            )
          ]
        )
      ]
    )
    (C {<rmf>} {<x>} {<vv.out>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_SYS_SIGNAME')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                              {($ Id.VSub_DollarName '$HAVE_CPP_DD')}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName '$e')} {<Generating>} {<list>} {<of>} {<signal>} {<names...>})
                  ]
                  spids: [12516 12527]
                )
              ]
              else_action: [
                (C {($ Id.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: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [12572]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigseentwo)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [12576]
                )
              ]
            )
            (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 op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conftest.c>})]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NSIG)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<vq>} 
                                {
                                  (DQ ($ Id.VSub_DollarName '$CPP') <' '> 
                                    ($ Id.VSub_DollarName '$CFLAGS') <' '> ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.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
                          )
                      )
                    }
                  spids: [12611]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$NSIG')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <mksh_cfg> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Sentence
                      child: 
                        (C {($ Id.VSub_DollarName '$e')} 
                          {(DQ <'Error: NSIG=\''> ($ Id.VSub_DollarName '$NSIG') <'\''>)}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:NSIG)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [12719]
                        )
                      ]
                    )
                  ]
                  spids: [12705 12708 12722 -1]
                )
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\ '>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\)'>
                      ) <Id.Lit_Other '+'> <-> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:NSIG)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {(DQ ($ Id.VSub_DollarName '$AWK'))}
                                      {(DQ <'BEGIN { print '> ($ Id.VSub_DollarName '$NSIG') <' }'>)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Less '<'>
                                        loc: (redir_loc.Fd fd:0)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [12736]
                        )
                      ]
                    )
                  ]
                  spids: [12725 12734 12754 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:printf)
                  op: assign_op.Equal
                  rhs: {<printf>}
                  spids: [12760]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Subshell
                  child: (C {<printf>} {<hallo>})
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:printf)
                      op: assign_op.Equal
                      rhs: {<echo>}
                      spids: [12778]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe Id.Op_DPipe]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$printf')} {<Id.Lit_Equals '='>} {<echo>})
                (C {<test>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<printf>} {<Id.Lit_Other '%'> <d>} {<42>})
                      )
                    )
                  } {<Id.Lit_Equals '='>} {<42>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:printf)
                      op: assign_op.Equal
                      rhs: {<echo>}
                      spids: [12813]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$printf')} {<Id.Lit_Equals '='>} {<echo>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NSIG)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                words: [
                                  {<printf>}
                                  {<Id.Lit_Other '%'> <d>}
                                  {(DQ ($ Id.VSub_DollarName '$NSIG'))}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                          )
                        }
                      spids: [12827]
                    )
                  ]
                )
              ]
            )
            (C {($ Id.VSub_DollarName '$printf')} 
              {(DQ <'NSIG='> ($ Id.VSub_DollarName '$NSIG') <' ... '>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: assign_op.Equal
                  rhs: {(DQ <'ABRT FPE ILL INT SEGV TERM ALRM BUS CHLD CONT HUP KILL PIPE QUIT'>)}
                  spids: [12854]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$sigs') 
                        <' STOP TSTP TTIN TTOU USR1 USR2 POLL PROF SYS TRAP URG VTALRM'>
                      )
                    }
                  spids: [12860]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$sigs') 
                        <' XCPU XFSZ INFO WINCH EMT IO DIL LOST PWR SAK CLD IOT STKFLT'>
                      )
                    }
                  spids: [12867]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sigs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$sigs') 
                        <' ABND DCE DUMP IOERR TRACE DANGER THCONT THSTOP RESV UNUSED'>
                      )
                    }
                  spids: [12874]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_CPP_DD')})
                (C {<test>} {($ Id.VSub_DollarName '$NSIG')} {<-gt>} {<1>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:sigs)
                      op: assign_op.Equal
                      rhs: 
                        {(DQ ($ Id.VSub_DollarName '$sigs') <' '>) 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<vq>} 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$CPP') <' '> 
                                        ($ Id.VSub_DollarName '$CFLAGS') <' '> ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.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
                              )
                          )
                        }
                      spids: [12901]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {($ Id.VSub_DollarName '$NSIG')} {<-gt>} {<1>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:sigs)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [12975]
                    )
                  ]
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  iter_name: name
                  iter_words: [{($ Id.VSub_DollarName '$sigs')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$sigseenone')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$name') 
                                  <Id.Lit_Colon ':'> <Id.Lit_Star '*'>
                                }
                              ]
                              action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                              spids: [12997 13002 13006 -1]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:sigseenone)
                              op: assign_op.Equal
                              rhs: 
                                {($ Id.VSub_DollarName '$sigseenone') ($ Id.VSub_DollarName '$name') 
                                  <Id.Lit_Colon ':'>
                                }
                              spids: [13012]
                            )
                          ]
                        )
                        (command.Simple
                          words: [{<echo>} {(SQ <'#include <signal.h>'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<conftest.c>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          words: [{<echo>} {<int>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<conftest.c>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          words: [
                            {<echo>}
                            {<Id.Lit_VarLike 'mksh_cfg='>}
                            {<SIG> ($ Id.VSub_DollarName '$name')}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<conftest.c>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          words: [{<echo>} {(SQ <';'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<conftest.c>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Pipeline
                          children: [
                            (C {<vq>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$CPP') <' '> 
                                  ($ Id.VSub_DollarName '$CFLAGS') <' '> ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.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 '>) 
                                ($ Id.VSub_DollarName '$name') <'/'>
                              }
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
                (C {<sed>} {<-n>} {(SQ <'/^:[^ ]/s/^://p'>)})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<nr>} {<name>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<test>} {($ Id.VSub_DollarName '$printf')} {<Id.Lit_Equals '='>} {<echo>})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:nr)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            words: [
                                              {<printf>}
                                              {<Id.Lit_Other '%'> <d>}
                                              {(DQ ($ Id.VSub_DollarName '$nr'))}
                                            ]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Great '2>'>
                                                loc: (redir_loc.Fd fd:2)
                                                arg: {<'/dev/null'>}
                                              )
                                            ]
                                            do_fork: T
                                          )
                                      )
                                    }
                                  spids: [13158]
                                )
                              ]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DPipe]
                          children: [
                            (C {<test>} {($ Id.VSub_DollarName '$nr')} {<-gt>} {<0>})
                            (C {<test>} {($ Id.VSub_DollarName '$nr')} {<-lt>} 
                              {($ Id.VSub_DollarName '$NSIG')}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$sigseentwo')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$nr') 
                                  <Id.Lit_Colon ':'> <Id.Lit_Star '*'>
                                }
                              ]
                              spids: [13206 13211 13213 -1]
                            )
                            (case_arm
                              pat_list: [{<Id.Lit_Star '*'>}]
                              action: [
                                (C {<echo>} 
                                  {
                                    (DQ <'\t\t{ '> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\"'>
                                      ) ($ Id.VSub_DollarName '$name') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <', '> 
                                      ($ Id.VSub_DollarName '$nr') <' },'>
                                    )
                                  }
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:sigseentwo)
                                      op: assign_op.Equal
                                      rhs: 
                                        {($ Id.VSub_DollarName '$sigseentwo') 
                                          ($ Id.VSub_DollarName '$nr') <Id.Lit_Colon ':'>
                                        }
                                      spids: [13232]
                                    )
                                  ]
                                )
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName '$printf')}
                                    {
                                      (DQ ($ Id.VSub_DollarName '$name') <'='> 
                                        ($ Id.VSub_DollarName '$nr') <' '>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              spids: [13216 13217 13251 -1]
                            )
                          ]
                        )
                      ]
                    )
                  redirects: [
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<signames.inc>}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {<rmf>} {<conftest.c>})
            (C {($ Id.VSub_DollarName '$e')} {<done.>})
          ]
          spids: [12502 12513]
        )
      ]
    )
    (C {<addsrcs>} {(SQ <'!'>)} {<HAVE_STRLCPY>} {<strlcpy.c>})
    (C {<addsrcs>} {<USE_PRINTF_BUILTIN>} {<printf.c>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$USE_PRINTF_BUILTIN'))})
        (C {<add_cppflags>} {<-DMKSH_PRINTF_BUILTIN>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$HAVE_CAN_VERB'))})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CFLAGS)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName '$CFLAGS') <' -verbose'>)}
              spids: [13322]
            )
          ]
        )
      ]
    )
    (C {<add_cppflags>} {<-DMKSH_BUILD_R> <Id.Lit_Equals '='> <523>})
    (C {($ Id.VSub_DollarName '$e')} 
      {($ Id.VSub_DollarName '$bi') ($ Id.VSub_DollarName '$me') <Id.Lit_Colon ':'>} {<Finished>} {<configuration>} {<testing> <Id.Lit_Comma ','>} {<now>} {<producing>} 
      {<output.> ($ Id.VSub_DollarName '$ao')}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:files)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [13356]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:objs)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [13358]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sp)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [13360]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.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: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$tfn') <.exe>}
                  spids: [13374]
                )
              ]
            )
            (C {<add_cppflags>} {<-DMKSH_EXE_EXT>})
          ]
          spids: [13368 13371 13384 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshexe)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$tfn')}
                  spids: [13390]
                )
              ]
            )
          ]
          spids: [13386 13387 13394 -1]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$curdir')}
      arms: [
        (case_arm
          pat_list: [
            {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
              <Id.Lit_Star '*'>
            }
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshshebang)
                  op: assign_op.Equal
                  rhs: {(DQ <'#!./'> ($ Id.VSub_DollarName '$mkshexe'))}
                  spids: [13409]
                )
              ]
            )
          ]
          spids: [13404 13407 13415 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mkshshebang)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'#!'> ($ Id.VSub_DollarName '$curdir') <'/'> 
                        ($ Id.VSub_DollarName '$mkshexe')
                      )
                    }
                  spids: [13420]
                )
              ]
            )
          ]
          spids: [13417 13418 13428 -1]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<test.sh>})
        (redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 13773
              stdin_parts: [
                ($ Id.VSub_DollarName '$mkshshebang')
                <'\n'>
                <'LC_ALL=C PATH=\''>
                ($ Id.VSub_DollarName '$PATH')
                <'\'; export LC_ALL PATH\n'>
                <'test -n '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <KSH_VERSION>
                <Id.Right_DoubleQuote '"'>
                <' || exit 1\n'>
                <'set -A check_categories -- '>
                ($ Id.VSub_DollarName '$check_categories')
                <'\n'>
                <'pflag=\''>
                ($ Id.VSub_DollarName '$curdir')
                <'/'>
                ($ Id.VSub_DollarName '$mkshexe')
                <'\'\n'>
                <'sflag=\''>
                ($ Id.VSub_DollarName '$srcdir')
                <'/check.t\'\n'>
                <'usee=0 Pflag=0 Sflag=0 uset=0 vflag=1 xflag=0\n'>
                <'while getopts '>
                <Id.Right_DoubleQuote '"'>
                <'C:e:fPp:QSs:t:v'>
                <Id.Right_DoubleQuote '"'>
                <' ch; do case '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'ch {\n'>
                <'(C)\tcheck_categories['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#check_categories[*]}]='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'OPTARG ;;\n'>
                <'(e)\tusee=1; eflag='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'OPTARG ;;\n'>
                <'(f)\tcheck_categories['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#check_categories[*]}]=fastbox ;;\n'>
                <'(P)\tPflag=1 ;;\n'>
                <'(+P)\tPflag=0 ;;\n'>
                <'(p)\tpflag='>
                (word_part.EscapedLiteral token:<Id.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:<Id.Lit_EscapedChar '\\$'>)
                <'OPTARG ;;\n'>
                <'(t)\tuset=1; tflag='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'OPTARG ;;\n'>
                <'(v)\tvflag=1 ;;\n'>
                <'(+v)\tvflag=0 ;;\n'>
                <'(*)\txflag=1 ;;\n'>
                <'}\n'>
                <'done\n'>
                <'shift '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'((OPTIND - 1))\n'>
                <'set -A args -- \''>
                ($ Id.VSub_DollarName '$srcdir')
                <'/check.pl\' -p '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <pflag>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'x=\n'>
                <'for y in '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{check_categories[@]}'>
                <Id.Right_DoubleQuote '"'>
                <'; do\n'>
                <'x='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'x,'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'y\n'>
                <'done\n'>
                <'if [[ -n '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'x ]]; then\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-C\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{x#,}\n'>
                <'fi\n'>
                <'if (( usee )); then\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-e\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'eflag\n'>
                <'fi\n'>
                <'(( Pflag )) && args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-P\n'>
                <'if (( uset )); then\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-t\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'tflag\n'>
                <'fi\n'>
                <'(( vflag )) && args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-v\n'>
                <'(( xflag )) && args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-x\t# force usage by synerr\n'>
                <'if [[ -n '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'TMPDIR && -d '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'TMPDIR/. ]]; then\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]=-T\n'>
                <'args['>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{#args[*]}]='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'TMPDIR\n'>
                <'fi\n'>
                <'print Testing mksh for conformance:\n'>
                <'grep -F -e Mir\'\'OS: -e MIRBSD '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <sflag>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'print '>
                <Id.Right_DoubleQuote '"'>
                <'This shell is actually:'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>)
                <n>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>)
                <t>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <KSH_VERSION>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'print \'test.sh built for mksh '>
                ($ Id.VSub_DollarName '$dstversion')
                <'\'\n'>
                <'cstr=\''>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'os = defined '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'^O ? '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'^O : '>
                <Id.Right_DoubleQuote '"'>
                <unknown>
                <Id.Right_DoubleQuote '"'>
                <';\'\n'>
                <'cstr='>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <cstr>
                <Id.Right_DoubleQuote '"'>
                <'\'print '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'os . '>
                <Id.Right_DoubleQuote '"'>
                <', Perl version '>
                <Id.Right_DoubleQuote '"'>
                <' . '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'];\'\n'>
                <'for perli in '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'PERL perl5 perl no; do\n'>
                <'if [[ '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli = no ]]; then\n'>
                <'print Cannot find a working Perl interpreter, aborting.\n'>
                <'exit 1\n'>
                <'fi\n'>
                <'print '>
                <Id.Right_DoubleQuote '"'>
                <'Trying Perl interpreter \''>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli\'...'>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'perlos='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'('>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli -e '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <cstr>
                <Id.Right_DoubleQuote '"'>
                <')\n'>
                <'rv='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'?\n'>
                <'print '>
                <Id.Right_DoubleQuote '"'>
                <'Errorlevel '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'rv, running on \''>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perlos\''>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'if (( rv )); then\n'>
                <'print '>
                <Id.Right_DoubleQuote '"'>
                <'=> not using'>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'continue\n'>
                <'fi\n'>
                <'if [[ -n '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perlos ]]; then\n'>
                <'print '>
                <Id.Right_DoubleQuote '"'>
                <'=> using it'>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'break\n'>
                <'fi\n'>
                <'done\n'>
                <'(( Sflag )) || echo + '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{args[@]}'>
                <Id.Right_DoubleQuote '"'>
                <' -s '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <sflag>
                <Id.Right_DoubleQuote '"'>
                <' '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'@'>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'(( Sflag )) || exec '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{args[@]}'>
                <Id.Right_DoubleQuote '"'>
                <' -s '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <sflag>
                <Id.Right_DoubleQuote '"'>
                <' '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'@'>
                <Id.Right_DoubleQuote '"'>
                ($ Id.VSub_DollarName '$tsts')
                <'\n'>
                <'# use of the -S option for check.t split into multiple chunks\n'>
                <'rv=0\n'>
                <'for s in '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <sflag>
                <Id.Right_DoubleQuote '"'>
                <'.*; do\n'>
                <'echo + '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{args[@]}'>
                <Id.Right_DoubleQuote '"'>
                <' -s '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <s>
                <Id.Right_DoubleQuote '"'>
                <' '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'@'>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'perli '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'{args[@]}'>
                <Id.Right_DoubleQuote '"'>
                <' -s '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <s>
                <Id.Right_DoubleQuote '"'>
                <' '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'@'>
                <Id.Right_DoubleQuote '"'>
                ($ Id.VSub_DollarName '$tsts')
                <'\n'>
                <'rc='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'?\n'>
                <'(( rv = rv ? rv : rc ))\n'>
                <'done\n'>
                <'exit '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'rv\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<chmod>} {<755>} {<test.sh>})
    (command.Case
      to_match: {($ Id.VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{<dragonegg>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:emitbc)
                  op: assign_op.Equal
                  rhs: {(DQ <'-S -flto'>)}
                  spids: [13790]
                )
              ]
            )
          ]
          spids: [13786 13787 13796 -1]
        )
        (case_arm
          pat_list: [{<llvm>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:emitbc)
                  op: assign_op.Equal
                  rhs: {(DQ <'-emit-llvm -c'>)}
                  spids: [13802]
                )
              ]
            )
          ]
          spids: [13798 13799 13808 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:emitbc)
                  op: assign_op.Equal
                  rhs: {<-c>}
                  spids: [13814]
                )
              ]
            )
          ]
          spids: [13810 13811 13818 -1]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(DQ <': # work around NeXTstep bug'>)}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
      do_fork: T
    )
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$srcdir'))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:optfiles)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<echo>} {<Id.Lit_Star '*'> <.opt>})
              )
            }
          spids: [13837]
        )
      ]
    )
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$curdir'))})
    (command.ForEach
      iter_name: file
      iter_words: [{($ Id.VSub_DollarName '$optfiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<echo>} {(DQ <'echo + Running genopt on \''> ($ Id.VSub_DollarName '$file') <'\'...'>)})
            (C {<echo>} 
              {
                (DQ <'(srcfile=\''> ($ Id.VSub_DollarName '$srcdir') <'/'> 
                  ($ Id.VSub_DollarName '$file') <'\'; BUILDSH_RUN_GENOPT=1; . \''> ($ Id.VSub_DollarName '$srcdir') <'/Build.sh\')'>
                )
              }
            )
          ]
        )
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
    )
    (command.Simple
      words: [{<echo>} {<set>} {<-x>}]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
      do_fork: T
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ Id.VSub_DollarName '$SRCS')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:op)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {<x> (DQ ($ Id.VSub_DollarName '$file'))})
                              (C {<sed>} {(SQ <'s/^x\\(.*\\)\\.c$/\\1./'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [13912]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-f>} {($ Id.VSub_DollarName '$file')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:file)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$file')}
                      spids: [13949]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:files)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$files') ($ Id.VSub_DollarName '$sp') 
                        ($ Id.VSub_DollarName '$file')
                      )
                    }
                  spids: [13955]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sp)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [13963]
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                    ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$emitbc') <' '> ($ Id.VSub_DollarName '$file') <' || exit 1'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} 
                              {<dragonegg>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ <'mv '> (${ Id.VSub_Name op) <'s '> (${ Id.VSub_Name op) <ll>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<Rebuild.sh>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'llvm-as '> (${ Id.VSub_Name op) <'ll || exit 1'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<Rebuild.sh>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:objs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$objs') ($ Id.VSub_DollarName '$sp') 
                                (${ Id.VSub_Name op) <bc>
                              )
                            }
                          spids: [14034]
                        )
                      ]
                    )
                  ]
                  spids: [13988 13999]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:objs)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ($ Id.VSub_DollarName '$objs') ($ Id.VSub_DollarName '$sp') 
                            (${ Id.VSub_Name op) <o>
                          )
                        }
                      spids: [14048]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{<dragonegg>} {<llvm>}]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'rm -f '> ($ Id.VSub_DollarName '$tfn') <.s>)}]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'llvm-link -o - '> ($ Id.VSub_DollarName '$objs') <' | opt '> 
                    ($ Id.VSub_DollarName '$optflags') <' | llc -o '> ($ Id.VSub_DollarName '$tfn') <.s>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lobjs)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$tfn') <.s>}
                  spids: [14103]
                )
              ]
            )
          ]
          spids: [14069 14072 14108 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lobjs)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$objs')}
                  spids: [14114]
                )
              ]
            )
          ]
          spids: [14110 14111 14118 -1]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {<Id.Lit_VarLike 'tcfn='> ($ Id.VSub_DollarName '$mkshexe')}]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
            ($ Id.VSub_DollarName '$LDFLAGS') <' -o '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'tcfn '> 
            ($ Id.VSub_DollarName '$lobjs') <' '> ($ Id.VSub_DollarName '$LIBS') <' '> ($ Id.VSub_DollarName '$ccpr')
          )
        }
      ]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ <'test -f '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
            <'tcfn || exit 1; '> ($ Id.VSub_DollarName '$SIZE') <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <tcfn>
          )
        }
      ]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Rebuild.sh>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} {<makefile>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:extras)
                  op: assign_op.Equal
                  rhs: {(SQ <'emacsfn.h rlimits.opt sh.h sh_flags.opt var_spec.h'>)}
                  spids: [14180]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$HAVE_SYS_SIGNAME')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:extras)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$extras') <' signames.inc'>)}
                      spids: [14196]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:gens)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [14203]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:genq)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [14205]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$optfiles')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:genf)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<basename>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                      (C {<sed>} {(SQ <'s/.opt$/.gen/'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [14220]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:gens)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ ($ Id.VSub_DollarName '$gens') <' '> ($ Id.VSub_DollarName '$genf'))}
                          spids: [14240]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:genq)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$genq') ($ Id.VSub_DollarName '$nl') 
                                ($ Id.VSub_DollarName '$genf') <': '> ($ Id.VSub_DollarName '$srcdir') <'/Build.sh '> ($ Id.VSub_DollarName '$srcdir') <'/'> 
                                ($ Id.VSub_DollarName '$file') <'\n'> <'\t\t\tsrcfile='> ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$file') 
                                <'; BUILDSH_RUN_GENOPT=1; . '> ($ Id.VSub_DollarName '$srcdir') <'/Build.sh'>
                              )
                            }
                          spids: [14248]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<Makefrag.inc>}
                )
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 14387
                      stdin_parts: [
                        <'# Makefile fragment for building mksh '>
                        ($ Id.VSub_DollarName '$dstversion')
                        <'\n'>
                        <'\n'>
                        <'PROG=\t\t'>
                        ($ Id.VSub_DollarName '$mkshexe')
                        <'\n'>
                        <'MAN=\t\tmksh.1\n'>
                        <'SRCS=\t\t'>
                        ($ Id.VSub_DollarName '$SRCS')
                        <'\n'>
                        <'SRCS_FP=\t'>
                        ($ Id.VSub_DollarName '$files')
                        <'\n'>
                        <'OBJS_BP=\t'>
                        ($ Id.VSub_DollarName '$objs')
                        <'\n'>
                        <'INDSRCS=\t'>
                        ($ Id.VSub_DollarName '$extras')
                        <'\n'>
                        <'NONSRCS_INST=\tdot.mkshrc '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(MAN)\n'>
                        <'NONSRCS_NOINST=\tBuild.sh Makefile Rebuild.sh check.pl check.t test.sh\n'>
                        <'CC=\t\t'>
                        ($ Id.VSub_DollarName '$CC')
                        <'\n'>
                        <'CFLAGS=\t\t'>
                        ($ Id.VSub_DollarName '$CFLAGS')
                        <'\n'>
                        <'CPPFLAGS=\t'>
                        ($ Id.VSub_DollarName '$CPPFLAGS')
                        <'\n'>
                        <'LDFLAGS=\t'>
                        ($ Id.VSub_DollarName '$LDFLAGS')
                        <'\n'>
                        <'LIBS=\t\t'>
                        ($ Id.VSub_DollarName '$LIBS')
                        <'\n'>
                        <'\n'>
                        <'.depend '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(OBJS_BP):'>
                        ($ Id.VSub_DollarName '$gens')
                        ($ Id.VSub_DollarName '$genq')
                        <'\n'>
                        <'\n'>
                        <'# not BSD make only:\n'>
                        <'#VPATH=\t\t'>
                        ($ Id.VSub_DollarName '$srcdir')
                        <'\n'>
                        <'#all: '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(PROG)\n'>
                        <'#'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(PROG): '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(OBJS_BP)\n'>
                        <'#\t'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(CC) '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(CFLAGS) '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(LDFLAGS) -o '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'@ '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(OBJS_BP) '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(LIBS)\n'>
                        <'#'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(OBJS_BP): '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(SRCS_FP) '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(NONSRCS)\n'>
                        <'#.c.o:\n'>
                        <'#\t'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(CC) '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(CFLAGS) '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(CPPFLAGS) -c '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'<\n'>
                        <'\n'>
                        <'# for all make variants:\n'>
                        <'#REGRESS_FLAGS=\t-f\n'>
                        <'#regress:\n'>
                        <'#\t./test.sh '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                        <'(REGRESS_FLAGS)\n'>
                        <'check_categories='>
                        ($ Id.VSub_DollarName '$check_categories')
                        <'\n'>
                        <'\n'>
                        <'# for BSD make only:\n'>
                        <'#.PATH: '>
                        ($ Id.VSub_DollarName '$srcdir')
                        <'\n'>
                        <'#.include <bsd.prog.mk>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (C {($ Id.VSub_DollarName '$e')})
            (C {($ Id.VSub_DollarName '$e')} {<Generated>} {<Makefrag.inc>} {<successfully.>})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [14166 14177]
        )
      ]
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ Id.VSub_DollarName '$optfiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {($ Id.VSub_DollarName '$e')} 
              {(DQ <'+ Running genopt on \''> ($ Id.VSub_DollarName '$file') <'\'...'>)}
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<do_genopt>} 
                  {(DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$file'))}
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} {<combine>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:objs)
                  op: assign_op.Equal
                  rhs: {(DQ <'-o '> ($ Id.VSub_DollarName '$mkshexe'))}
                  spids: [14458]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$SRCS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$file')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:file)
                              op: assign_op.Equal
                              rhs: 
                                {($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$file')}
                              spids: [14485]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:objs)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ ($ Id.VSub_DollarName '$objs') <' '> ($ Id.VSub_DollarName '$file'))}
                          spids: [14491]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:emitbc)
                  op: assign_op.Equal
                  rhs: {(DQ <'-fwhole-program --combine'>)}
                  spids: [14502]
                )
              ]
            )
            (C {<v>} 
              {
                (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                  ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$LDFLAGS') <' '> ($ Id.VSub_DollarName '$emitbc') <' '> 
                  ($ Id.VSub_DollarName '$objs') <' '> ($ Id.VSub_DollarName '$LIBS') <' '> ($ Id.VSub_DollarName '$ccpr')
                )
              }
            )
          ]
          spids: [14444 14455]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$pm')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$SRCS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$file')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:file)
                              op: assign_op.Equal
                              rhs: 
                                {($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$file')}
                              spids: [14562]
                            )
                          ]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<v>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') 
                              <' '> ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$emitbc') <' '> 
                              ($ Id.VSub_DollarName '$file')
                            )
                          }
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                )
            )
            (C {<wait>})
          ]
          spids: [14528 14539]
        )
      ]
      else_action: [
        (command.ForEach
          iter_name: file
          iter_words: [{($ Id.VSub_DollarName '$SRCS')}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} {<dragonegg>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:op)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {<x> (DQ ($ Id.VSub_DollarName '$file'))})
                                      (C {<sed>} {(SQ <'s/^x\\(.*\\)\\.c$/\\1./'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [14617]
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<-f>} {($ Id.VSub_DollarName '$file')})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:file)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$file')}
                          spids: [14654]
                        )
                      ]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<v>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                          ($ Id.VSub_DollarName '$CPPFLAGS') <' '> ($ Id.VSub_DollarName '$emitbc') <' '> ($ Id.VSub_DollarName '$file')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} 
                                  {<dragonegg>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<v>} {(DQ <'mv '> (${ Id.VSub_Name op) <'s '> (${ Id.VSub_Name op) <ll>)})
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<v>} {(DQ <'llvm-as '> (${ Id.VSub_Name op) <ll>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                        )
                      ]
                      spids: [14681 14692]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{<dragonegg>} {<llvm>}]
          action: [
            (C {<rmf>} {($ Id.VSub_DollarName '$tfn') <.s>})
            (C {<v>} 
              {
                (DQ <'llvm-link -o - '> ($ Id.VSub_DollarName '$objs') <' | opt '> 
                  ($ Id.VSub_DollarName '$optflags') <' | llc -o '> ($ Id.VSub_DollarName '$tfn') <.s>
                )
              }
            )
          ]
          spids: [14740 14743 14765 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tcfn)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$mkshexe')}
          spids: [14769]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {($ Id.VSub_DollarName '$cm')} {<Id.Lit_Equals '='>} {<combine>})
        (C {<v>} 
          {
            (DQ ($ Id.VSub_DollarName '$CC') <' '> ($ Id.VSub_DollarName '$CFLAGS') <' '> 
              ($ Id.VSub_DollarName '$LDFLAGS') <' -o '> ($ Id.VSub_DollarName '$tcfn') <' '> ($ Id.VSub_DollarName '$lobjs') <' '> 
              ($ Id.VSub_DollarName '$LIBS') <' '> ($ Id.VSub_DollarName '$ccpr')
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$tcfn')})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe Id.Op_DPipe]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$r')})
        (C {<v>} 
          {
            (DQ ($ Id.VSub_DollarName '$NROFF') <' -mdoc <\''> ($ Id.VSub_DollarName '$srcdir') 
              <'/mksh.1\' >'> ($ Id.VSub_DollarName '$tfn') <.cat1>
            )
          }
        )
        (C {<rmf>} {($ Id.VSub_DollarName '$tfn') <.cat1>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<0>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$eq')})
        (C {<v>} {($ Id.VSub_DollarName '$SIZE')} {($ Id.VSub_DollarName '$tcfn')})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: {<install>}
          spids: [14858]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-f>} {<'/usr/ucb/'> ($ Id.VSub_DollarName '$i')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:i)
              op: assign_op.Equal
              rhs: {<'/usr/ucb/'> ($ Id.VSub_DollarName '$i')}
              spids: [14870]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<1>} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$eq')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:e)
              op: assign_op.Equal
              rhs: {<Id.Lit_Colon ':'>}
              spids: [14884]
            )
          ]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')})
    (C {($ Id.VSub_DollarName '$e')} {<Installing>} {<the>} {<shell> <Id.Lit_Colon ':'>})
    (C {($ Id.VSub_DollarName '$e')} 
      {
        (DQ <'# '> ($ Id.VSub_DollarName '$i') <' -c -s -o root -g bin -m 555 '> 
          ($ Id.VSub_DollarName '$tfn') <' /bin/'> ($ Id.VSub_DollarName '$tfn')
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {($ Id.VSub_DollarName '$legacy')} {<Id.Lit_Equals '='>} {<0>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {($ Id.VSub_DollarName '$e')} 
              {
                (DQ <'# grep -x /bin/'> ($ Id.VSub_DollarName '$tfn') 
                  <' /etc/shells >/dev/null || echo /bin/'> ($ Id.VSub_DollarName '$tfn') <' >>/etc/shells'>
                )
              }
            )
            (C {($ Id.VSub_DollarName '$e')} 
              {
                (DQ <'# '> ($ Id.VSub_DollarName '$i') 
                  <' -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/'>
                )
              }
            )
          ]
          spids: [14909 14920]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')})
    (C {($ Id.VSub_DollarName '$e')} {<Installing>} {<the>} {<manual> <Id.Lit_Colon ':'>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-f>} {($ Id.VSub_DollarName '$tfn') <.cat1>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {($ Id.VSub_DollarName '$e')} 
              {
                (DQ <'# '> ($ Id.VSub_DollarName '$i') <' -c -o root -g bin -m 444 '> 
                  ($ Id.VSub_DollarName '$tfn') <.cat1>
                )
              } {(DQ <'/usr/share/man/cat1/'> ($ Id.VSub_DollarName '$tfn') <.0>)}
            )
            (C {($ Id.VSub_DollarName '$e')} {<or>})
          ]
          spids: [14955 14965]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$e')} 
      {
        (DQ <'# '> ($ Id.VSub_DollarName '$i') <' -c -o root -g bin -m 444 '> 
          ($ Id.VSub_DollarName '$tfn') <'.1 /usr/share/man/man1/'> ($ Id.VSub_DollarName '$tfn') <.1>
        )
      }
    )
    (C {($ Id.VSub_DollarName '$e')})
    (C {($ Id.VSub_DollarName '$e')} {<Run>} {<the>} {<regression>} {<test>} {<suite> <Id.Lit_Colon ':'>} 
      {<'./test.sh'>}
    )
    (C {($ Id.VSub_DollarName '$e')} {<Please>} {<also>} {<read>} {<the>} {<sample>} {<file>} {<dot.mkshrc>} 
      {<and>} {<the>} {<fine>} {<manual.>}
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
    (command.Simple
      words: [{<Id.Lit_Colon ':'>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
  ]
)