(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:srcversion spids:[3])
          op: Equal
          rhs: {(SQ <'$MirOS: src/bin/mksh/Build.sh,v 1.697 2016/03/04 18:28:39 tg Exp $'>)}
          spids: [3]
        )
      ]
      spids: [3]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:LC_ALL spids:[81])
          op: Equal
          rhs: {(C)}
          spids: [81]
        )
      ]
      spids: [81]
    )
    (C {(export)} {(LC_ALL)})
    (command.Case
      to_match: {($ VSub_DollarName '$ZSH_VERSION') (Lit_Other ':') ($ VSub_DollarName '$VERSION')}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other ':') (zsh) (Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ZSH_VERSION spids:[102])
                  op: Equal
                  rhs: {(2)}
                  spids: [102]
                )
              ]
              spids: [102]
            )
          ]
          spids: [97 100 105 16777215]
        )
      ]
      spids: [89 95 107]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(test)} {(-n)} 
                      {
                        (DQ 
                          (word_part.BracedVarSub
                            token: <VSub_Name ZSH_VERSION>
                            suffix_op: (suffix_op.StringUnary op_id:VTest_Plus arg_word:{(x)})
                            spids: [117 121]
                          )
                        )
                      }
                    )
                    (command.Subshell
                      child: (C {(emulate)} {(sh)})
                      redirects: [
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(/dev/null)}
                        )
                        (redir.Redir
                          op: <Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {(1)}
                        )
                      ]
                      spids: [126 130]
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(emulate)} {(sh)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:NULLCMD spids:[147])
                  op: Equal
                  rhs: {(Lit_Other ':')}
                  spids: [147]
                )
              ]
              spids: [147]
            )
          ]
          spids: [16777215 139]
        )
      ]
      spids: [16777215 150]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.SimpleCommand
                  words: [{(test)} {(-d)} {(/usr/xpg4/bin/.)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PATH spids:[175])
                  op: Equal
                  rhs: {(/usr/xpg4/bin) (Lit_Other ':') ($ VSub_DollarName '$PATH')}
                  spids: [175]
                )
              ]
              spids: [175]
            )
            (C {(export)} {(PATH)})
          ]
          spids: [16777215 168]
        )
      ]
      spids: [16777215 185]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:nl spids:[188])
          op: Equal
          rhs: {(SQ <'\n'>)}
          spids: [188]
        )
      ]
      spids: [188]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:safeIFS spids:[193])
          op: Equal
          rhs: {(SQ <'\t'>)}
          spids: [193]
        )
      ]
      spids: [193]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:safeIFS spids:[198])
          op: Equal
          rhs: {(DQ (' ') ($ VSub_DollarName '$safeIFS') ($ VSub_DollarName '$nl'))}
          spids: [198]
        )
      ]
      spids: [198]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:IFS spids:[205])
          op: Equal
          rhs: {($ VSub_DollarName '$safeIFS')}
          spids: [205]
        )
      ]
      spids: [205]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:allu spids:[208])
          op: Equal
          rhs: {(QWERTYUIOPASDFGHJKLZXCVBNM)}
          spids: [208]
        )
      ]
      spids: [208]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:alll spids:[211])
          op: Equal
          rhs: {(qwertyuiopasdfghjklzxcvbnm)}
          spids: [211]
        )
      ]
      spids: [211]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:alln spids:[214])
          op: Equal
          rhs: {(0123456789)}
          spids: [214]
        )
      ]
      spids: [214]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:alls spids:[217])
          op: Equal
          rhs: {(______________________________________________________________)}
          spids: [217]
        )
      ]
      spids: [217]
    )
    (command.FuncDef
      name: genopt_die
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_Number '$1'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ('E: ') ($ VSub_Star '$*'))}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ("E: in '") ($ VSub_DollarName '$srcfile') ("': '") 
                            ($ VSub_DollarName '$line') ("'")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                  ]
                  spids: [16777215 239]
                )
              ]
              else_action: [
                (command.SimpleCommand
                  words: [
                    {(echo)}
                    {
                      (DQ ("E: invalid input in '") ($ VSub_DollarName '$srcfile') ("': '") 
                        ($ VSub_DollarName '$line') ("'")
                      )
                    }
                  ]
                  redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                )
              ]
              spids: [267 284]
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$bn') (.gen))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [225]
        )
      spids: [221 224]
    )
    (command.FuncDef
      name: genopt_soptc
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:optc spids:[311])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                  (C {(sed)} {(SQ <'s/^[<>]\\(.\\).*$/\\1/'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [312 326]
                      )
                    }
                  spids: [311]
                )
              ]
              spids: [311]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$optc'))} {(Lit_Other '=')} {(x) (SQ <'|'>)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:optclo spids:[348])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$optc'))})
                                  (C {(tr)} {($ VSub_DollarName '$allu')} {($ VSub_DollarName '$alll')})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [349 363]
                      )
                    }
                  spids: [348]
                )
              ]
              spids: [348]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_DollarName '$optc'))} {(Lit_Other '=')} 
                          {(x) (DQ ($ VSub_DollarName '$optclo'))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:islo spids:[386])
                          op: Equal
                          rhs: {(1)}
                          spids: [386]
                        )
                      ]
                      spids: [386]
                    )
                  ]
                  spids: [16777215 383]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:islo spids:[393])
                      op: Equal
                      rhs: {(0)}
                      spids: [393]
                    )
                  ]
                  spids: [393]
                )
              ]
              spids: [390 397]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sym spids:[400])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                  (C {(sed)} {(SQ <'s/^[<>]/|/'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [401 415]
                      )
                    }
                  spids: [400]
                )
              ]
              spids: [400]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:o_str spids:[418])
                  op: Equal
                  rhs: 
                    {($ VSub_DollarName '$o_str') ($ VSub_DollarName '$nl') 
                      (DQ ('<') ($ VSub_DollarName '$optclo') ($ VSub_DollarName '$islo') 
                        ($ VSub_DollarName '$sym')
                      )
                    }
                  spids: [418]
                )
              ]
              spids: [418]
            )
          ]
          spids: [308]
        )
      spids: [304 307]
    )
    (command.FuncDef
      name: genopt_scond
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(x) ($ VSub_DollarName '$cond')}
              arms: [
                (case_arm
                  pat_list: [{(x)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cond spids:[450])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [450]
                        )
                      ]
                      spids: [450]
                    )
                  ]
                  spids: [446 447 453 16777215]
                )
                (case_arm
                  pat_list: [{(x) (Lit_Other '*') (SQ <' '>) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cond spids:[465])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_DollarName '$cond'))})
                                          (C {(sed)} {(SQ <'s/^ //'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [466 480]
                              )
                            }
                          spids: [465]
                        )
                      ]
                      spids: [465]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cond spids:[483])
                          op: Equal
                          rhs: {(DQ ('#if ') ($ VSub_DollarName '$cond'))}
                          spids: [483]
                        )
                      ]
                      spids: [483]
                    )
                  ]
                  spids: [456 462 490 16777215]
                )
                (case_arm
                  pat_list: [{(x) (SQ <'!'>) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cond spids:[501])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_DollarName '$cond'))})
                                          (C {(sed)} {(SQ <'s/^!//'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [502 516]
                              )
                            }
                          spids: [501]
                        )
                      ]
                      spids: [501]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cond spids:[519])
                          op: Equal
                          rhs: {(DQ ('#ifndef ') ($ VSub_DollarName '$cond'))}
                          spids: [519]
                        )
                      ]
                      spids: [519]
                    )
                  ]
                  spids: [493 498 526 16777215]
                )
                (case_arm
                  pat_list: [{(x) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cond spids:[534])
                          op: Equal
                          rhs: {(DQ ('#ifdef ') ($ VSub_DollarName '$cond'))}
                          spids: [534]
                        )
                      ]
                      spids: [534]
                    )
                  ]
                  spids: [529 531 541 16777215]
                )
              ]
              spids: [438 443 544]
            )
          ]
          spids: [435]
        )
      spids: [431 434]
    )
    (command.FuncDef
      name: do_genopt
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:srcfile spids:[556])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [556]
                )
              ]
              spids: [556]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-f)} {(DQ ($ VSub_DollarName '$srcfile'))})
                (C {(genopt_die)} {(Source)} {(file)} 
                  {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (srcfile)} {(not)} {(set.)}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:bn spids:[584])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(basename)} {(DQ ($ VSub_DollarName '$srcfile'))})
                                  (C {(sed)} {(SQ <'s/.opt$//'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [585 599]
                      )
                    }
                  spids: [584]
                )
              ]
              spids: [584]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:o_hdr spids:[602])
                  op: Equal
                  rhs: {(SQ <'/* +++ GENERATED FILE +++ DO NOT EDIT +++ */'>)}
                  spids: [602]
                )
              ]
              spids: [602]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:o_gen spids:[608])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [608]
                )
              ]
              spids: [608]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:o_str spids:[611])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [611]
                )
              ]
              spids: [611]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:o_sym spids:[614])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [614]
                )
              ]
              spids: [614]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ddefs spids:[617])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [617]
                )
              ]
              spids: [617]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:state spids:[620])
                  op: Equal
                  rhs: {(0)}
                  spids: [620]
                )
              ]
              spids: [620]
            )
            (command.SimpleCommand
              words: [{(exec)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$srcfile'))}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:IFS spids:[632])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [632]
                )
              ]
              spids: [632]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [{(read)} {(line)}]
                      more_env: [(env_pair name:IFS val:(word.EmptyWord) spids:[637])]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:IFS spids:[647])
                          op: Equal
                          rhs: {($ VSub_DollarName '$safeIFS')}
                          spids: [647]
                        )
                      ]
                      spids: [647]
                    )
                    (command.Case
                      to_match: 
                        {($ VSub_DollarName '$state') (Lit_Other ':') ($ VSub_DollarName '$line')}
                      arms: [
                        (case_arm
                          pat_list: [{(2) (Lit_Other ':') (SQ <'|'>) (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_sym spids:[673])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                                  (C {(sed)} {(SQ <'s/^.//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [674 688]
                                      )
                                    }
                                  spids: [673]
                                )
                              ]
                              spids: [673]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[691])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#undef F0'))
                                    }
                                  spids: [691]
                                )
                              ]
                              spids: [691]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[699])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#undef FN'))
                                    }
                                  spids: [699]
                                )
                              ]
                              spids: [699]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[707])
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$ddefs')}
                                  spids: [707]
                                )
                              ]
                              spids: [707]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:state spids:[712])
                                  op: Equal
                                  rhs: {(3)}
                                  spids: [712]
                                )
                              ]
                              spids: [712]
                            )
                          ]
                          spids: [660 666 716 16777215]
                        )
                        (case_arm
                          pat_list: [{(1) (Lit_Other ':') (Lit_Other '@') (Lit_Other '@')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[730])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#endif'))
                                    }
                                  spids: [730]
                                )
                              ]
                              spids: [730]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[738])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#ifndef F0'))
                                    }
                                  spids: [738]
                                )
                              ]
                              spids: [738]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[746])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#define F0 FN'))
                                    }
                                  spids: [746]
                                )
                              ]
                              spids: [746]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[754])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ('#endif'))
                                    }
                                  spids: [754]
                                )
                              ]
                              spids: [754]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:state spids:[762])
                                  op: Equal
                                  rhs: {(2)}
                                  spids: [762]
                                )
                              ]
                              spids: [762]
                            )
                          ]
                          spids: [719 723 766 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '*') (Lit_Other ':') (Lit_Other '@') (Lit_Other '@') 
                              (Lit_Other '*')
                            }
                          ]
                          action: [(C {(genopt_die)})]
                          spids: [769 774 779 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(0) (Lit_Other ':') (/) 
                              (word_part.EscapedLiteralPart
                                token: <Lit_EscapedChar '\\*'>
                              ) (-)
                            }
                            {(0) (Lit_Other ':') 
                              (word_part.EscapedLiteralPart
                                token: <Lit_EscapedChar '\\ '>
                              ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\*'>) (Lit_Other '*')
                            }
                            {(0) (Lit_Other ':')}
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_hdr spids:[799])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_hdr') ($ VSub_DollarName '$nl') 
                                      ($ VSub_DollarName '$line')
                                    }
                                  spids: [799]
                                )
                              ]
                              spids: [799]
                            )
                          ]
                          spids: [782 796 805 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(0) (Lit_Other ':') (Lit_Other '@') (Lit_Other '*')}
                            {(1) (Lit_Other ':') (Lit_Other '@') (Lit_Other '*')}
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:sym spids:[824])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                                  (C {(sed)} {(SQ <'s/^@//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [825 839]
                                      )
                                    }
                                  spids: [824]
                                )
                              ]
                              spids: [824]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {($ VSub_DollarName '$state')} {(Lit_Other '=')} 
                                          {(0)}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:o_gen spids:[856])
                                          op: Equal
                                          rhs: 
                                            {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                              (DQ ('#if defined(') ($ VSub_DollarName '$sym') (')'))
                                            }
                                          spids: [856]
                                        )
                                      ]
                                      spids: [856]
                                    )
                                  ]
                                  spids: [16777215 853]
                                )
                              ]
                              else_action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:o_gen spids:[869])
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                          (DQ ('#elif defined(') ($ VSub_DollarName '$sym') (')'))
                                        }
                                      spids: [869]
                                    )
                                  ]
                                  spids: [869]
                                )
                              ]
                              spids: [866 879]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ddefs spids:[882])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$ddefs') ($ VSub_DollarName '$nl') 
                                        ('#undef ') ($ VSub_DollarName '$sym')
                                      )
                                    }
                                  spids: [882]
                                )
                              ]
                              spids: [882]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:state spids:[891])
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [891]
                                )
                              ]
                              spids: [891]
                            )
                          ]
                          spids: [808 817 895 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(0) (Lit_Other ':') (Lit_Other '*')}
                            {(3) (Lit_Other ':') (Lit_Other '*')}
                          ]
                          action: [(C {(genopt_die)})]
                          spids: [898 905 910 16777215]
                        )
                        (case_arm
                          pat_list: [{(1) (Lit_Other ':') (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[923])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      ($ VSub_DollarName '$line')
                                    }
                                  spids: [923]
                                )
                              ]
                              spids: [923]
                            )
                          ]
                          spids: [913 916 929 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(2) (Lit_Other ':') (SQ <'<'>) (Lit_Other '*') (SQ <'|'>) (Lit_Other '*')}
                          ]
                          action: [(C {(genopt_soptc)})]
                          spids: [932 942 948 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(2) (Lit_Other ':') (SQ <'>'>) (Lit_Other '*') (SQ <'|'>) (Lit_Other '*')}
                          ]
                          action: [
                            (C {(genopt_soptc)})
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:cond spids:[967])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})
                                                  (C {(sed)} {(SQ <'s/^[^|]*|//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [968 982]
                                      )
                                    }
                                  spids: [967]
                                )
                              ]
                              spids: [967]
                            )
                            (C {(genopt_scond)})
                            (command.Case
                              to_match: {($ VSub_DollarName '$optc')}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ <'|'>)}]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:optc spids:[1000])
                                          op: Equal
                                          rhs: {(0)}
                                          spids: [1000]
                                        )
                                      ]
                                      spids: [1000]
                                    )
                                  ]
                                  spids: [995 998 1003 16777215]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:optc spids:[1009])
                                          op: Equal
                                          rhs: 
                                            {
                                              (word_part.EscapedLiteralPart
                                                token: <Lit_EscapedChar "\\'">
                                              ) ($ VSub_DollarName '$optc') (word_part.EscapedLiteralPart token:<Lit_EscapedChar "\\'">)
                                            }
                                          spids: [1009]
                                        )
                                      ]
                                      spids: [1009]
                                    )
                                  ]
                                  spids: [1006 1007 1014 16777215]
                                )
                              ]
                              spids: [988 992 1017]
                            )
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (command.SimpleCommand
                                  words: [{(read)} {(line)}]
                                  more_env: [(env_pair name:IFS val:(word.EmptyWord) spids:[1020])]
                                )
                                (C {(genopt_die)} {(Unexpected)} {(EOF)})
                              ]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:IFS spids:[1035])
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$safeIFS')}
                                  spids: [1035]
                                )
                              ]
                              spids: [1035]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:o_gen spids:[1049])
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                          (DQ ($ VSub_DollarName '$cond'))
                                        }
                                      spids: [1049]
                                    )
                                  ]
                                  spids: [1049]
                                )
                              ]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:o_gen spids:[1057])
                                  op: Equal
                                  rhs: 
                                    {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                      (DQ ($ VSub_DollarName '$line') (', ') 
                                        ($ VSub_DollarName '$optc') (')')
                                      )
                                    }
                                  spids: [1057]
                                )
                              ]
                              spids: [1057]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:o_gen spids:[1078])
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$o_gen') ($ VSub_DollarName '$nl') 
                                          (DQ ('#endif'))
                                        }
                                      spids: [1078]
                                    )
                                  ]
                                  spids: [1078]
                                )
                              ]
                            )
                          ]
                          spids: [951 961 1086 16777215]
                        )
                      ]
                      spids: [651 657 1089]
                    )
                  ]
                  spids: [644 1092]
                )
            )
            (command.Case
              to_match: {($ VSub_DollarName '$state') (Lit_Other ':') ($ VSub_DollarName '$o_sym')}
              arms: [
                (case_arm
                  pat_list: [{(3) (Lit_Other ':')}]
                  action: [(C {(genopt_die)} {(Expected)} {(optc)} {(sym)} {(at)} {(EOF)})]
                  spids: [1104 1106 1120 16777215]
                )
                (case_arm
                  pat_list: [{(3) (Lit_Other ':') (Lit_Other '*')}]
                  spids: [1123 1126 1128 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(genopt_die)} {(Missing)} {(EOF)} {(marker)})]
                  spids: [1131 1132 1142 16777215]
                )
              ]
              spids: [1095 1101 1145]
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ($ VSub_DollarName '$o_str'))})
                (C {(sort)})
                (command.WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (command.Sentence
                      child: 
                        (command.SimpleCommand
                          words: [{(read)} {(x)} {(opts)} {(cond)}]
                          more_env: [(env_pair name:IFS val:{(SQ <'|'>)} spids:[1162])]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:IFS spids:[1179])
                              op: Equal
                              rhs: {($ VSub_DollarName '$safeIFS')}
                              spids: [1179]
                            )
                          ]
                          spids: [1179]
                        )
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$x'))})
                            (command.ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (C {(genopt_scond)})
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                            (C {(echo)} {(DQ ($ VSub_DollarName '$cond'))})
                          ]
                        )
                        (C {(echo)} 
                          {
                            (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                              ($ VSub_DollarName '$opts') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$cond'))})
                            (C {(echo)} {(DQ ('#endif'))})
                          ]
                        )
                      ]
                      spids: [1176 1242]
                    )
                )
                (command.BraceGroup
                  children: [
                    (C {(echo)} {(DQ ($ VSub_DollarName '$o_hdr'))})
                    (C {(echo)} 
                      {(DQ ('#ifndef ') ($ VSub_DollarName '$o_sym') ($ VSub_DollarName '$o_gen'))}
                    )
                    (C {(echo)} {(DQ ('#else'))})
                    (C {(cat)})
                    (C {(echo)} {(DQ ('#undef ') ($ VSub_DollarName '$o_sym'))})
                    (C {(echo)} {(DQ ('#endif'))})
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$bn') (.gen))}
                    )
                  ]
                  spids: [1246]
                )
              ]
              negated: F
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:IFS spids:[1299])
                  op: Equal
                  rhs: {($ VSub_DollarName '$safeIFS')}
                  spids: [1299]
                )
              ]
              spids: [1299]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [553]
        )
      spids: [549 552]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$BUILDSH_RUN_GENOPT'))} {(Lit_Other '=')} 
                  {(x) (DQ (1))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(set)} {(x)} {(-G)} {(DQ ($ VSub_DollarName '$srcfile'))}) (C {(shift)})]
          spids: [16777215 1327]
        )
      ]
      spids: [16777215 1343]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ (-G))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(do_genopt)} {(DQ ($ VSub_Number '$2'))})
            (command.ControlFlow
              token: <ControlFlow_Exit exit>
              arg_word: {($ VSub_QMark '$?')}
            )
          ]
          spids: [16777215 1362]
        )
      ]
      spids: [16777215 1376]
    )
    (C {(echo)} {(DQ ('For the build logs, demonstrate that /dev/null and /dev/tty exist:'))})
    (C {(ls)} {(-l)} {(/dev/null)} {(/dev/tty)})
    (command.FuncDef
      name: v
      body: 
        (command.BraceGroup
          children: [
            (C {($ VSub_DollarName '$e')} {(DQ ($ VSub_Star '$*'))})
            (C {(eval)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1398]
        )
      spids: [1394 1397]
    )
    (command.FuncDef
      name: vv
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:_c spids:[1424])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1424]
                )
              ]
              spids: [1424]
            )
            (C {(shift)})
            (command.SimpleCommand
              words: [
                {($ VSub_DollarName '$e')}
                {
                  (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (' ') 
                    ($ VSub_Star '$*')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})]
            )
            (command.SimpleCommand
              words: [{(eval)} {(DQ ($ VSub_At '$@'))}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(vv.out)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
            (command.SimpleCommand
              words: [{(sed)} {(DQ ('s\x07^\x07') (${ VSub_Name _c) (' \x07'))}]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(vv.out)})]
            )
          ]
          spids: [1421]
        )
      spids: [1417 1420]
    )
    (command.FuncDef
      name: vq
      body: (command.BraceGroup children:[(C {(eval)} {(DQ ($ VSub_At '$@'))})] spids:[1476])
      spids: [1472 1475]
    )
    (command.FuncDef
      name: rmf
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: _f
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ VSub_DollarName '$_f')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Build.sh)}
                            {(check.pl)}
                            {(check.t)}
                            {(dot.mkshrc)}
                            {(Lit_Other '*') (.1)}
                            {(Lit_Other '*') (.c)}
                            {(Lit_Other '*') (.h)}
                            {(Lit_Other '*') (.ico)}
                            {(Lit_Other '*') (.opt)}
                          ]
                          spids: [1516 1538 1540 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$_f'))})]
                          spids: [1543 1544 1554 16777215]
                        )
                      ]
                      spids: [1509 1513 1557]
                    )
                  ]
                  spids: [1506 1560]
                )
              spids: [1500 1504]
            )
          ]
          spids: [1492]
        )
      spids: [1488 1491]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:tcfn spids:[1565])
          op: Equal
          rhs: {(no)}
          spids: [1565]
        )
      ]
      spids: [1565]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:bi spids:[1568])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [1568]
        )
      ]
      spids: [1568]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ui spids:[1570])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [1570]
        )
      ]
      spids: [1570]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ao spids:[1572])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [1572]
        )
      ]
      spids: [1572]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:fx spids:[1574])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [1574]
        )
      ]
      spids: [1574]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:me spids:[1576])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(basename)} {(DQ ($ VSub_Number '$0'))})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [1577 1583]
              )
            }
          spids: [1576]
        )
      ]
      spids: [1576]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:orig_CFLAGS spids:[1585])
          op: Equal
          rhs: {($ VSub_DollarName '$CFLAGS')}
          spids: [1585]
        )
      ]
      spids: [1585]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:phase spids:[1588])
          op: Equal
          rhs: {(x)}
          spids: [1588]
        )
      ]
      spids: [1588]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:oldish_ed spids:[1591])
          op: Equal
          rhs: {(stdout-ed) (Lit_Comma ',') (no-stderr-ed)}
          spids: [1591]
        )
      ]
      spids: [1591]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(command.Sentence child:(C {(test)} {(-t)} {(1)}) terminator:<Op_Semi ';'>)]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:bi spids:[1609])
                  op: Equal
                  rhs: {(SQ <'\x1b[1m'>)}
                  spids: [1609]
                )
              ]
              spids: [1609]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ui spids:[1615])
                  op: Equal
                  rhs: {(SQ <'\x1b[4m'>)}
                  spids: [1615]
                )
              ]
              spids: [1615]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ao spids:[1621])
                  op: Equal
                  rhs: {(SQ <'\x1b[0m'>)}
                  spids: [1621]
                )
              ]
              spids: [1621]
            )
          ]
          spids: [16777215 1606]
        )
      ]
      spids: [16777215 1626]
    )
    (command.FuncDef
      name: upper
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(echo)} {(Lit_Other ':') (DQ ($ VSub_At '$@'))})
                (C {(sed)} {(SQ <'s/^://'>)})
                (C {(tr)} {($ VSub_DollarName '$alll')} {($ VSub_DollarName '$allu')})
              ]
              negated: F
            )
          ]
          spids: [1633]
        )
      spids: [1629 1632]
    )
    (command.FuncDef
      name: ac_testdone
      body: 
        (command.BraceGroup
          children: [
            (C {(eval)} {(HAVE_) ($ VSub_DollarName '$fu') (Lit_Other '=') ($ VSub_DollarName '$fv')})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fr spids:[1680])
                  op: Equal
                  rhs: {(no)}
                  spids: [1680]
                )
              ]
              spids: [1680]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$fv')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:fr spids:[1694])
                      op: Equal
                      rhs: {(yes)}
                      spids: [1694]
                    )
                  ]
                  spids: [1694]
                )
              ]
            )
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ($ VSub_DollarName '$bi') ('==> ') ($ VSub_DollarName '$fd') (...) 
                  ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$ui') ($ VSub_DollarName '$fr') ($ VSub_DollarName '$ao') 
                  ($ VSub_DollarName '$fx')
                )
              }
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fx spids:[1714])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [1714]
                )
              ]
              spids: [1714]
            )
          ]
          spids: [1669]
        )
      spids: [1665 1668]
    )
    (command.FuncDef
      name: ac_cache
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:f spids:[1729])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1729]
                )
              ]
              spids: [1729]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fu spids:[1733])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(upper)} {($ VSub_DollarName '$f')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [1734 1738]
                      )
                    }
                  spids: [1733]
                )
              ]
              spids: [1733]
            )
            (C {(eval)} 
              {(Lit_VarLike 'fv=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                (HAVE_) ($ VSub_DollarName '$fu')
              }
            )
            (command.Case
              to_match: {($ VSub_DollarName '$fv')}
              arms: [
                (case_arm
                  pat_list: [{(0)} {(1)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fx spids:[1762])
                          op: Equal
                          rhs: {(SQ <' (cached)'>)}
                          spids: [1762]
                        )
                      ]
                      spids: [1762]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [1756 1759 1773 16777215]
                )
              ]
              spids: [1749 1753 1776]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fv spids:[1779])
                  op: Equal
                  rhs: {(0)}
                  spids: [1779]
                )
              ]
              spids: [1779]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [1726]
        )
      spids: [1722 1725]
    )
    (command.FuncDef
      name: ac_testinit
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(ac_cache)} {($ VSub_Number '$1')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x) (DQ ('!'))})
                        (C {(shift)})
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x) (DQ )})
                        (C {(shift)})
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fd spids:[1850])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Number 3>
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VTest_Hyphen
                                    arg_word: {($ VSub_DollarName '$f')}
                                  )
                                spids: [1851 1855]
                              )
                            }
                          spids: [1850]
                        )
                      ]
                      spids: [1850]
                    )
                    (C {(ac_testdone)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 1810]
                )
              ]
              spids: [16777215 1866]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fc spids:[1869])
                  op: Equal
                  rhs: {(0)}
                  spids: [1869]
                )
              ]
              spids: [1869]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x) (DQ )})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ft spids:[1892])
                          op: Equal
                          rhs: {(1)}
                          spids: [1892]
                        )
                      ]
                      spids: [1892]
                    )
                  ]
                  spids: [16777215 1889]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x) (DQ ('!'))})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:fc spids:[1919])
                              op: Equal
                              rhs: {(1)}
                              spids: [1919]
                            )
                          ]
                          spids: [1919]
                        )
                        (C {(shift)})
                      ]
                      spids: [16777215 1916]
                    )
                  ]
                  spids: [16777215 1926]
                )
                (C {(eval)} 
                  {(Lit_VarLike 'ft=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                    (HAVE_) 
                    (word_part.CommandSubPart
                      command_list: 
                        (command.CommandList
                          children: [(C {(upper)} {($ VSub_Number '$2')})]
                        )
                      left_token: <Left_Backtick '`'>
                      spids: [1934 1938]
                    )
                  }
                )
                (C {(shift)})
              ]
              spids: [1896 1944]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fd spids:[1947])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_Hyphen
                            arg_word: {($ VSub_DollarName '$f')}
                          )
                        spids: [1948 1952]
                      )
                    }
                  spids: [1947]
                )
              ]
              spids: [1947]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {($ VSub_DollarName '$fc')} {(Lit_Other '=')} 
                          {(DQ ($ VSub_DollarName '$ft'))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[1971])
                          op: Equal
                          rhs: {($ VSub_Number '$2')}
                          spids: [1971]
                        )
                      ]
                      spids: [1971]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fx spids:[1975])
                          op: Equal
                          rhs: {(SQ <' (implied)'>)}
                          spids: [1975]
                        )
                      ]
                      spids: [1975]
                    )
                    (C {(ac_testdone)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 1968]
                )
              ]
              spids: [16777215 1989]
            )
            (C {($ VSub_DollarName '$e')} {(...)} {($ VSub_DollarName '$fd')})
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [1800]
        )
      spids: [1796 1799]
    )
    (command.FuncDef
      name: ac_testnnd
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ ('!'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fr spids:[2036])
                          op: Equal
                          rhs: {(1)}
                          spids: [2036]
                        )
                      ]
                      spids: [2036]
                    )
                    (C {(shift)})
                  ]
                  spids: [16777215 2033]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:fr spids:[2046])
                      op: Equal
                      rhs: {(0)}
                      spids: [2046]
                    )
                  ]
                  spids: [2046]
                )
              ]
              spids: [2043 2050]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(ac_testinit)} {(DQ ($ VSub_At '$@'))})
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})]
            )
            (C {(vv)} {(SQ <']'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c ') 
                  ($ VSub_DollarName '$LIBS') (' ') ($ VSub_DollarName '$ccpr')
                )
              }
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Other '=')} {(no)})
                (C {(test)} {(-f)} {(a.out)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:tcfn spids:[2113])
                      op: Equal
                      rhs: {(a.out)}
                      spids: [2113]
                    )
                  ]
                  spids: [2113]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Other '=')} {(no)})
                (C {(test)} {(-f)} {(a.exe)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:tcfn spids:[2135])
                      op: Equal
                      rhs: {(a.exe)}
                      spids: [2135]
                    )
                  ]
                  spids: [2135]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Other '=')} {(no)})
                (C {(test)} {(-f)} {(conftest.exe)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:tcfn spids:[2157])
                      op: Equal
                      rhs: {(conftest.exe)}
                      spids: [2157]
                    )
                  ]
                  spids: [2157]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$tcfn')} {(Lit_Other '=')} {(no)})
                (C {(test)} {(-f)} {(conftest)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:tcfn spids:[2179])
                      op: Equal
                      rhs: {(conftest)}
                      spids: [2179]
                    )
                  ]
                  spids: [2179]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-f)} {($ VSub_DollarName '$tcfn')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$fr')})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:fv spids:[2205])
                              op: Equal
                              rhs: {(1)}
                              spids: [2205]
                            )
                          ]
                          spids: [2205]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 2192]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$fr')})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[2222])
                          op: Equal
                          rhs: {(1)}
                          spids: [2222]
                        )
                      ]
                      spids: [2222]
                    )
                  ]
                )
              ]
              spids: [2209 2226]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:vscan spids:[2229])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [2229]
                )
              ]
              spids: [2229]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {($ VSub_DollarName '$phase')} {(Lit_Other '=')} {(u)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(gcc)})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:vscan spids:[2256])
                              op: Equal
                              rhs: {(SQ <'unrecogni[sz]ed'>)}
                              spids: [2256]
                            )
                          ]
                          spids: [2256]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(hpcc)})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:vscan spids:[2272])
                              op: Equal
                              rhs: {(SQ <unsupported>)}
                              spids: [2272]
                            )
                          ]
                          spids: [2272]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(pcc)})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:vscan spids:[2288])
                              op: Equal
                              rhs: {(SQ <unsupported>)}
                              spids: [2288]
                            )
                          ]
                          spids: [2288]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(sunpro)})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:vscan spids:[2304])
                              op: Equal
                              rhs: {(SQ <'-e ignored -e turned.off'>)}
                              spids: [2304]
                            )
                          ]
                          spids: [2304]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 2243]
                )
              ]
              spids: [16777215 2310]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$vscan'))})
                (command.SimpleCommand
                  words: [{(grep)} {($ VSub_DollarName '$vscan')} {(vv.out)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:fv spids:[2337])
                      op: Equal
                      rhs: {($ VSub_DollarName '$fr')}
                      spids: [2337]
                    )
                  ]
                  spids: [2337]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2013]
        )
      spids: [2009 2012]
    )
    (command.FuncDef
      name: ac_testn
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(ac_testnnd)} {(DQ ($ VSub_At '$@'))})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(rmf)} {(conftest.c)} {(conftest.o)} {(${ VSub_Name tcfn) (Lit_Other '*')} {(vv.out)})
            (C {(ac_testdone)})
          ]
          spids: [2351]
        )
      spids: [2347 2350]
    )
    (command.FuncDef
      name: ac_ifcpp
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:expr spids:[2394])
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [2394]
                    )
                  ]
                  spids: [2394]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.SimpleCommand
              words: [{(ac_testn)} {(DQ ($ VSub_At '$@'))}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 2423
                  stdin_parts: [
                    ('#include <unistd.h>\n')
                    ('extern int thiswillneverbedefinedIhope(void);\n')
                    ('int main(void) { return (isatty(0) +\n')
                    ('#')
                    ($ VSub_DollarName '$expr')
                    ('\n')
                    ('    0\n')
                    ('#else\n')
                    ('/* force a failure: expr is false */\n')
                    ('    thiswillneverbedefinedIhope()\n')
                    ('#endif\n')
                    ('    ); }\n')
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ ('!'))})
                (C {(shift)})
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:f spids:[2444])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2444]
                )
              ]
              spids: [2444]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fu spids:[2448])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(upper)} {($ VSub_DollarName '$f')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [2449 2453]
                      )
                    }
                  spids: [2448]
                )
              ]
              spids: [2448]
            )
            (C {(eval)} 
              {(Lit_VarLike 'fv=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                (HAVE_) ($ VSub_DollarName '$fu')
              }
            )
            (C {(test)} {(x) (DQ ($ VSub_DollarName '$fv'))} {(Lit_Other '=')} {(x) (DQ (1))})
          ]
          spids: [2391]
        )
      spids: [2387 2390]
    )
    (command.FuncDef
      name: add_cppflags
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[2488])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_Star '$*'))}
                  spids: [2488]
                )
              ]
              spids: [2488]
            )
          ]
          spids: [2485]
        )
      spids: [2481 2484]
    )
    (command.FuncDef
      name: ac_cppflags
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:fu spids:[2520])
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [2520]
                    )
                  ]
                  spids: [2520]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fv spids:[2524])
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2524]
                )
              ]
              spids: [2524]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x) (DQ )})
                (C {(eval)} 
                  {(Lit_VarLike 'fv=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                    (HAVE_) ($ VSub_DollarName '$fu')
                  }
                )
              ]
            )
            (C {(add_cppflags)} 
              {(-DHAVE_) ($ VSub_DollarName '$fu') (Lit_Other '=') ($ VSub_DollarName '$fv')}
            )
          ]
          spids: [2502]
        )
      spids: [2498 2501]
    )
    (command.FuncDef
      name: ac_test
      body: 
        (command.BraceGroup
          children: [(C {(ac_testn)} {(DQ ($ VSub_At '$@'))}) (C {(ac_cppflags)})]
          spids: [2565]
        )
      spids: [2561 2564]
    )
    (command.FuncDef
      name: ac_flags
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ (-))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(shift)})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:hf spids:[2613])
                          op: Equal
                          rhs: {(1)}
                          spids: [2613]
                        )
                      ]
                      spids: [2613]
                    )
                  ]
                  spids: [16777215 2607]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:hf spids:[2620])
                      op: Equal
                      rhs: {(0)}
                      spids: [2620]
                    )
                  ]
                  spids: [2620]
                )
              ]
              spids: [2617 2624]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fa spids:[2627])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2627]
                )
              ]
              spids: [2627]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:vn spids:[2631])
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2631]
                )
              ]
              spids: [2631]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:f spids:[2635])
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [2635]
                )
              ]
              spids: [2635]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ft spids:[2639])
                  op: Equal
                  rhs: {($ VSub_Number '$4')}
                  spids: [2639]
                )
              ]
              spids: [2639]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fl spids:[2643])
                  op: Equal
                  rhs: {($ VSub_Number '$5')}
                  spids: [2643]
                )
              ]
              spids: [2643]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$ft'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:ft spids:[2662])
                      op: Equal
                      rhs: {(DQ ('if ') ($ VSub_DollarName '$f') (' can be used'))}
                      spids: [2662]
                    )
                  ]
                  spids: [2662]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_CFLAGS spids:[2670])
                  op: Equal
                  rhs: {($ VSub_DollarName '$CFLAGS')}
                  spids: [2670]
                )
              ]
              spids: [2670]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CFLAGS spids:[2674])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$f'))}
                  spids: [2674]
                )
              ]
              spids: [2674]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$fl'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:save_LDFLAGS spids:[2696])
                          op: Equal
                          rhs: {($ VSub_DollarName '$LDFLAGS')}
                          spids: [2696]
                        )
                      ]
                      spids: [2696]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:LDFLAGS spids:[2700])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$fl'))}
                          spids: [2700]
                        )
                      ]
                      spids: [2700]
                    )
                  ]
                  spids: [16777215 2693]
                )
              ]
              spids: [16777215 2708]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$hf')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(ac_testn)} {(can_) ($ VSub_DollarName '$vn')} {(SQ )} 
                      {(DQ ($ VSub_DollarName '$ft'))}
                    )
                  ]
                  spids: [16777215 2722]
                )
              ]
              else_action: [
                (command.SimpleCommand
                  words: [
                    {(ac_testn)}
                    {(can_) ($ VSub_DollarName '$vn')}
                    {(SQ )}
                    {(DQ ($ VSub_DollarName '$ft'))}
                  ]
                  redirects: [
                    (redir.HereDoc
                      op: <Redir_DLessDash '<<-'>
                      fd: 16777215
                      here_begin: {(SQ <EOF>)}
                      here_end_span_id: 2761
                      stdin_parts: [
                        ("/* evil apo'stroph in comment test */\n")
                        ('#include <unistd.h>\n')
                        ('int main(void) { return (isatty(0)); }\n')
                      ]
                    )
                  ]
                )
              ]
              spids: [2738 2763]
            )
            (C {(eval)} 
              {(Lit_VarLike 'fv=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                (HAVE_CAN_) 
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [(C {(upper)} {($ VSub_DollarName '$vn')})]
                    )
                  left_token: <Left_Backtick '`'>
                  spids: [2771 2775]
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$fl'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(11)} {(Lit_Other '=')} 
                          {($ VSub_DollarName '$fa') ($ VSub_DollarName '$fv')}
                        )
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:LDFLAGS spids:[2803])
                              op: Equal
                              rhs: {($ VSub_DollarName '$save_LDFLAGS')}
                              spids: [2803]
                            )
                          ]
                          spids: [2803]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 2789]
                )
              ]
              spids: [16777215 2807]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(11)} {(Lit_Other '=')} 
                  {($ VSub_DollarName '$fa') ($ VSub_DollarName '$fv')}
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:CFLAGS spids:[2821])
                      op: Equal
                      rhs: {($ VSub_DollarName '$save_CFLAGS')}
                      spids: [2821]
                    )
                  ]
                  spids: [2821]
                )
              ]
            )
          ]
          spids: [2587]
        )
      spids: [2583 2586]
    )
    (command.FuncDef
      name: ac_header
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ ('!'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:na spids:[2857])
                          op: Equal
                          rhs: {(1)}
                          spids: [2857]
                        )
                      ]
                      spids: [2857]
                    )
                    (C {(shift)})
                  ]
                  spids: [16777215 2854]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:na spids:[2867])
                      op: Equal
                      rhs: {(0)}
                      spids: [2867]
                    )
                  ]
                  spids: [2867]
                )
              ]
              spids: [2864 2871]
            )
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:hf spids:[2874])
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [2874]
                    )
                  ]
                  spids: [2874]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:hv spids:[2881])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_DollarName '$hf'))})
                                  (C {(tr)} {(-d)} {(SQ <'\\012\\015'>)})
                                  (C {(tr)} {(-c)} 
                                    {($ VSub_DollarName '$alll') ($ VSub_DollarName '$allu') 
                                      ($ VSub_DollarName '$alln')
                                    } {($ VSub_DollarName '$alls')}
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [2882 2910]
                      )
                    }
                  spids: [2881]
                )
              ]
              spids: [2881]
            )
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('/* NeXTstep bug workaround */'))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})]
            )
            (command.ForEach
              iter_name: i
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ VSub_DollarName '$i')}
                      arms: [
                        (case_arm
                          pat_list: [{(_time)}]
                          action: [
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#if HAVE_BOTH_TIME_H'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#include <sys/time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#include <time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#elif HAVE_SYS_TIME_H'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#include <sys/time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#elif HAVE_TIME_H'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#include <time.h>'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                            (command.SimpleCommand
                              words: [{(echo)} {(SQ <'#endif'>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                          ]
                          spids: [2938 2939 3022 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (command.SimpleCommand
                              words: [{(echo)} {(DQ ('#include <') ($ VSub_DollarName '$i') ('>'))}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(x)}
                                )
                              ]
                            )
                          ]
                          spids: [3025 3026 3041 16777215]
                        )
                      ]
                      spids: [2931 2935 3044]
                    )
                  ]
                  spids: [2928 3047]
                )
              spids: [16777215 16777215]
            )
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('#include <') ($ VSub_DollarName '$hf') ('>'))}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
            )
            (command.SimpleCommand
              words: [{(echo)} {(SQ <'#include <unistd.h>'>)}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
            )
            (command.SimpleCommand
              words: [{(echo)} {(SQ <'int main(void) { return (isatty(0)); }'>)}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
            )
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(DQ ($ VSub_DollarName '$hv'))}
                {(DQ )}
                {(DQ ('<') ($ VSub_DollarName '$hf') ('>'))}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (C {(rmf)} {(x)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$na')})
                (C {(ac_cppflags)})
              ]
            )
          ]
          spids: [2834]
        )
      spids: [2830 2833]
    )
    (command.FuncDef
      name: addsrcs
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(x) (DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x) (DQ ('!'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fr spids:[3148])
                          op: Equal
                          rhs: {(0)}
                          spids: [3148]
                        )
                      ]
                      spids: [3148]
                    )
                    (C {(shift)})
                  ]
                  spids: [16777215 3145]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:fr spids:[3158])
                      op: Equal
                      rhs: {(1)}
                      spids: [3158]
                    )
                  ]
                  spids: [3158]
                )
              ]
              spids: [3155 3162]
            )
            (C {(eval)} 
              {(Lit_VarLike 'i=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                ($ VSub_Number '$1')
              }
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$fr')} {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$i'))})
                (command.Case
                  to_match: {(DQ (' ') ($ VSub_DollarName '$SRCS') (' '))}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Other '*') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) 
                          ($ VSub_Number '$2') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (Lit_Other '*')
                        }
                      ]
                      spids: [3195 3200 3202 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:SRCS spids:[3208])
                              op: Equal
                              rhs: {(DQ ($ VSub_DollarName '$SRCS') (' ') ($ VSub_Number '$2'))}
                              spids: [3208]
                            )
                          ]
                          spids: [3208]
                        )
                      ]
                      spids: [3205 3206 3215 16777215]
                    )
                  ]
                  spids: [3184 3192 3218]
                )
              ]
            )
          ]
          spids: [3125]
        )
      spids: [3121 3124]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:curdir spids:[3224])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: (command.CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick '`'>
                spids: [3225 3227]
              )
            }
          spids: [3224]
        )
        (assign_pair
          lhs: (lhs_expr.LhsName name:srcdir spids:[3229])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (command.SimpleCommand
                        words: [{(dirname)} {(DQ ($ VSub_Number '$0'))}]
                        redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [3230 3239]
              )
            }
          spids: [3229]
        )
      ]
      spids: [3224]
    )
    (command.Case
      to_match: {(x) ($ VSub_DollarName '$srcdir')}
      arms: [
        (case_arm
          pat_list: [{(x)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:srcdir spids:[3252])
                  op: Equal
                  rhs: {(.)}
                  spids: [3252]
                )
              ]
              spids: [3252]
            )
          ]
          spids: [3248 3249 3256 16777215]
        )
        (case_arm
          pat_list: [
            {(Lit_Other '*') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) 
              (Lit_Other '*')
            }
            {(Lit_Other '*') (DQ ('\t')) (Lit_Other '*')}
            {(Lit_Other '*') (DQ ($ VSub_DollarName '$nl')) (Lit_Other '*')}
          ]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {(Source)}
                {(directory)}
                {(should)}
                {(not)}
                {(contain)}
                {(space)}
                {(or)}
                {(tab)}
                {(or)}
                {(newline.)}
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.SimpleCommand
              words: [{(echo)} {(Errors)} {(may)} {(occur.)}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [3258 3273 3314 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*') (DQ ("'")) (Lit_Other '*')}]
          action: [
            (C {(echo)} {(Source)} {(directory)} {(must)} {(not)} {(contain)} {(single)} {(quotes.)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [3316 3321 3346 16777215]
        )
      ]
      spids: [3241 3246 3348]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:dstversion spids:[3350])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(sed)} {(-n)} {(SQ <'/define MKSH_VERSION/s/^.*"\\([^"]*\\)".*$/\\1/p'>)} 
                        {(DQ ($ VSub_DollarName '$srcdir') (/sh.h))}
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [3351 3364]
              )
            }
          spids: [3350]
        )
      ]
      spids: [3350]
    )
    (C {(add_cppflags)} {(-DMKSH_BUILDSH)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:e spids:[3371])
          op: Equal
          rhs: {(echo)}
          spids: [3371]
        )
      ]
      spids: [3371]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:r spids:[3374])
          op: Equal
          rhs: {(0)}
          spids: [3374]
        )
      ]
      spids: [3374]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:eq spids:[3377])
          op: Equal
          rhs: {(0)}
          spids: [3377]
        )
      ]
      spids: [3377]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:pm spids:[3380])
          op: Equal
          rhs: {(0)}
          spids: [3380]
        )
      ]
      spids: [3380]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:cm spids:[3383])
          op: Equal
          rhs: {(normal)}
          spids: [3383]
        )
      ]
      spids: [3383]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:optflags spids:[3386])
          op: Equal
          rhs: {(-std-compile-opts)}
          spids: [3386]
        )
      ]
      spids: [3386]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:check_categories spids:[3389])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [3389]
        )
      ]
      spids: [3389]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:last spids:[3391])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [3391]
        )
      ]
      spids: [3391]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:tfn spids:[3393])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [3393]
        )
      ]
      spids: [3393]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:legacy spids:[3395])
          op: Equal
          rhs: {(0)}
          spids: [3395]
        )
      ]
      spids: [3395]
    )
    (command.ForEach
      iter_name: i
      do_arg_iter: T
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ VSub_DollarName '$last') (Lit_Other ':') ($ VSub_DollarName '$i')}
              arms: [
                (case_arm
                  pat_list: [
                    {(c) (Lit_Other ':') (combine)}
                    {(c) (Lit_Other ':') (dragonegg)}
                    {(c) (Lit_Other ':') (llvm)}
                    {(c) (Lit_Other ':') (lto)}
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cm spids:[3433])
                          op: Equal
                          rhs: {($ VSub_DollarName '$i')}
                          spids: [3433]
                        )
                      ]
                      spids: [3433]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:last spids:[3437])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [3437]
                        )
                      ]
                      spids: [3437]
                    )
                  ]
                  spids: [3415 3430 3440 16777215]
                )
                (case_arm
                  pat_list: [{(c) (Lit_Other ':') (Lit_Other '*')}]
                  action: [
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_DollarName '$me') (": Unknown option -c '") 
                            ($ VSub_DollarName '$i') ("'!")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [3443 3446 3467 16777215]
                )
                (case_arm
                  pat_list: [{(o) (Lit_Other ':') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:optflags spids:[3476])
                          op: Equal
                          rhs: {($ VSub_DollarName '$i')}
                          spids: [3476]
                        )
                      ]
                      spids: [3476]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:last spids:[3480])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [3480]
                        )
                      ]
                      spids: [3480]
                    )
                  ]
                  spids: [3470 3473 3483 16777215]
                )
                (case_arm
                  pat_list: [{(t) (Lit_Other ':') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:tfn spids:[3492])
                          op: Equal
                          rhs: {($ VSub_DollarName '$i')}
                          spids: [3492]
                        )
                      ]
                      spids: [3492]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:last spids:[3496])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [3496]
                        )
                      ]
                      spids: [3496]
                    )
                  ]
                  spids: [3486 3489 3499 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-c)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:last spids:[3507])
                          op: Equal
                          rhs: {(c)}
                          spids: [3507]
                        )
                      ]
                      spids: [3507]
                    )
                  ]
                  spids: [3502 3504 3511 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-G)}]
                  action: [
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ($ VSub_DollarName '$me') (": Do not call me with '-G'!"))}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [3514 3516 3535 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-g)}]
                  action: [
                    (C {(add_cppflags)} {(-DDEBUG)})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:CFLAGS spids:[3552])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' -g3 -fno-builtin'))}
                          spids: [3552]
                        )
                      ]
                      spids: [3552]
                    )
                  ]
                  spids: [3538 3540 3559 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-j)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:pm spids:[3567])
                          op: Equal
                          rhs: {(1)}
                          spids: [3567]
                        )
                      ]
                      spids: [3567]
                    )
                  ]
                  spids: [3562 3564 3571 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-L)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:legacy spids:[3579])
                          op: Equal
                          rhs: {(1)}
                          spids: [3579]
                        )
                      ]
                      spids: [3579]
                    )
                  ]
                  spids: [3574 3576 3583 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (Lit_Other '+') (L)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:legacy spids:[3592])
                          op: Equal
                          rhs: {(0)}
                          spids: [3592]
                        )
                      ]
                      spids: [3592]
                    )
                  ]
                  spids: [3586 3589 3596 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-M)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cm spids:[3604])
                          op: Equal
                          rhs: {(makefile)}
                          spids: [3604]
                        )
                      ]
                      spids: [3604]
                    )
                  ]
                  spids: [3599 3601 3608 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-O)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:optflags spids:[3616])
                          op: Equal
                          rhs: {(-std-compile-opts)}
                          spids: [3616]
                        )
                      ]
                      spids: [3616]
                    )
                  ]
                  spids: [3611 3613 3620 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-o)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:last spids:[3628])
                          op: Equal
                          rhs: {(o)}
                          spids: [3628]
                        )
                      ]
                      spids: [3628]
                    )
                  ]
                  spids: [3623 3625 3632 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-Q)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:eq spids:[3640])
                          op: Equal
                          rhs: {(1)}
                          spids: [3640]
                        )
                      ]
                      spids: [3640]
                    )
                  ]
                  spids: [3635 3637 3644 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-r)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:r spids:[3652])
                          op: Equal
                          rhs: {(1)}
                          spids: [3652]
                        )
                      ]
                      spids: [3652]
                    )
                  ]
                  spids: [3647 3649 3656 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-t)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:last spids:[3664])
                          op: Equal
                          rhs: {(t)}
                          spids: [3664]
                        )
                      ]
                      spids: [3664]
                    )
                  ]
                  spids: [3659 3661 3668 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (-v)}]
                  action: [
                    (C {(echo)} {(DQ ('Build.sh ') ($ VSub_DollarName '$srcversion'))})
                    (C {(echo)} {(DQ ('for mksh ') ($ VSub_DollarName '$dstversion'))})
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [3671 3673 3697 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                  action: [
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_DollarName '$me') (": Unknown option '") ($ VSub_DollarName '$i') 
                            ("'!")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [3700 3702 3723 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_DollarName '$me') (": Unknown option -'") 
                            ($ VSub_DollarName '$last') ("' '") ($ VSub_DollarName '$i') ("'!")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [3726 3727 3750 16777215]
                )
              ]
              spids: [3406 3412 3753]
            )
          ]
          spids: [3403 3755]
        )
      spids: [16777215 16777215]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$last'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ($ VSub_DollarName '$me') (": Option -'") ($ VSub_DollarName '$last') 
                    ("' not followed by argument!")
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 3768]
        )
      ]
      spids: [16777215 3788]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$tfn'))})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Other '=')} {(0)})
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:tfn spids:[3815])
                      op: Equal
                      rhs: {(mksh)}
                      spids: [3815]
                    )
                  ]
                  spids: [3815]
                )
              ]
              spids: [16777215 3812]
            )
          ]
          else_action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tfn spids:[3821])
                  op: Equal
                  rhs: {(lksh)}
                  spids: [3821]
                )
              ]
              spids: [3821]
            )
          ]
          spids: [3818 3824]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(-d)} {($ VSub_DollarName '$tfn')})
                    (C {(test)} {(-d)} {($ VSub_DollarName '$tfn') (.exe)})
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ($ VSub_DollarName '$me') (': Error: ./') ($ VSub_DollarName '$tfn') 
                    (' is a directory!')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 3844]
        )
      ]
      spids: [16777215 3864]
    )
    (C {(rmf)} {(a.exe) (Lit_Other '*')} {(a.out) (Lit_Other '*')} {(conftest.c)} 
      {(conftest.exe) (Lit_Other '*')} {(Lit_Other '*') (core)} {(core.) (Lit_Other '*')} {(${ VSub_Name tfn) (Lit_Other '*')} 
      {(Lit_Other '*') (.bc)} {(Lit_Other '*') (.dbg)} {(Lit_Other '*') (.ll)} {(Lit_Other '*') (.o)} {(Lit_Other '*') (.gen)} 
      {(Rebuild.sh)} {(lft)} {(no)} {(signames.inc)} {(test.sh)} {(x)} {(vv.out)}
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SRCS spids:[3922])
          op: Equal
          rhs: {(DQ ('lalloc.c eval.c exec.c expr.c funcs.c histrap.c jobs.c'))}
          spids: [3922]
        )
      ]
      spids: [3922]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SRCS spids:[3927])
          op: Equal
          rhs: {(DQ ($ VSub_DollarName '$SRCS') (' lex.c main.c misc.c shf.c syn.c tree.c var.c'))}
          spids: [3927]
        )
      ]
      spids: [3927]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Other '=')} {(0)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:SRCS spids:[3948])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$SRCS') (' edit.c'))}
                  spids: [3948]
                )
              ]
              spids: [3948]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:check_categories spids:[3955])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' shell:legacy-no int:32'))}
                  spids: [3955]
                )
              ]
              spids: [3955]
            )
          ]
          spids: [16777215 3945]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[3964])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' shell:legacy-yes'))}
              spids: [3964]
            )
          ]
          spids: [3964]
        )
        (C {(add_cppflags)} {(-DMKSH_LEGACY_MODE)})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HAVE_PERSISTENT_HISTORY spids:[3976])
              op: Equal
              rhs: {(0)}
              spids: [3976]
            )
          ]
          spids: [3976]
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HAVE_ISSET_MKSH_CONSERVATIVE_FDS spids:[3980])
              op: Equal
              rhs: {(1)}
              spids: [3980]
            )
          ]
          spids: [3980]
        )
      ]
      spids: [3961 3986]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$srcdir'))} {(Lit_Other '=')} {(x) (DQ (.))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[4009])
                  op: Equal
                  rhs: {(DQ ('-I. ') ($ VSub_DollarName '$CPPFLAGS'))}
                  spids: [4009]
                )
              ]
              spids: [4009]
            )
          ]
          spids: [16777215 4006]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[4018])
              op: Equal
              rhs: 
                {
                  (DQ ("-I. -I'") ($ VSub_DollarName '$srcdir') ("' ") ($ VSub_DollarName '$CPPFLAGS'))
                }
              spids: [4018]
            )
          ]
          spids: [4018]
        )
      ]
      spids: [4015 4026]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$LDSTATIC'))})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$LDFLAGS'))})
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:LDFLAGS spids:[4052])
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$LDSTATIC'))}
                      spids: [4052]
                    )
                  ]
                  spids: [4052]
                )
              ]
              spids: [16777215 4049]
            )
          ]
          else_action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:LDFLAGS spids:[4062])
                  op: Equal
                  rhs: {($ VSub_DollarName '$LDSTATIC')}
                  spids: [4062]
                )
              ]
              spids: [4062]
            )
          ]
          spids: [4059 4065]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$TARGET_OS'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:x spids:[4082])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.AndOr
                                ops: [Op_DPipe]
                                children: [
                                  (command.SimpleCommand
                                    words: [{(uname)} {(-s)}]
                                    redirects: [
                                      (redir.Redir
                                        op: <Redir_Great '2>'>
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                  (C {(uname)})
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [4083 4094]
                      )
                    }
                  spids: [4082]
                )
              ]
              spids: [4082]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$x'))} {(Lit_Other '=')} 
                  {(x) 
                    (DQ 
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.SimpleCommand
                                words: [{(uname)} {(-n)}]
                                redirects: [
                                  (redir.Redir
                                    op: <Redir_Great '2>'>
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [4108 4115]
                      )
                    )
                  }
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:TARGET_OS spids:[4120])
                      op: Equal
                      rhs: {($ VSub_DollarName '$x')}
                      spids: [4120]
                    )
                  ]
                  spids: [4120]
                )
              ]
            )
          ]
          spids: [16777215 4079]
        )
      ]
      spids: [16777215 4123]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$TARGET_OS'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {(DQ ($ VSub_DollarName '$me') (': Set TARGET_OS, your uname is broken!'))}
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 4136]
        )
      ]
      spids: [16777215 4154]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:oswarn spids:[4156])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [4156]
        )
      ]
      spids: [4156]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ccpc spids:[4158])
          op: Equal
          rhs: {(-Wc) (Lit_Comma ',')}
          spids: [4158]
        )
      ]
      spids: [4158]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ccpl spids:[4162])
          op: Equal
          rhs: {(-Wl) (Lit_Comma ',')}
          spids: [4162]
        )
      ]
      spids: [4162]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:tsts spids:[4166])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [4166]
        )
      ]
      spids: [4166]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ccpr spids:[4168])
          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: [4168]
        )
      ]
      spids: [4168]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OS'))} {(Lit_Other '=')} 
                  {(x) (DQ (Android))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:check_categories spids:[4197])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' android'))}
                  spids: [4197]
                )
              ]
              spids: [4197]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:TARGET_OS spids:[4204])
                  op: Equal
                  rhs: {(Linux)}
                  spids: [4204]
                )
              ]
              spids: [4204]
            )
          ]
          spids: [16777215 4194]
        )
      ]
      spids: [16777215 4207]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OS'))} {(Lit_Other '=')} 
                  {(x) (DQ (Minix))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('\n') ('WARNING: additional checks before running Build.sh required!\n') 
                    ('You can avoid these by calling Build.sh correctly, see below.\n')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 4263
                  stdin_parts: [
                    ('#include <sys/types.h>\n')
                    ('const char *\n')
                    ('#ifdef _NETBSD_SOURCE\n')
                    ('ct="Ninix3"\n')
                    ('#else\n')
                    ('ct="Minix3"\n')
                    ('#endif\n')
                    (';\n')
                  ]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ct spids:[4265])
                  op: Equal
                  rhs: {(unknown)}
                  spids: [4265]
                )
              ]
              spids: [4265]
            )
            (C {(vv)} {(SQ <']'>)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(cc)})
                    spids: [4276 4280]
                  ) (' -E ') ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$CPPFLAGS') (' ') 
                  ($ VSub_DollarName '$NOWARN') (' conftest.c | grep ct= | tr -d ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) 
                  (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('015 >x')
                )
              }
            )
            (C {(sed)} {(SQ <'s/^/[ /'>)} {(x)})
            (C {(eval)} 
              {
                (word_part.CommandSubPart
                  command_list: (command.CommandList children:[(C {(cat)} {(x)})])
                  left_token: <Left_Backtick '`'>
                  spids: [4305 4309]
                )
              }
            )
            (C {(rmf)} {(x)} {(vv.out)})
            (command.Case
              to_match: {($ VSub_DollarName '$ct')}
              arms: [
                (case_arm
                  pat_list: [{(Minix3)} {(Ninix3)}]
                  action: [
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ('\n') ('Warning: you set TARGET_OS to ') 
                            ($ VSub_DollarName '$TARGET_OS') (' but that is ambiguous.\n') ('Please set it to either Minix3 or Ninix3, whereas the latter is\n') 
                            ('all versions of Minix with even partial NetBSD(R) userland. The\n') ('value determined from your compiler for the current compilation\n') ('(which may be wrong) is: ') 
                            ($ VSub_DollarName '$ct') ('\n')
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:TARGET_OS spids:[4351])
                          op: Equal
                          rhs: {($ VSub_DollarName '$ct')}
                          spids: [4351]
                        )
                      ]
                      spids: [4351]
                    )
                  ]
                  spids: [4326 4329 4355 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ('\n') ('Warning: you set TARGET_OS to ') 
                            ($ VSub_DollarName '$TARGET_OS') (' but that is ambiguous.\n') ('Please set it to either Minix3 or Ninix3, whereas the latter is\n') 
                            ('all versions of Minix with even partial NetBSD(R) userland. The\n') ("proper value couldn't be determined, continue at your own risk.\n")
                          )
                        }
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                  ]
                  spids: [4358 4359 4378 16777215]
                )
              ]
              spids: [4319 4323 4381]
            )
          ]
          spids: [16777215 4230]
        )
      ]
      spids: [16777215 4383]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{(NEXTSTEP)}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:TARGET_OSREV spids:[4414])
                      op: Equal
                      rhs: 
                        {
                          (word_part.CommandSubPart
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (command.SimpleCommand
                                        words: [{(hostinfo)}]
                                        redirects: [
                                          (redir.Redir
                                            op: <Redir_GreatAnd '2>&'>
                                            fd: 2
                                            arg_word: {(1)}
                                          )
                                        ]
                                      )
                                      (C {(grep)} {(SQ <'NeXT Mach [0-9][0-9.]*:'>)})
                                      (C {(sed)} {(SQ <'s/^.*NeXT Mach \\([0-9][0-9.]*\\):.*$/\\1/'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4415 4440]
                          )
                        }
                      spids: [4414]
                    )
                  ]
                  spids: [4414]
                )
              ]
            )
          ]
          spids: [4395 4396 4443 16777215]
        )
        (case_arm
          pat_list: [{(QNX)} {(SCO_SV)}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:TARGET_OSREV spids:[4466])
                      op: Equal
                      rhs: 
                        {
                          (word_part.CommandSubPart
                            command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                            left_token: <Left_Backtick '`'>
                            spids: [4467 4471]
                          )
                        }
                      spids: [4466]
                    )
                  ]
                  spids: [4466]
                )
              ]
            )
          ]
          spids: [4445 4448 4474 16777215]
        )
      ]
      spids: [4389 4393 4476]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{(386BSD)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_CAN_OTWO>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4495 4499]
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_NO_SIGSETJMP)})
            (C {(add_cppflags)} {(-DMKSH_TYPEDEF_SIG_ATOMIC_T) (Lit_Other '=') (int)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
          ]
          spids: [4488 4489 4520 16777215]
        )
        (case_arm
          pat_list: [{(AIX)}]
          action: [
            (C {(add_cppflags)} {(-D_ALL_SOURCE)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4534 4538]
                  )
                )
              }
            )
          ]
          spids: [4522 4523 4542 16777215]
        )
        (case_arm
          pat_list: [{(BeOS)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$KSH_VERSION')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other '*') (MIRBSD) 
                      (word_part.EscapedLiteralPart
                        token: <Lit_EscapedChar '\\ '>
                      ) (KSH) (Lit_Other '*')
                    }
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oswarn spids:[4563])
                          op: Equal
                          rhs: {(DQ ('; it has minor issues'))}
                          spids: [4563]
                        )
                      ]
                      spids: [4563]
                    )
                  ]
                  spids: [4555 4560 4569 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oswarn spids:[4576])
                          op: Equal
                          rhs: {(DQ ('; you must recompile mksh with'))}
                          spids: [4576]
                        )
                      ]
                      spids: [4576]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oswarn spids:[4582])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$oswarn') (${ VSub_Name nl) 
                                ('itself in a second stage')
                              )
                            }
                          spids: [4582]
                        )
                      ]
                      spids: [4582]
                    )
                  ]
                  spids: [4572 4573 4592 16777215]
                )
              ]
              spids: [4548 4552 4595]
            )
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_DISABLE_TTY_WARNING)})
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
          ]
          spids: [4544 4545 4621 16777215]
        )
        (case_arm
          pat_list: [{(BSD/OS)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4630 4634]
                  )
                )
              }
            )
          ]
          spids: [4623 4624 4638 16777215]
        )
        (case_arm
          pat_list: [{(Coherent)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[4644])
                  op: Equal
                  rhs: {(DQ ('; it has major issues'))}
                  spids: [4644]
                )
              ]
              spids: [4644]
            )
            (C {(add_cppflags)} {(-DMKSH__NO_SYMLINK)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:check_categories spids:[4655])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' nosymlink'))}
                  spids: [4655]
                )
              ]
              spids: [4655]
            )
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-DMKSH_DISABLE_TTY_WARNING)})
          ]
          spids: [4640 4641 4677 16777215]
        )
        (case_arm
          pat_list: [{(CYGWIN) (Lit_Other '*')}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4687 4691]
                  )
                )
              }
            )
          ]
          spids: [4679 4681 4695 16777215]
        )
        (case_arm
          pat_list: [{(Darwin)}]
          action: [(C {(add_cppflags)} {(-D_DARWIN_C_SOURCE)})]
          spids: [4697 4698 4706 16777215]
        )
        (case_arm pat_list:[{(DragonFly)}] spids:[4708 4709 4712 16777215])
        (case_arm pat_list:[{(FreeBSD)}] spids:[4714 4715 4718 16777215])
        (case_arm
          pat_list: [{(FreeMiNT)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[4724])
                  op: Equal
                  rhs: {(DQ ('; it has minor issues'))}
                  spids: [4724]
                )
              ]
              spids: [4724]
            )
            (C {(add_cppflags)} {(-D_GNU_SOURCE)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4743 4747]
                  )
                )
              }
            )
          ]
          spids: [4720 4721 4751 16777215]
        )
        (case_arm
          pat_list: [{(GNU)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$CC')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (tendracc) (Lit_Other '*')}]
                  spids: [4764 4767 4769 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(add_cppflags)} {(-D_GNU_SOURCE)})]
                  spids: [4772 4773 4779 16777215]
                )
              ]
              spids: [4757 4761 4782]
            )
            (C {(add_cppflags)} {(-DSETUID_CAN_FAIL_WITH_EAGAIN)})
            (C {(add_cppflags)} {(-DMKSH__NO_PATH_MAX)})
          ]
          spids: [4753 4754 4799 16777215]
        )
        (case_arm
          pat_list: [{(GNU/kFreeBSD)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$CC')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (tendracc) (Lit_Other '*')}]
                  spids: [4812 4815 4817 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(add_cppflags)} {(-D_GNU_SOURCE)})]
                  spids: [4820 4821 4827 16777215]
                )
              ]
              spids: [4805 4809 4830]
            )
            (C {(add_cppflags)} {(-DSETUID_CAN_FAIL_WITH_EAGAIN)})
          ]
          spids: [4801 4802 4838 16777215]
        )
        (case_arm
          pat_list: [{(Haiku)}]
          action: [
            (command.Sentence
              child: (C {(add_cppflags)} {(-DMKSH_ASSUME_UTF8)})
              terminator: <Op_Semi ';'>
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_ISSET_MKSH_ASSUME_UTF8 spids:[4849])
                  op: Equal
                  rhs: {(1)}
                  spids: [4849]
                )
              ]
              spids: [4849]
            )
          ]
          spids: [4840 4841 4853 16777215]
        )
        (case_arm pat_list:[{(HP-UX)}] spids:[4855 4856 4859 16777215])
        (case_arm
          pat_list: [{(Interix)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ccpc spids:[4865])
                  op: Equal
                  rhs: {(SQ <'-X '>)}
                  spids: [4865]
                )
              ]
              spids: [4865]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ccpl spids:[4871])
                  op: Equal
                  rhs: {(SQ <'-Y '>)}
                  spids: [4871]
                )
              ]
              spids: [4871]
            )
            (C {(add_cppflags)} {(-D_ALL_SOURCE)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name LIBS>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(-lcrypt)})
                    spids: [4885 4889]
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4896 4900]
                  )
                )
              }
            )
          ]
          spids: [4861 4862 4904 16777215]
        )
        (case_arm
          pat_list: [{(IRIX) (Lit_Other '*')}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4914 4918]
                  )
                )
              }
            )
          ]
          spids: [4906 4908 4922 16777215]
        )
        (case_arm
          pat_list: [{(Linux)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$CC')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (tendracc) (Lit_Other '*')}]
                  spids: [4935 4938 4940 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(add_cppflags)} {(-D_GNU_SOURCE)})]
                  spids: [4943 4944 4950 16777215]
                )
              ]
              spids: [4928 4932 4953]
            )
            (C {(add_cppflags)} {(-DSETUID_CAN_FAIL_WITH_EAGAIN)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_REVOKE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [4964 4968]
                  )
                )
              }
            )
          ]
          spids: [4924 4925 4972 16777215]
        )
        (case_arm
          pat_list: [{(LynxOS)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[4978])
                  op: Equal
                  rhs: {(DQ ('; it has minor issues'))}
                  spids: [4978]
                )
              ]
              spids: [4978]
            )
          ]
          spids: [4974 4975 4984 16777215]
        )
        (case_arm pat_list:[{(MidnightBSD)}] spids:[4986 4987 4990 16777215])
        (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.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oldish_ed spids:[5016])
                  op: Equal
                  rhs: {(no-stderr-ed)}
                  spids: [5016]
                )
              ]
              spids: [5016]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5026 5030]
                  )
                )
              }
            )
          ]
          spids: [4992 4993 5034 16777215]
        )
        (case_arm
          pat_list: [{(Minix3)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-DMKSH_NO_LIMITS)})
            (C {(add_cppflags)} {(-D_POSIX_SOURCE)} {(-D_POSIX_1_SOURCE) (Lit_Other '=') (2)} 
              {(-D_MINIX)}
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oldish_ed spids:[5066])
                  op: Equal
                  rhs: {(no-stderr-ed)}
                  spids: [5066]
                )
              ]
              spids: [5066]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5076 5080]
                  )
                )
              }
            )
          ]
          spids: [5036 5037 5084 16777215]
        )
        (case_arm pat_list:[{(MirBSD)}] spids:[5086 5087 5090 16777215])
        (case_arm
          pat_list: [{(MSYS_) (Lit_Other '*')}]
          action: [
            (command.Sentence
              child: (C {(add_cppflags)} {(-DMKSH_ASSUME_UTF8) (Lit_Other '=') (0)})
              terminator: <Op_Semi ';'>
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_ISSET_MKSH_ASSUME_UTF8 spids:[5104])
                  op: Equal
                  rhs: {(1)}
                  spids: [5104]
                )
              ]
              spids: [5104]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5115 5119]
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_STDINT_H>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5130 5134]
                  )
                )
              }
            )
          ]
          spids: [5092 5094 5138 16777215]
        )
        (case_arm pat_list:[{(NetBSD)}] spids:[5140 5141 5144 16777215])
        (case_arm
          pat_list: [{(NEXTSTEP)}]
          action: [
            (C {(add_cppflags)} {(-D_NEXT_SOURCE)})
            (C {(add_cppflags)} {(-D_POSIX_SOURCE)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name AWK>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(gawk)})
                    spids: [5163 5167]
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{('cc -posix')})
                    spids: [5174 5178]
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_NO_SIGSETJMP)})
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{(4.2) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oswarn spids:[5212])
                          op: Equal
                          rhs: {(DQ ('; it needs libposix.a'))}
                          spids: [5212]
                        )
                      ]
                      spids: [5212]
                    )
                  ]
                  spids: [5203 5205 5218 16777215]
                )
              ]
              spids: [5196 5200 5221]
            )
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
          ]
          spids: [5146 5147 5229 16777215]
        )
        (case_arm
          pat_list: [{(Ninix3)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(add_cppflags)} {(-DMKSH_NO_LIMITS)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5258])
                  op: Equal
                  rhs: {(DQ ('; it has unknown issues'))}
                  spids: [5258]
                )
              ]
              spids: [5258]
            )
          ]
          spids: [5231 5232 5264 16777215]
        )
        (case_arm
          pat_list: [{(OpenBSD)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5273 5277]
                  )
                )
              }
            )
          ]
          spids: [5266 5267 5281 16777215]
        )
        (case_arm
          pat_list: [{(OS/2)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_TERMIOS_H spids:[5287])
                  op: Equal
                  rhs: {(0)}
                  spids: [5287]
                )
              ]
              spids: [5287]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_MKNOD spids:[5291])
                  op: Equal
                  rhs: {(0)}
                  spids: [5291]
                )
              ]
              spids: [5291]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5298])
                  op: Equal
                  rhs: {(DQ ('; it is currently being ported'))}
                  spids: [5298]
                )
              ]
              spids: [5298]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:check_categories spids:[5304])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' nosymlink'))}
                  spids: [5304]
                )
              ]
              spids: [5304]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(gcc)})
                    spids: [5314 5318]
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name SIZE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(': size')})
                    spids: [5325 5329]
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_NOPROSPECTOFWORK)})
          ]
          spids: [5283 5284 5343 16777215]
        )
        (case_arm
          pat_list: [{(OSF1)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_SIG_T spids:[5349])
                  op: Equal
                  rhs: {(0)}
                  spids: [5349]
                )
              ]
              spids: [5349]
            )
            (C {(add_cppflags)} {(-D_OSF_SOURCE)})
            (C {(add_cppflags)} {(-D_POSIX_C_SOURCE) (Lit_Other '=') (200112L)})
            (C {(add_cppflags)} {(-D_XOPEN_SOURCE) (Lit_Other '=') (600)})
            (C {(add_cppflags)} {(-D_XOPEN_SOURCE_EXTENDED)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5383 5387]
                  )
                )
              }
            )
          ]
          spids: [5345 5346 5391 16777215]
        )
        (case_arm
          pat_list: [{(Plan9)}]
          action: [
            (C {(add_cppflags)} {(-D_POSIX_SOURCE)})
            (C {(add_cppflags)} {(-D_LIMITS_EXTENSION)})
            (C {(add_cppflags)} {(-D_BSD_EXTENSION)})
            (C {(add_cppflags)} {(-D_SUSV2_SOURCE)})
            (command.Sentence
              child: (C {(add_cppflags)} {(-DMKSH_ASSUME_UTF8)})
              terminator: <Op_Semi ';'>
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_ISSET_MKSH_ASSUME_UTF8 spids:[5422])
                  op: Equal
                  rhs: {(1)}
                  spids: [5422]
                )
              ]
              spids: [5422]
            )
            (C {(add_cppflags)} {(-DMKSH_NO_CMDLINE_EDITING)})
            (C {(add_cppflags)} {(-DMKSH__NO_SETEUGID)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5436])
                  op: Equal
                  rhs: {(SQ <' and will currently not work'>)}
                  spids: [5436]
                )
              ]
              spids: [5436]
            )
            (C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})
            (C {(add_cppflags)} {(-DMKSH_MAYBE_KENCC)})
          ]
          spids: [5393 5394 5456 16777215]
        )
        (case_arm
          pat_list: [{(PW32) (Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_SIG_T spids:[5463])
                  op: Equal
                  rhs: {(0)}
                  spids: [5463]
                )
              ]
              spids: [5463]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5470])
                  op: Equal
                  rhs: {(SQ <' and will currently not work'>)}
                  spids: [5470]
                )
              ]
              spids: [5470]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5479 5483]
                  )
                )
              }
            )
          ]
          spids: [5458 5460 5487 16777215]
        )
        (case_arm
          pat_list: [{(QNX)}]
          action: [
            (C {(add_cppflags)} {(-D__NO_EXT_QNX)})
            (C {(add_cppflags)} {(-D__EXT_UNIX_MISC)})
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other '[') (012345) (Lit_Other ']') (.) (Lit_Other '*')}
                    {(6.) (Lit_Other '[') (0123) (Lit_Other ']') (.) (Lit_Other '*')}
                    {(6.4.) (Lit_Other '[') (01) (Lit_Other ']')}
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oldish_ed spids:[5530])
                          op: Equal
                          rhs: {(no-stderr-ed)}
                          spids: [5530]
                        )
                      ]
                      spids: [5530]
                    )
                  ]
                  spids: [5510 5527 5537 16777215]
                )
              ]
              spids: [5503 5507 5540]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5546 5550]
                  )
                )
              }
            )
          ]
          spids: [5489 5490 5554 16777215]
        )
        (case_arm
          pat_list: [{(SCO_SV)}]
          action: [
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{(3.2) (Lit_Other '*')}]
                  action: [(C {(add_cppflags)} {(-DMKSH_UNEMPLOYED)})]
                  spids: [5567 5569 5581 16777215]
                )
                (case_arm
                  pat_list: [{(5) (Lit_Other '*')}]
                  spids: [5584 5586 5593 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oswarn spids:[5600])
                          op: Equal
                          rhs: {(SQ <'; this is an unknown version of'>)}
                          spids: [5600]
                        )
                      ]
                      spids: [5600]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:oswarn spids:[5606])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$oswarn') ($ VSub_DollarName '$nl') 
                                ($ VSub_DollarName '$TARGET_OS') (' ') (${ VSub_Name TARGET_OSREV) (', please tell me what to do')
                              )
                            }
                          spids: [5606]
                        )
                      ]
                      spids: [5606]
                    )
                  ]
                  spids: [5596 5597 5619 16777215]
                )
              ]
              spids: [5560 5564 5622]
            )
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SYS_SIGLIST>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5633 5637]
                  ) 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE__SYS_SIGLIST>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5638 5642]
                  )
                )
              }
            )
          ]
          spids: [5556 5557 5646 16777215]
        )
        (case_arm
          pat_list: [{(skyos)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5652])
                  op: Equal
                  rhs: {(DQ ('; it has minor issues'))}
                  spids: [5652]
                )
              ]
              spids: [5652]
            )
          ]
          spids: [5648 5649 5658 16777215]
        )
        (case_arm
          pat_list: [{(SunOS)}]
          action: [(C {(add_cppflags)} {(-D_BSD_SOURCE)}) (C {(add_cppflags)} {(-D__EXTENSIONS__)})]
          spids: [5660 5661 5674 16777215]
        )
        (case_arm
          pat_list: [{(syllable)}]
          action: [
            (C {(add_cppflags)} {(-D_GNU_SOURCE)})
            (C {(add_cppflags)} {(-DMKSH_NO_SIGSUSPEND)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5690])
                  op: Equal
                  rhs: {(SQ <' and will currently not work'>)}
                  spids: [5690]
                )
              ]
              spids: [5690]
            )
          ]
          spids: [5676 5677 5696 16777215]
        )
        (case_arm
          pat_list: [{(ULTRIX)}]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name CC>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{('cc -YPOSIX')})
                    spids: [5705 5709]
                  )
                )
              }
            )
            (C {(add_cppflags)} {(-DMKSH_TYPEDEF_SSIZE_T) (Lit_Other '=') (int)})
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5728 5732]
                  )
                )
              }
            )
          ]
          spids: [5698 5699 5736 16777215]
        )
        (case_arm
          pat_list: [{(UnixWare)} {(UNIX_SV)}]
          action: [
            (C {(add_cppflags)} {(-DMKSH_CONSERVATIVE_FDS)})
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SYS_SIGLIST>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5756 5760]
                  ) 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE__SYS_SIGLIST>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5761 5765]
                  )
                )
              }
            )
          ]
          spids: [5738 5741 5769 16777215]
        )
        (case_arm
          pat_list: [{(UWIN) (Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ccpc spids:[5776])
                  op: Equal
                  rhs: {(SQ <'-Yc,'>)}
                  spids: [5776]
                )
              ]
              spids: [5776]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ccpl spids:[5782])
                  op: Equal
                  rhs: {(SQ <'-Yl,'>)}
                  spids: [5782]
                )
              ]
              spids: [5782]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tsts spids:[5788])
                  op: Equal
                  rhs: {(DQ (' 3<>/dev/tty'))}
                  spids: [5788]
                )
              ]
              spids: [5788]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5794])
                  op: Equal
                  rhs: {(DQ ('; it will compile, but the target'))}
                  spids: [5794]
                )
              ]
              spids: [5794]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5800])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$oswarn') (${ VSub_Name nl) 
                        ('platform itself is very flakey/unreliable')
                      )
                    }
                  spids: [5800]
                )
              ]
              spids: [5800]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [5813 5817]
                  )
                )
              }
            )
          ]
          spids: [5771 5773 5821 16777215]
        )
        (case_arm
          pat_list: [{(_svr4)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5835])
                  op: Equal
                  rhs: {(SQ <'; it may or may not work'>)}
                  spids: [5835]
                )
              ]
              spids: [5835]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:TARGET_OSREV spids:[5856])
                      op: Equal
                      rhs: 
                        {
                          (word_part.CommandSubPart
                            command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                            left_token: <Left_Backtick '`'>
                            spids: [5857 5861]
                          )
                        }
                      spids: [5856]
                    )
                  ]
                  spids: [5856]
                )
              ]
            )
          ]
          spids: [5823 5824 5864 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:oswarn spids:[5870])
                  op: Equal
                  rhs: {(SQ <'; it may or may not work'>)}
                  spids: [5870]
                )
              ]
              spids: [5870]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$TARGET_OSREV'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:TARGET_OSREV spids:[5891])
                      op: Equal
                      rhs: 
                        {
                          (word_part.CommandSubPart
                            command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                            left_token: <Left_Backtick '`'>
                            spids: [5892 5896]
                          )
                        }
                      spids: [5891]
                    )
                  ]
                  spids: [5891]
                )
              ]
            )
          ]
          spids: [5866 5867 5899 16777215]
        )
      ]
      spids: [4482 4486 5901]
    )
    (C {(Lit_Other ':')} 
      {
        (DQ 
          (word_part.BracedVarSub
            token: <VSub_Name HAVE_MKNOD>
            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
            spids: [5907 5911]
          )
        )
      }
    )
    (C {(Lit_Other ':')} 
      {
        (DQ 
          (word_part.BracedVarSub
            token: <VSub_Name AWK>
            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(awk)})
            spids: [5918 5922]
          ) 
          (word_part.BracedVarSub
            token: <VSub_Name CC>
            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(cc)})
            spids: [5923 5927]
          ) 
          (word_part.BracedVarSub
            token: <VSub_Name NROFF>
            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(nroff)})
            spids: [5928 5932]
          ) 
          (word_part.BracedVarSub
            token: <VSub_Name SIZE>
            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(size)})
            spids: [5933 5937]
          )
        )
      }
    )
    (command.AndOr
      ops: [Op_DAmp Op_DAmp Op_DAmp]
      children: [
        (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$r')})
        (command.Pipeline
          children: [
            (C {(echo)})
            (command.SimpleCommand
              words: [{($ VSub_DollarName '$NROFF')} {(-v)}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})]
            )
            (command.SimpleCommand
              words: [{(grep)} {(GNU)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          negated: F
        )
        (command.Pipeline
          children: [
            (C {(echo)})
            (command.SimpleCommand
              words: [{($ VSub_DollarName '$NROFF')} {(-c)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          negated: F
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:NROFF spids:[5993])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$NROFF') (' -c'))}
              spids: [5993]
            )
          ]
          spids: [5993]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ('Hi from') ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$bi') 
          ($ VSub_DollarName '$srcversion') ($ VSub_DollarName '$ao') (' on:')
        )
      }
    )
    (command.Case
      to_match: {($ VSub_DollarName '$TARGET_OS')}
      arms: [
        (case_arm
          pat_list: [{(AIX)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('oslevel >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
          ]
          spids: [6021 6022 6047 16777215]
        )
        (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: [6049 6050 6130 16777215]
        )
        (case_arm
          pat_list: [{(IRIX) (Lit_Other '*')}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('hinv -v >&2'))})
          ]
          spids: [6132 6134 6159 16777215]
        )
        (case_arm
          pat_list: [{(OSF1)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})
            (C {(vv)} {(SQ <'|'>)} {(DQ ('/usr/sbin/sizer -v >&2'))})
          ]
          spids: [6161 6162 6187 16777215]
        )
        (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: [6189 6194 6219 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [(C {(vv)} {(SQ <'|'>)} {(DQ ('uname -a >&2'))})]
          spids: [6221 6222 6236 16777215]
        )
      ]
      spids: [6015 6019 6238]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$oswarn'))})
        (command.SimpleCommand
          words: [
            {(echo)}
            {
              (DQ ('\n') ('Warning: mksh has not yet been ported to or tested on your\n') 
                ("operating system '") ($ VSub_DollarName '$TARGET_OS') ("'") ($ VSub_DollarName '$oswarn') ('. If you can provide\n') 
                ('a shell account to the developer, this may improve; please\n') ('drop us a success or failure notice or even send in diffs.\n')
              )
            }
          ]
          redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ($ VSub_DollarName '$bi') ($ VSub_DollarName '$me') (': Building the MirBSD Korn Shell') 
          ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$ui') ($ VSub_DollarName '$dstversion') ($ VSub_DollarName '$ao') (' on ') 
          ($ VSub_DollarName '$TARGET_OS') (' ') (${ VSub_Name TARGET_OSREV) (...)
        )
      }
    )
    (C {($ VSub_DollarName '$e')} {($ VSub_DollarName '$bi') ($ VSub_DollarName '$me') (Lit_Other ':')} 
      {(Scanning)} {(KW_For for)} {(functions...)} {(please)} {(ignore)} {(any)} {(errors.) ($ VSub_DollarName '$ao')}
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:CPP spids:[6343])
          op: Equal
          rhs: {(DQ ($ VSub_DollarName '$CC') (' -E'))}
          spids: [6343]
        )
      ]
      spids: [6343]
    )
    (C {($ VSub_DollarName '$e')} {(...)} {(which)} {(compiler)} {(seems)} {(to)} {(be)} {(used)})
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 6444
          stdin_parts: [
            ('const char *\n')
            ('#if defined(__ICC) || defined(__INTEL_COMPILER)\n')
            ('ct="icc"\n')
            ('#elif defined(__xlC__) || defined(__IBMC__)\n')
            ('ct="xlc"\n')
            ('#elif defined(__SUNPRO_C)\n')
            ('ct="sunpro"\n')
            ('#elif defined(__ACK__)\n')
            ('ct="ack"\n')
            ('#elif defined(__BORLANDC__)\n')
            ('ct="bcc"\n')
            ('#elif defined(__WATCOMC__)\n')
            ('ct="watcom"\n')
            ('#elif defined(__MWERKS__)\n')
            ('ct="metrowerks"\n')
            ('#elif defined(__HP_cc)\n')
            ('ct="hpcc"\n')
            ('#elif defined(__DECC) || (defined(__osf__) && !defined(__GNUC__))\n')
            ('ct="dec"\n')
            ('#elif defined(__PGI)\n')
            ('ct="pgi"\n')
            ('#elif defined(__DMC__)\n')
            ('ct="dmc"\n')
            ('#elif defined(_MSC_VER)\n')
            ('ct="msc"\n')
            ('#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)\n')
            ('ct="adsp"\n')
            ('#elif defined(__IAR_SYSTEMS_ICC__)\n')
            ('ct="iar"\n')
            ('#elif defined(SDCC)\n')
            ('ct="sdcc"\n')
            ('#elif defined(__PCC__)\n')
            ('ct="pcc"\n')
            ('#elif defined(__TenDRA__)\n')
            ('ct="tendra"\n')
            ('#elif defined(__TINYC__)\n')
            ('ct="tcc"\n')
            ('#elif defined(__llvm__) && defined(__clang__)\n')
            ('ct="clang"\n')
            ('#elif defined(__NWCC__)\n')
            ('ct="nwcc"\n')
            ('#elif defined(__GNUC__)\n')
            ('ct="gcc"\n')
            ('#elif defined(_COMPILER_VERSION)\n')
            ('ct="mipspro"\n')
            ('#elif defined(__sgi)\n')
            ('ct="mipspro"\n')
            ('#elif defined(__hpux) || defined(__hpua)\n')
            ('ct="hpcc"\n')
            ('#elif defined(__ultrix)\n')
            ('ct="ucode"\n')
            ('#elif defined(__USLC__)\n')
            ('ct="uslc"\n')
            ('#elif defined(__LCC__)\n')
            ('ct="lcc"\n')
            ('#elif defined(MKSH_MAYBE_KENCC)\n')
            ('/* and none of the above matches */\n')
            ('ct="kencc"\n')
            ('#else\n')
            ('ct="unknown"\n')
            ('#endif\n')
            (';\n')
            ('const char *\n')
            ('#if defined(__KLIBC__) && !defined(__OS2__)\n')
            ('et="klibc"\n')
            ('#else\n')
            ('et="unknown"\n')
            ('#endif\n')
            (';\n')
          ]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ct spids:[6445])
          op: Equal
          rhs: {(untested)}
          spids: [6445]
        )
      ]
      spids: [6445]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:et spids:[6448])
          op: Equal
          rhs: {(untested)}
          spids: [6448]
        )
      ]
      spids: [6448]
    )
    (C {(vv)} {(SQ <']'>)} 
      {
        (DQ ($ VSub_DollarName '$CPP') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c | ') ("    sed -n '/^ *[ce]t *= */s/^ *") 
          (Lit_Other '\\') ('([ce]t') (Lit_Other '\\') (') *= */') (Lit_Other '\\') ("1=/p' | tr -d ") 
          (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('015 >x')
        )
      }
    )
    (C {(sed)} {(SQ <'s/^/[ /'>)} {(x)})
    (C {(eval)} 
      {
        (word_part.CommandSubPart
          command_list: (command.CommandList children:[(C {(cat)} {(x)})])
          left_token: <Left_Backtick '`'>
          spids: [6489 6493]
        )
      }
    )
    (C {(rmf)} {(x)} {(vv.out)})
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 6513
          stdin_parts: [('#include <unistd.h>\n') ('int main(void) { return (isatty(0)); }\n')]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{(ack)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[6528])
                  op: Equal
                  rhs: {(DQ ('-Dconst= ') ($ VSub_DollarName '$CPPFLAGS'))}
                  spids: [6528]
                )
              ]
              spids: [6528]
            )
          ]
          spids: [6520 6521 6535 16777215]
        )
        (case_arm
          pat_list: [{(adsp)}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ <'Warning: Analog Devices C++ compiler for Blackfin, TigerSHARC\n'> 
                    <'    and SHARC (21000) DSPs detected. This compiler has not yet\n'> <'    been tested for compatibility with mksh. Continue at your\n'> 
                    <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [6537 6538 6554 16777215]
        )
        (case_arm
          pat_list: [{(bcc)}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('Warning: Borland C++ Builder detected. This compiler might\n') 
                    ('    produce broken executables. Continue at your own risk,\n') ('    please report success/failure to the developers.')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [6556 6557 6572 16777215]
        )
        (case_arm
          pat_list: [{(clang)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -version')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name CLANG>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(clang)})
                    spids: [6615 6619]
                  ) (' -version')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name CLANG>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(clang)})
                    spids: [6631 6635]
                  ) (' --version')
                )
              }
            )
            (command.Case
              to_match: {($ VSub_DollarName '$CCC_CC') (Lit_Other ':') ($ VSub_DollarName '$CCC_LD')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                  spids: [6653 6655 6657 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (Lit_Other ':')}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:CCC_LD spids:[6664])
                              op: Equal
                              rhs: {($ VSub_DollarName '$CCC_CC')}
                              spids: [6664]
                            )
                          ]
                          spids: [6664]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(export)} {(CCC_LD)})
                  ]
                  spids: [6660 6662 6672 16777215]
                )
              ]
              spids: [6644 6650 6675]
            )
          ]
          spids: [6574 6575 6678 16777215]
        )
        (case_arm
          pat_list: [{(dec)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -Wl,-V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [6680 6681 6727 16777215]
        )
        (case_arm
          pat_list: [{(dmc)}]
          action: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('Warning: Digital Mars Compiler detected. When running under'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('    UWIN, mksh tends to be unstable due to the limitations'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('    of this platform. Continue at your own risk,'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('    please report success/failure to the developers.'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [6729 6730 6773 16777215]
        )
        (case_arm
          pat_list: [{(gcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (SQ <'echo `$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS \\\n'> 
                  <'\t    -dumpmachine` gcc`$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN \\\n'> <'\t    $LIBS -dumpversion`'>
                )
              }
            )
          ]
          spids: [6775 6776 6813 16777215]
        )
        (case_arm
          pat_list: [{(hpcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [6815 6816 6840 16777215]
        )
        (case_arm
          pat_list: [{(iar)}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ <'Warning: IAR Systems (http://www.iar.com) compiler for embedded\n'> 
                    <'    systems detected. This unsupported compiler has not yet\n'> <'    been tested for compatibility with mksh. Continue at your\n'> 
                    <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [6842 6843 6859 16777215]
        )
        (case_arm
          pat_list: [{(icc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V')
                )
              }
            )
          ]
          spids: [6861 6862 6887 16777215]
        )
        (case_arm
          pat_list: [{(kencc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [6889 6890 6914 16777215]
        )
        (case_arm
          pat_list: [{(lcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
            (C {(add_cppflags)} {(-D__inline__) (Lit_Other '=') (__inline)})
          ]
          spids: [6916 6917 6948 16777215]
        )
        (case_arm
          pat_list: [{(metrowerks)}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ <'Warning: Metrowerks C compiler detected. This has not yet\n'> 
                    <'    been tested for compatibility with mksh. Continue at your\n'> <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [6950 6951 6966 16777215]
        )
        (case_arm
          pat_list: [{(mipspro)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -version')
                )
              }
            )
          ]
          spids: [6968 6969 6994 16777215]
        )
        (case_arm
          pat_list: [{(msc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ccpr spids:[7000])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [7000]
                )
              ]
              spids: [7000]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$TARGET_OS')}
              arms: [
                (case_arm
                  pat_list: [{(Interix)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolUnary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$C89_COMPILER')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:C89_COMPILER spids:[7031])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(ntpath2posix)} {(-c)} 
                                                {(DQ ($ VSub_DollarName '$C89_COMPILER'))}
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [7032 7040]
                                      )
                                    }
                                  spids: [7031]
                                )
                              ]
                              spids: [7031]
                            )
                          ]
                          spids: [16777215 7028]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:C89_COMPILER spids:[7046])
                              op: Equal
                              rhs: {(CL.EXE)}
                              spids: [7046]
                            )
                          ]
                          spids: [7046]
                        )
                      ]
                      spids: [7043 7050]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolUnary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$C89_LINKER')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:C89_LINKER spids:[7067])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(ntpath2posix)} {(-c)} 
                                                {(DQ ($ VSub_DollarName '$C89_LINKER'))}
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [7068 7076]
                                      )
                                    }
                                  spids: [7067]
                                )
                              ]
                              spids: [7067]
                            )
                          ]
                          spids: [16777215 7064]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:C89_LINKER spids:[7082])
                              op: Equal
                              rhs: {(LINK.EXE)}
                              spids: [7082]
                            )
                          ]
                          spids: [7082]
                        )
                      ]
                      spids: [7079 7086]
                    )
                    (C {(vv)} {(SQ <'|'>)} {(DQ ($ VSub_DollarName '$C89_COMPILER') (' /HELP >&2'))})
                    (C {(vv)} {(SQ <'|'>)} {(DQ ($ VSub_DollarName '$C89_LINKER') (' /LINK >&2'))})
                  ]
                  spids: [7013 7014 7113 16777215]
                )
              ]
              spids: [7006 7010 7116]
            )
          ]
          spids: [6996 6997 7119 16777215]
        )
        (case_arm
          pat_list: [{(nwcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -version')
                )
              }
            )
          ]
          spids: [7121 7122 7147 16777215]
        )
        (case_arm
          pat_list: [{(pcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -v')
                )
              }
            )
          ]
          spids: [7149 7150 7175 16777215]
        )
        (case_arm
          pat_list: [{(pgi)}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ <'Warning: PGI detected. This unknown compiler has not yet\n'> 
                    <'    been tested for compatibility with mksh. Continue at your\n'> <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [7177 7178 7193 16777215]
        )
        (case_arm
          pat_list: [{(sdcc)}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ <'Warning: sdcc (http://sdcc.sourceforge.net), the small devices\n'> 
                    <'    C compiler for embedded systems detected. This has not yet\n'> <'    been tested for compatibility with mksh. Continue at your\n'> 
                    <'    own risk, please report success/failure to the developers.'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
          ]
          spids: [7195 7196 7212 16777215]
        )
        (case_arm
          pat_list: [{(sunpro)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7214 7215 7239 16777215]
        )
        (case_arm
          pat_list: [{(tcc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -v')
                )
              }
            )
          ]
          spids: [7241 7242 7267 16777215]
        )
        (case_arm
          pat_list: [{(tendra)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V 2>&1 | ') ('\t    grep -F -i -e version -e release')
                )
              }
            )
          ]
          spids: [7269 7270 7297 16777215]
        )
        (case_arm
          pat_list: [{(ucode)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -V')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -Wl,-V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7299 7300 7346 16777215]
        )
        (case_arm
          pat_list: [{(uslc)}]
          action: [
            (command.Case
              to_match: 
                {($ VSub_DollarName '$TARGET_OS') (Lit_Other ':') ($ VSub_DollarName '$TARGET_OSREV')}
              arms: [
                (case_arm
                  pat_list: [{(SCO_SV) (Lit_Other ':') (3.2) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:CFLAGS spids:[7372])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' -g'))}
                          spids: [7372]
                        )
                      ]
                      spids: [7372]
                    )
                    (C {(Lit_Other ':')} 
                      {
                        (DQ 
                          (word_part.BracedVarSub
                            token: <VSub_Name HAVE_CAN_OTWO>
                            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                            spids: [7382 7386]
                          ) 
                          (word_part.BracedVarSub
                            token: <VSub_Name HAVE_CAN_OPTIMISE>
                            suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                            spids: [7387 7391]
                          )
                        )
                      }
                    )
                  ]
                  spids: [7361 7365 7395 16777215]
                )
              ]
              spids: [7352 7358 7398]
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7348 7349 7422 16777215]
        )
        (case_arm
          pat_list: [{(watcom)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7424 7425 7449 16777215]
        )
        (case_arm
          pat_list: [{(xlc)}]
          action: [
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -qversion')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' ') ($ VSub_DollarName '$LIBS') 
                  (' -qversion=verbose')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} {(DQ ('ld -V'))})
          ]
          spids: [7451 7452 7510 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$ct'))} {(Lit_Other '=')} {(x) (DQ (untested))})
                (C {($ VSub_DollarName '$e')} {(DQ ('!!! detecting preprocessor failed'))})
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ct spids:[7539])
                  op: Equal
                  rhs: {(unknown)}
                  spids: [7539]
                )
              ]
              spids: [7539]
            )
            (C {(vv)} {(DQ ($ VSub_DollarName '$CC') (' --version'))})
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -v conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
            (C {(vv)} {(SQ <'|'>)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -V conftest.c ') 
                  ($ VSub_DollarName '$LIBS')
                )
              }
            )
          ]
          spids: [7512 7513 7593 16777215]
        )
      ]
      spids: [6514 6518 7595]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)} {(llvm)}]
          action: [(C {(vv)} {(SQ <'|'>)} {(DQ ('llc -version'))})]
          spids: [7603 7606 7620 16777215]
        )
      ]
      spids: [7597 7601 7622]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:etd spids:[7624])
          op: Equal
          rhs: {(DQ (' on ') ($ VSub_DollarName '$et'))}
          spids: [7624]
        )
      ]
      spids: [7624]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$et')}
      arms: [
        (case_arm
          pat_list: [{(klibc)}]
          action: [(C {(add_cppflags)} {(-DMKSH_NO_LIMITS)})]
          spids: [7636 7637 7645 16777215]
        )
        (case_arm
          pat_list: [{(unknown)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:etd spids:[7655])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [7655]
                )
              ]
              spids: [7655]
            )
          ]
          spids: [7647 7648 7658 16777215]
        )
        (case_arm pat_list:[{(Lit_Other '*')}] spids:[7660 7661 7668 16777215])
      ]
      spids: [7630 7634 7670]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ($ VSub_DollarName '$bi') ('==> which compiler seems to be used...') 
          ($ VSub_DollarName '$ao') (' ') ($ VSub_DollarName '$ui') ($ VSub_DollarName '$ct') ($ VSub_DollarName '$etd') 
          ($ VSub_DollarName '$ao')
        )
      }
    )
    (C {(rmf)} {(conftest.c)} {(conftest.o)} {(conftest)} {(a.out) (Lit_Other '*')} 
      {(a.exe) (Lit_Other '*')} {(conftest.exe) (Lit_Other '*')} {(vv.out)}
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:save_NOWARN spids:[7714])
          op: Equal
          rhs: {($ VSub_DollarName '$NOWARN')}
          spids: [7714]
        )
      ]
      spids: [7714]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:NOWARN spids:[7717])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [7717]
        )
      ]
      spids: [7717]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:DOWARN spids:[7719])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [7719]
        )
      ]
      spids: [7719]
    )
    (C {(ac_flags)} {(0)} {(compiler_works)} {(SQ )} {(SQ <'if the compiler works'>)})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_COMPILER_WORKS')})
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:HAVE_COMPILER_KNOWN spids:[7748])
          op: Equal
          rhs: {(0)}
          spids: [7748]
        )
      ]
      spids: [7748]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(unknown)})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HAVE_COMPILER_KNOWN spids:[7761])
              op: Equal
              rhs: {(1)}
              spids: [7761]
            )
          ]
          spids: [7761]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(ac_ifcpp)} {(SQ <'if 0'>)} {(compiler_fails)} {(SQ )} 
                  {(SQ <'if the compiler does not fail correctly'>)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_CFLAGS spids:[7787])
                  op: Equal
                  rhs: {($ VSub_DollarName '$CFLAGS')}
                  spids: [7787]
                )
              ]
              spids: [7787]
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_CAN_DELEXE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(x)})
                    spids: [7794 7798]
                  )
                )
              }
            )
            (command.Case
              to_match: {($ VSub_DollarName '$ct')}
              arms: [
                (case_arm
                  pat_list: [{(dec)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:CFLAGS spids:[7813])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$CFLAGS') (' ') (${ VSub_Name ccpl) (-non_shared))
                            }
                          spids: [7813]
                        )
                      ]
                      spids: [7813]
                    )
                    (command.SimpleCommand
                      words: [
                        {(ac_testn)}
                        {(can_delexe)}
                        {(compiler_fails)}
                        {(0)}
                        {(SQ <'for the -non_shared linker option'>)}
                      ]
                      redirects: [
                        (redir.HereDoc
                          op: <Redir_DLessDash '<<-'>
                          fd: 16777215
                          here_begin: {(EOF)}
                          here_end_span_id: 7842
                          stdin_parts: [
                            ('#include <unistd.h>\n')
                            ('int main(void) { return (isatty(0)); }\n')
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [7809 7810 7844 16777215]
                )
                (case_arm
                  pat_list: [{(dmc)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:CFLAGS spids:[7851])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$CFLAGS') (' ') (${ VSub_Name ccpl) 
                                (/DELEXECUTABLE)
                              )
                            }
                          spids: [7851]
                        )
                      ]
                      spids: [7851]
                    )
                    (command.SimpleCommand
                      words: [
                        {(ac_testn)}
                        {(can_delexe)}
                        {(compiler_fails)}
                        {(0)}
                        {(SQ <'for the /DELEXECUTABLE linker option'>)}
                      ]
                      redirects: [
                        (redir.HereDoc
                          op: <Redir_DLessDash '<<-'>
                          fd: 16777215
                          here_begin: {(EOF)}
                          here_end_span_id: 7880
                          stdin_parts: [
                            ('#include <unistd.h>\n')
                            ('int main(void) { return (isatty(0)); }\n')
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [7847 7848 7882 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
                  spids: [7885 7886 7894 16777215]
                )
              ]
              spids: [7802 7806 7897]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_DELEXE')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:CFLAGS spids:[7910])
                      op: Equal
                      rhs: {($ VSub_DollarName '$save_CFLAGS')}
                      spids: [7910]
                    )
                  ]
                  spids: [7910]
                )
              ]
            )
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(compiler_still_fails)}
                {(SQ )}
                {(SQ <'if the compiler still does not fail correctly'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 7929
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_COMPILER_STILL_FAILS')})
                (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
          spids: [16777215 7784]
        )
      ]
      spids: [16777215 7945]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(ac_ifcpp)} {(SQ <'ifdef __TINYC__'>)} {(couldbe_tcc)} {(SQ <'!'>)} {(compiler_known)} 
                  {(0)} {(SQ <'if this could be tcc'>)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ct spids:[7975])
                  op: Equal
                  rhs: {(tcc)}
                  spids: [7975]
                )
              ]
              spids: [7975]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CPP spids:[7979])
                  op: Equal
                  rhs: {(SQ <'cpp -D__TINYC__'>)}
                  spids: [7979]
                )
              ]
              spids: [7979]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_COMPILER_KNOWN spids:[7985])
                  op: Equal
                  rhs: {(1)}
                  spids: [7985]
                )
              ]
              spids: [7985]
            )
          ]
          spids: [16777215 7972]
        )
      ]
      spids: [16777215 7988]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{(bcc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8001])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (-w))}
                  spids: [8001]
                )
              ]
              spids: [8001]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8010])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) ('-w!'))}
                  spids: [8010]
                )
              ]
              spids: [8010]
            )
          ]
          spids: [7997 7998 8019 16777215]
        )
        (case_arm pat_list:[{(dec)}] spids:[8021 8022 8029 16777215])
        (case_arm
          pat_list: [{(dmc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8035])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (-w))}
                  spids: [8035]
                )
              ]
              spids: [8035]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8044])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (-wx))}
                  spids: [8044]
                )
              ]
              spids: [8044]
            )
          ]
          spids: [8031 8032 8053 16777215]
        )
        (case_arm
          pat_list: [{(hpcc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8059])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [8059]
                )
              ]
              spids: [8059]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8062])
                  op: Equal
                  rhs: {(Lit_Other '+') (We)}
                  spids: [8062]
                )
              ]
              spids: [8062]
            )
          ]
          spids: [8055 8056 8067 16777215]
        )
        (case_arm
          pat_list: [{(kencc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8073])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [8073]
                )
              ]
              spids: [8073]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8076])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [8076]
                )
              ]
              spids: [8076]
            )
          ]
          spids: [8069 8070 8079 16777215]
        )
        (case_arm
          pat_list: [{(mipspro)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8085])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [8085]
                )
              ]
              spids: [8085]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8088])
                  op: Equal
                  rhs: {(DQ ('-diag_error 1-10000'))}
                  spids: [8088]
                )
              ]
              spids: [8088]
            )
          ]
          spids: [8081 8082 8094 16777215]
        )
        (case_arm
          pat_list: [{(msc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8100])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (/w))}
                  spids: [8100]
                )
              ]
              spids: [8100]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8109])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ccpc) (/WX))}
                  spids: [8109]
                )
              ]
              spids: [8109]
            )
          ]
          spids: [8096 8097 8118 16777215]
        )
        (case_arm
          pat_list: [{(sunpro)}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$save_NOWARN'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8139])
                      op: Equal
                      rhs: {(SQ <'-errwarn=%none'>)}
                      spids: [8139]
                    )
                  ]
                  spids: [8139]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(errwarnnone)} {(DQ ($ VSub_DollarName '$save_NOWARN'))})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_ERRWARNNONE')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8166])
                      op: Equal
                      rhs: (word.EmptyWord)
                      spids: [8166]
                    )
                  ]
                  spids: [8166]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(errwarnall)} {(DQ ('-errwarn=%all'))})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_ERRWARNALL')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:DOWARN spids:[8190])
                      op: Equal
                      rhs: {(DQ ('-errwarn=%all'))}
                      spids: [8190]
                    )
                  ]
                  spids: [8190]
                )
              ]
            )
          ]
          spids: [8120 8121 8196 16777215]
        )
        (case_arm
          pat_list: [{(tendra)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8202])
                  op: Equal
                  rhs: {(-w)}
                  spids: [8202]
                )
              ]
              spids: [8202]
            )
          ]
          spids: [8198 8199 8206 16777215]
        )
        (case_arm
          pat_list: [{(ucode)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8212])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [8212]
                )
              ]
              spids: [8212]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8215])
                  op: Equal
                  rhs: {(-w2)}
                  spids: [8215]
                )
              ]
              spids: [8215]
            )
          ]
          spids: [8208 8209 8219 16777215]
        )
        (case_arm
          pat_list: [{(watcom)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8225])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [8225]
                )
              ]
              spids: [8225]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8228])
                  op: Equal
                  rhs: {(-Wc) (Lit_Comma ',') (-we)}
                  spids: [8228]
                )
              ]
              spids: [8228]
            )
          ]
          spids: [8221 8222 8234 16777215]
        )
        (case_arm
          pat_list: [{(xlc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8240])
                  op: Equal
                  rhs: {(-qflag) (Lit_Other '=') (i) (Lit_Other ':') (e)}
                  spids: [8240]
                )
              ]
              spids: [8240]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DOWARN spids:[8248])
                  op: Equal
                  rhs: {(-qflag) (Lit_Other '=') (i) (Lit_Other ':') (i)}
                  spids: [8248]
                )
              ]
              spids: [8248]
            )
          ]
          spids: [8236 8237 8256 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$save_NOWARN'))} {(Lit_Other '=')} {(x) (DQ )})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8277])
                      op: Equal
                      rhs: {(-Wno-error)}
                      spids: [8277]
                    )
                  ]
                  spids: [8277]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(wnoerror)} {(DQ ($ VSub_DollarName '$save_NOWARN'))})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_WNOERROR')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:save_NOWARN spids:[8302])
                      op: Equal
                      rhs: (word.EmptyWord)
                      spids: [8302]
                    )
                  ]
                  spids: [8302]
                )
              ]
            )
            (C {(ac_flags)} {(0)} {(werror)} {(-Werror)})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_WERROR')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:DOWARN spids:[8324])
                      op: Equal
                      rhs: {(-Werror)}
                      spids: [8324]
                    )
                  ]
                  spids: [8324]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(icc)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:DOWARN spids:[8338])
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$DOWARN') (' -wd1419'))}
                      spids: [8338]
                    )
                  ]
                  spids: [8338]
                )
              ]
            )
          ]
          spids: [8258 8259 8345 16777215]
        )
      ]
      spids: [7991 7995 8347]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:NOWARN spids:[8349])
          op: Equal
          rhs: {($ VSub_DollarName '$save_NOWARN')}
          spids: [8349]
        )
      ]
      spids: [8349]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:i spids:[8362])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(echo)} {(Lit_Other ':') (DQ ($ VSub_DollarName '$orig_CFLAGS'))})
                          (C {(sed)} {(SQ <'s/^://'>)})
                          (C {(tr)} {(-c)} {(-d)} 
                            {($ VSub_DollarName '$alll') ($ VSub_DollarName '$allu') 
                              ($ VSub_DollarName '$alln')
                            }
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [8363 8390]
              )
            }
          spids: [8362]
        )
      ]
      spids: [8362]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(x) (DQ ($ VSub_DollarName '$i'))} {(Lit_Other '=')} {(x) (DQ )})
        (command.Case
          to_match: {($ VSub_DollarName '$ct')}
          arms: [
            (case_arm
              pat_list: [{(hpcc)}]
              action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:phase spids:[8420])
                      op: Equal
                      rhs: {(u)}
                      spids: [8420]
                    )
                  ]
                  spids: [8420]
                )
                (C {(ac_flags)} {(1)} {(otwo)} {(Lit_Other '+') (O2)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:phase spids:[8434])
                      op: Equal
                      rhs: {(x)}
                      spids: [8434]
                    )
                  ]
                  spids: [8434]
                )
              ]
              spids: [8416 8417 8438 16777215]
            )
            (case_arm
              pat_list: [{(kencc)} {(tcc)} {(tendra)}]
              spids: [8440 8445 8452 16777215]
            )
            (case_arm
              pat_list: [{(sunpro)}]
              action: [
                (command.SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})
                    (redir.HereDoc
                      op: <Redir_DLessDash '<<-'>
                      fd: 16777215
                      here_begin: {(SQ <EOF>)}
                      here_end_span_id: 8473
                      stdin_parts: [
                        ('#include <unistd.h>\n')
                        ('int main(void) { return (isatty(0)); }\n')
                        ('#define __IDSTRING_CONCAT(l,p)\t__LINTED__ ## l ## _ ## p\n')
                        ('#define __IDSTRING_EXPAND(l,p)\t__IDSTRING_CONCAT(l,p)\n')
                        ('#define pad\t\t\tvoid __IDSTRING_EXPAND(__LINE__,x)(void) { }\n')
                      ]
                    )
                  ]
                )
                (command.Pipeline
                  children: [
                    (C {(yes)} {(pad)})
                    (command.SimpleCommand
                      words: [{(head)} {(-n)} {(256)}]
                      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(x)})]
                    )
                  ]
                  negated: F
                )
                (command.SimpleCommand
                  words: [{(ac_flags)} {(-)} {(1)} {(otwo)} {(-xO2)}]
                  redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
                )
                (C {(rmf)} {(x)})
              ]
              spids: [8454 8455 8510 16777215]
            )
            (case_arm
              pat_list: [{(xlc)}]
              action: [
                (C {(ac_flags)} {(1)} {(othree)} {(DQ ('-O3 -qstrict'))})
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_OTHREE')})
                    (C {(ac_flags)} {(1)} {(otwo)} {(-O2)})
                  ]
                )
              ]
              spids: [8512 8513 8546 16777215]
            )
            (case_arm
              pat_list: [{(Lit_Other '*')}]
              action: [
                (C {(ac_flags)} {(1)} {(otwo)} {(-O2)})
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_OTWO')})
                    (C {(ac_flags)} {(1)} {(optimise)} {(-O)})
                  ]
                )
              ]
              spids: [8548 8549 8580 16777215]
            )
          ]
          spids: [8410 8414 8582]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:i spids:[8587])
          op: Equal
          rhs: {(0)}
          spids: [8587]
        )
      ]
      spids: [8587]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$ct')}
      arms: [
        (case_arm
          pat_list: [{(bcc)}]
          action: [
            (C {(ac_flags)} {(1)} {(strpool)} {(DQ (${ VSub_Name ccpc) (-d))} 
              {(SQ <'if string pooling can be enabled'>)}
            )
          ]
          spids: [8596 8597 8618 16777215]
        )
        (case_arm
          pat_list: [{(clang)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[8624])
                  op: Equal
                  rhs: {(1)}
                  spids: [8624]
                )
              ]
              spids: [8624]
            )
          ]
          spids: [8620 8621 8628 16777215]
        )
        (case_arm
          pat_list: [{(dec)}]
          action: [
            (C {(ac_flags)} {(0)} {(verb)} {(-verbose)})
            (C {(ac_flags)} {(1)} {(rodata)} {(-readonly_strings)})
          ]
          spids: [8630 8631 8652 16777215]
        )
        (case_arm
          pat_list: [{(dmc)}]
          action: [
            (C {(ac_flags)} {(1)} {(decl)} {(DQ (${ VSub_Name ccpc) (-r))} 
              {(SQ <'for strict prototype checks'>)}
            )
            (C {(ac_flags)} {(1)} {(schk)} {(DQ (${ VSub_Name ccpc) (-s))} 
              {(SQ <'for stack overflow checking'>)}
            )
          ]
          spids: [8654 8655 8694 16777215]
        )
        (case_arm
          pat_list: [{(gcc)}]
          action: [
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:NOWARN spids:[8704])
                      op: Equal
                      rhs: {($ VSub_DollarName '$DOWARN')}
                      spids: [8704]
                    )
                  ]
                  spids: [8704]
                )
              terminator: <Op_Semi ';'>
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:phase spids:[8708])
                  op: Equal
                  rhs: {(u)}
                  spids: [8708]
                )
              ]
              spids: [8708]
            )
            (C {(ac_flags)} {(1)} {(wnodeprecateddecls)} {(-Wno-deprecated-declarations)})
            (C {(ac_flags)} {(1)} {(no_eh_frame)} {(-fno-asynchronous-unwind-tables)})
            (C {(ac_flags)} {(1)} {(fnostrictaliasing)} {(-fno-strict-aliasing)})
            (C {(ac_flags)} {(1)} {(fstackprotectorstrong)} {(-fstack-protector-strong)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} 
                  {($ VSub_DollarName '$HAVE_CAN_FSTACKPROTECTORSTRONG')}
                )
                (C {(ac_flags)} {(1)} {(fstackprotectorall)} {(-fstack-protector-all)})
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(dragonegg)})
                (command.Case
                  to_match: 
                    {
                      (DQ (' ') ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                        ($ VSub_DollarName '$LDFLAGS') (' ')
                      )
                    }
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Other '*') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) 
                          (-fplugin) (Lit_Other '=') (Lit_Other '*') (dragonegg) (Lit_Other '*')
                        }
                      ]
                      spids: [8798 8805 8807 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [
                        (C {(ac_flags)} {(1)} {(fplugin_dragonegg)} 
                          {(-fplugin) (Lit_Other '=') (dragonegg)}
                        )
                      ]
                      spids: [8810 8811 8823 16777215]
                    )
                  ]
                  spids: [8783 8795 8826]
                )
              ]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$cm')}
              arms: [
                (case_arm
                  pat_list: [{(combine)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[8840])
                          op: Equal
                          rhs: {(0)}
                          spids: [8840]
                        )
                      ]
                      spids: [8840]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:checks spids:[8844])
                          op: Equal
                          rhs: {(SQ <'7 8'>)}
                          spids: [8844]
                        )
                      ]
                      spids: [8844]
                    )
                  ]
                  spids: [8836 8837 8850 16777215]
                )
                (case_arm
                  pat_list: [{(lto)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[8857])
                          op: Equal
                          rhs: {(0)}
                          spids: [8857]
                        )
                      ]
                      spids: [8857]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:checks spids:[8861])
                          op: Equal
                          rhs: {(SQ <'1 2 3 4 5 6 7 8'>)}
                          spids: [8861]
                        )
                      ]
                      spids: [8861]
                    )
                  ]
                  spids: [8853 8854 8867 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[8874])
                          op: Equal
                          rhs: {(1)}
                          spids: [8874]
                        )
                      ]
                      spids: [8874]
                    )
                  ]
                  spids: [8870 8871 8878 16777215]
                )
              ]
              spids: [8829 8833 8881]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(1)})
                (command.ForEach
                  iter_name: what
                  iter_words: [{($ VSub_DollarName '$checks')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(1)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ VSub_DollarName '$what')}
                          arms: [
                            (case_arm
                              pat_list: [{(1)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[8929])
                                      op: Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                      spids: [8929]
                                    )
                                  ]
                                  spids: [8929]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[8935])
                                      op: Equal
                                      rhs: {(SQ <-fuse-linker-plugin>)}
                                      spids: [8935]
                                    )
                                  ]
                                  spids: [8935]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[8941])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [8941]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[8944])
                                      op: Equal
                                      rhs: {(fltojs_lp)}
                                      spids: [8944]
                                    )
                                  ]
                                  spids: [8941]
                                )
                              ]
                              spids: [8926 8927 8947 16777215]
                            )
                            (case_arm
                              pat_list: [{(2)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[8953])
                                      op: Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                      spids: [8953]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[8958])
                                      op: Equal
                                      rhs: {(SQ )}
                                      spids: [8958]
                                    )
                                  ]
                                  spids: [8953]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[8963])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [8963]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[8966])
                                      op: Equal
                                      rhs: {(fltojs_nn)}
                                      spids: [8966]
                                    )
                                  ]
                                  spids: [8963]
                                )
                              ]
                              spids: [8950 8951 8969 16777215]
                            )
                            (case_arm
                              pat_list: [{(3)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[8975])
                                      op: Equal
                                      rhs: {(SQ <'-flto=jobserver'>)}
                                      spids: [8975]
                                    )
                                  ]
                                  spids: [8975]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[8981])
                                      op: Equal
                                      rhs: {(SQ <'-fno-use-linker-plugin -fwhole-program'>)}
                                      spids: [8981]
                                    )
                                  ]
                                  spids: [8981]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[8987])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [8987]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[8990])
                                      op: Equal
                                      rhs: {(fltojs_np)}
                                      spids: [8990]
                                    )
                                  ]
                                  spids: [8987]
                                )
                              ]
                              spids: [8972 8973 8993 16777215]
                            )
                            (case_arm
                              pat_list: [{(4)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[8999])
                                      op: Equal
                                      rhs: {(SQ <-flto>)}
                                      spids: [8999]
                                    )
                                  ]
                                  spids: [8999]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[9005])
                                      op: Equal
                                      rhs: {(SQ <-fuse-linker-plugin>)}
                                      spids: [9005]
                                    )
                                  ]
                                  spids: [9005]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[9011])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [9011]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[9014])
                                      op: Equal
                                      rhs: {(fltons_lp)}
                                      spids: [9014]
                                    )
                                  ]
                                  spids: [9011]
                                )
                              ]
                              spids: [8996 8997 9017 16777215]
                            )
                            (case_arm
                              pat_list: [{(5)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[9023])
                                      op: Equal
                                      rhs: {(SQ <-flto>)}
                                      spids: [9023]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[9028])
                                      op: Equal
                                      rhs: {(SQ )}
                                      spids: [9028]
                                    )
                                  ]
                                  spids: [9023]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[9033])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [9033]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[9036])
                                      op: Equal
                                      rhs: {(fltons_nn)}
                                      spids: [9036]
                                    )
                                  ]
                                  spids: [9033]
                                )
                              ]
                              spids: [9020 9021 9039 16777215]
                            )
                            (case_arm
                              pat_list: [{(6)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[9045])
                                      op: Equal
                                      rhs: {(SQ <-flto>)}
                                      spids: [9045]
                                    )
                                  ]
                                  spids: [9045]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[9051])
                                      op: Equal
                                      rhs: {(SQ <'-fno-use-linker-plugin -fwhole-program'>)}
                                      spids: [9051]
                                    )
                                  ]
                                  spids: [9051]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[9057])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [9057]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[9060])
                                      op: Equal
                                      rhs: {(fltons_np)}
                                      spids: [9060]
                                    )
                                  ]
                                  spids: [9057]
                                )
                              ]
                              spids: [9042 9043 9063 16777215]
                            )
                            (case_arm
                              pat_list: [{(7)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_cflags spids:[9069])
                                      op: Equal
                                      rhs: {(SQ <'-fwhole-program --combine'>)}
                                      spids: [9069]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_ldflags spids:[9074])
                                      op: Equal
                                      rhs: {(SQ )}
                                      spids: [9074]
                                    )
                                  ]
                                  spids: [9069]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_use spids:[9079])
                                      op: Equal
                                      rhs: {(0)}
                                      spids: [9079]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:t_name spids:[9082])
                                      op: Equal
                                      rhs: {(combine)}
                                      spids: [9082]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:cm spids:[9085])
                                      op: Equal
                                      rhs: {(combine)}
                                      spids: [9085]
                                    )
                                  ]
                                  spids: [9079]
                                )
                              ]
                              spids: [9066 9067 9088 16777215]
                            )
                            (case_arm
                              pat_list: [{(8)}]
                              action: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:fv spids:[9094])
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [9094]
                                    )
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:cm spids:[9097])
                                      op: Equal
                                      rhs: {(normal)}
                                      spids: [9097]
                                    )
                                  ]
                                  spids: [9094]
                                )
                              ]
                              spids: [9091 9092 9100 16777215]
                            )
                          ]
                          spids: [8919 8923 9103]
                        )
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(1)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                        )
                        (C {(ac_flags)} {($ VSub_DollarName '$t_use')} {($ VSub_DollarName '$t_name')} 
                          {(DQ ($ VSub_DollarName '$t_cflags'))} {(DQ ('if gcc supports ') ($ VSub_DollarName '$t_cflags') (' ') ($ VSub_DollarName '$t_ldflags'))} 
                          {(DQ ($ VSub_DollarName '$t_ldflags'))}
                        )
                      ]
                      spids: [8903 9143]
                    )
                  spids: [8899 8901]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[9146])
                  op: Equal
                  rhs: {(1)}
                  spids: [9146]
                )
              ]
              spids: [9146]
            )
          ]
          spids: [8696 8697 9150 16777215]
        )
        (case_arm
          pat_list: [{(hpcc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:phase spids:[9156])
                  op: Equal
                  rhs: {(u)}
                  spids: [9156]
                )
              ]
              spids: [9156]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:phase spids:[9168])
                  op: Equal
                  rhs: {(x)}
                  spids: [9168]
                )
              ]
              spids: [9168]
            )
          ]
          spids: [9152 9153 9172 16777215]
        )
        (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.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[9205])
                  op: Equal
                  rhs: {(1)}
                  spids: [9205]
                )
              ]
              spids: [9205]
            )
          ]
          spids: [9174 9175 9209 16777215]
        )
        (case_arm
          pat_list: [{(mipspro)}]
          action: [
            (C {(ac_flags)} {(1)} {(fullwarn)} {(-fullwarn)} {(SQ <'for remark output support'>)})
          ]
          spids: [9211 9212 9228 16777215]
        )
        (case_arm
          pat_list: [{(msc)}]
          action: [
            (C {(ac_flags)} {(1)} {(strpool)} {(DQ (${ VSub_Name ccpc) (/GF))} 
              {(SQ <'if string pooling can be enabled'>)}
            )
            (command.SimpleCommand
              words: [{(echo)} {(SQ <'int main(void) { char test[64] = ""; return (*test); }'>)}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})]
            )
            (command.SimpleCommand
              words: [
                {(ac_flags)}
                {(-)}
                {(1)}
                {(stackon)}
                {(DQ (${ VSub_Name ccpc) (/GZ))}
                {(SQ <'if stack checks can be enabled'>)}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (command.SimpleCommand
              words: [
                {(ac_flags)}
                {(-)}
                {(1)}
                {(stckall)}
                {(DQ (${ VSub_Name ccpc) (/Ge))}
                {(SQ <'stack checks for all functions'>)}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (command.SimpleCommand
              words: [
                {(ac_flags)}
                {(-)}
                {(1)}
                {(secuchk)}
                {(DQ (${ VSub_Name ccpc) (/GS))}
                {(SQ <'for compiler security checks'>)}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})]
            )
            (C {(rmf)} {(x)})
            (C {(ac_flags)} {(1)} {(wall)} {(DQ (${ VSub_Name ccpc) (/Wall))} 
              {(SQ <'to enable all warnings'>)}
            )
            (C {(ac_flags)} {(1)} {(wp64)} {(DQ (${ VSub_Name ccpc) (/Wp64))} 
              {(SQ <'to enable 64-bit warnings'>)}
            )
          ]
          spids: [9230 9231 9372 16777215]
        )
        (case_arm
          pat_list: [{(nwcc)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[9378])
                  op: Equal
                  rhs: {(1)}
                  spids: [9378]
                )
              ]
              spids: [9378]
            )
          ]
          spids: [9374 9375 9386 16777215]
        )
        (case_arm
          pat_list: [{(sunpro)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:phase spids:[9392])
                  op: Equal
                  rhs: {(u)}
                  spids: [9392]
                )
              ]
              spids: [9392]
            )
            (C {(ac_flags)} {(1)} {(v)} {(-v)})
            (C {(ac_flags)} {(1)} {(ipo)} {(-xipo)} {(SQ <'for cross-module optimisation'>)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:phase spids:[9418])
                  op: Equal
                  rhs: {(x)}
                  spids: [9418]
                )
              ]
              spids: [9418]
            )
          ]
          spids: [9388 9389 9422 16777215]
        )
        (case_arm
          pat_list: [{(tcc)}]
          action: [(C {(Lit_Other ':')})]
          spids: [9424 9425 9434 16777215]
        )
        (case_arm
          pat_list: [{(tendra)}]
          action: [
            (C {(ac_flags)} {(0)} {(ysystem)} {(-Ysystem)})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_YSYSTEM')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[9459])
                      op: Equal
                      rhs: {(DQ ('-Ysystem ') ($ VSub_DollarName '$CPPFLAGS'))}
                      spids: [9459]
                    )
                  ]
                  spids: [9459]
                )
              ]
            )
            (C {(ac_flags)} {(1)} {(extansi)} {(-Xa)})
          ]
          spids: [9436 9437 9475 16777215]
        )
        (case_arm
          pat_list: [{(xlc)}]
          action: [
            (C {(ac_flags)} {(1)} {(rodata)} {(DQ ('-qro -qroconst -qroptr'))})
            (C {(ac_flags)} {(1)} {(rtcheck)} {(-qcheck) (Lit_Other '=') (all)})
            (C {(ac_flags)} {(1)} {(wformat)} {(DQ ('-qformat=all -qformat=nozln'))})
          ]
          spids: [9477 9478 9522 16777215]
        )
      ]
      spids: [8590 8594 9524]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$i')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(ac_flags)} {(1)} {(wall)} {(-Wall)})
            (C {(ac_flags)} {(1)} {(fwrapv)} {(-fwrapv)})
          ]
          spids: [16777215 9540]
        )
      ]
      spids: [16777215 9560]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:phase spids:[9563])
          op: Equal
          rhs: {(x)}
          spids: [9563]
        )
      ]
      spids: [9563]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:NOWARN spids:[9569])
          op: Equal
          rhs: {($ VSub_DollarName '$DOWARN')}
          spids: [9569]
        )
      ]
      spids: [9569]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {($ VSub_DollarName '$ct')} {(Lit_Other '=')} {(pcc)})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:phase spids:[9582])
              op: Equal
              rhs: {(u)}
              spids: [9582]
            )
          ]
          spids: [9582]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(attribute_bounded)} {(SQ )} {(SQ <'for __attribute__((__bounded__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9630
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <string.h>\n')
            ('#undef __attribute__\n')
            ('int xcopy(const void *, void *, size_t)\n')
            ('    __attribute__((__bounded__(__buffer__, 1, 3)))\n')
            ('    __attribute__((__bounded__(__buffer__, 2, 3)));\n')
            ('int main(int ac, char *av[]) { return (xcopy(av[0], av[--ac], 1)); }\n')
            ('int xcopy(const void *s, void *d, size_t n) {\n')
            ('/*\n')
            (' * if memmove does not exist, we are not on a system\n')
            (' * with GCC with __bounded__ attribute either so poo\n')
            (' */\n')
            ('memmove(d, s, n); return ((int)n);\n')
            ('}\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(attribute_format)} {(SQ )} {(SQ <'for __attribute__((__format__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9660
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#define fprintf printfoo\n')
            ('#include <stdio.h>\n')
            ('#undef __attribute__\n')
            ('#undef fprintf\n')
            ('extern int fprintf(FILE *, const char *format, ...)\n')
            ('    __attribute__((__format__(__printf__, 2, 3)));\n')
            ('int main(int ac, char **av) { return (fprintf(stderr, "%s%d", *av, ac)); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(attribute_noreturn)} {(SQ )} {(SQ <'for __attribute__((__noreturn__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9688
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <stdlib.h>\n')
            ('#undef __attribute__\n')
            ('void fnord(void) __attribute__((__noreturn__));\n')
            ('int main(void) { fnord(); }\n')
            ('void fnord(void) { exit(0); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(attribute_pure)} {(SQ )} {(SQ <'for __attribute__((__pure__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 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 <unistd.h>\n')
            ('#undef __attribute__\n')
            ('int foo(const char *) __attribute__((__pure__));\n')
            ('int main(int ac, char **av) { return (foo(av[ac - 1]) + isatty(0)); }\n')
            ('int foo(const char *s) { return ((int)s[0]); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(attribute_unused)} {(SQ )} {(SQ <'for __attribute__((__unused__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9743
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <unistd.h>\n')
            ('#undef __attribute__\n')
            ('int main(int ac __attribute__((__unused__)), char **av\n')
            ('    __attribute__((__unused__))) { return (isatty(0)); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(attribute_used)} {(SQ )} {(SQ <'for __attribute__((__used__))'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 9770
          stdin_parts: [
            ('#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))\n')
            ('extern int thiswillneverbedefinedIhope(void);\n')
            ('/* force a failure: TenDRA and gcc 1.42 have false positive here */\n')
            ('int main(void) { return (thiswillneverbedefinedIhope()); }\n')
            ('#else\n')
            ('#include <unistd.h>\n')
            ('#undef __attribute__\n')
            ('static const char fnord[] __attribute__((__used__)) = "42";\n')
            ('int main(void) { return (isatty(0)); }\n')
            ('#endif\n')
          ]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:NOWARN spids:[9775])
          op: Equal
          rhs: {($ VSub_DollarName '$save_NOWARN')}
          spids: [9775]
        )
      ]
      spids: [9775]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:phase spids:[9778])
          op: Equal
          rhs: {(x)}
          spids: [9778]
        )
      ]
      spids: [9778]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_SMALL'>)} {(isset_MKSH_SMALL)} {(SQ )} 
                  {(DQ ('if a reduced-feature mksh is requested'))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_NICE>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [9817 9821]
                  )
                )
              }
            )
            (C {(Lit_Other ':')} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name HAVE_PERSISTENT_HISTORY>
                    suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                    spids: [9828 9832]
                  )
                )
              }
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:check_categories spids:[9836])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$check_categories') (' smksh'))}
                  spids: [9836]
                )
              ]
              spids: [9836]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_ISSET_MKSH_CONSERVATIVE_FDS spids:[9843])
                  op: Equal
                  rhs: {(1)}
                  spids: [9843]
                )
              ]
              spids: [9843]
            )
          ]
          spids: [16777215 9811]
        )
      ]
      spids: [16777215 9849]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'if defined(MKSH_BINSHPOSIX) || defined(MKSH_BINSHREDUCED)'>)} 
          {(isset_MKSH_BINSH)} {(SQ )} {(SQ <'if invoking as sh should be handled specially'>)}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[9872])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' binsh'))}
              spids: [9872]
            )
          ]
          spids: [9872]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_UNEMPLOYED'>)} {(isset_MKSH_UNEMPLOYED)} {(SQ )} 
          {(DQ ('if mksh will be built without job control'))}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[9899])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' arge'))}
              spids: [9899]
            )
          ]
          spids: [9899]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_NOPROSPECTOFWORK'>)} {(isset_MKSH_NOPROSPECTOFWORK)} {(SQ )} 
          {(DQ ('if mksh will be built without job signals'))}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[9926])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' arge nojsig'))}
              spids: [9926]
            )
          ]
          spids: [9926]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_ASSUME_UTF8'>)} {(isset_MKSH_ASSUME_UTF8)} {(SQ )} 
          {(SQ <'if the default UTF-8 mode is specified'>)}
        )
        (C {(Lit_Other ':')} 
          {
            (DQ 
              (word_part.BracedVarSub
                token: <VSub_Name HAVE_SETLOCALE_CTYPE>
                suffix_op: (suffix_op.StringUnary op_id:VTest_Equals arg_word:{(0)})
                spids: [9954 9958]
              )
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_CONSERVATIVE_FDS'>)} {(isset_MKSH_CONSERVATIVE_FDS)} {(SQ )} 
          {(SQ <'if traditional/conservative fd use is requested'>)}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[9982])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' convfds'))}
              spids: [9982]
            )
          ]
          spids: [9982]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(ac_ifcpp)} {(SQ <'ifdef MKSH_MIDNIGHTBSD01ASH_COMPAT'>)} 
          {(isset_MKSH_MIDNIGHTBSD01ASH_COMPAT)} {(SQ )} {(SQ <'if the MidnightBSD 0.1 ash compatibility mode is requested'>)}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[10027])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' mnbsdash'))}
              spids: [10027]
            )
          ]
          spids: [10027]
        )
      ]
    )
    (C {(ac_header)} {(sys/time.h)} {(sys/types.h)})
    (C {(ac_header)} {(time.h)} {(sys/types.h)})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(DQ (11))} {(Lit_Other '=')} 
          {(DQ ($ VSub_DollarName '$HAVE_SYS_TIME_H') ($ VSub_DollarName '$HAVE_TIME_H'))}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HAVE_BOTH_TIME_H spids:[10070])
              op: Equal
              rhs: {(0)}
              spids: [10070]
            )
          ]
          spids: [10070]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(both_time_h)}
        {(SQ )}
        {(SQ <'whether <sys/time.h> and <time.h> can both be included'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10094
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <sys/time.h>\n')
            ('#include <time.h>\n')
            ('#include <unistd.h>\n')
            ('int main(void) { struct tm tm; return ((int)sizeof(tm) + isatty(0)); }\n')
          ]
        )
      ]
    )
    (C {(ac_header)} {(sys/bsdtypes.h)})
    (C {(ac_header)} {(sys/file.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/mkdev.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/mman.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/param.h)})
    (C {(ac_header)} {(sys/resource.h)} {(sys/types.h)} {(_time)})
    (C {(ac_header)} {(sys/select.h)} {(sys/types.h)})
    (C {(ac_header)} {(sys/sysmacros.h)})
    (C {(ac_header)} {(bstring.h)})
    (C {(ac_header)} {(grp.h)} {(sys/types.h)})
    (C {(ac_header)} {(io.h)})
    (C {(ac_header)} {(libgen.h)})
    (C {(ac_header)} {(libutil.h)} {(sys/types.h)})
    (C {(ac_header)} {(paths.h)})
    (C {(ac_header)} {(stdint.h)} {(stdarg.h)})
    (C {(ac_header)} {(strings.h)} {(sys/types.h)} {(string.h)})
    (C {(ac_header)} {(termios.h)})
    (C {(ac_header)} {(ulimit.h)} {(sys/types.h)})
    (C {(ac_header)} {(values.h)})
    (command.SimpleCommand
      words: [
        {(echo)}
        {
          (SQ <'#include <sys/types.h>\n'> <'#include <unistd.h>\n'> 
            <'/* check that off_t can represent 2^63-1 correctly, thx FSF */\n'> <'#define LARGE_OFF_T ((((off_t)1 << 31) << 31) - 1 + (((off_t)1 << 31) << 31))\n'> 
            <'int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 &&\n'> <'    LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];\n'> <'int main(void) { return (isatty(0)); }'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(lft.c)})]
    )
    (command.SimpleCommand
      words: [{(ac_testn)} {(can_lfs)} {(SQ )} {(DQ ('for large file support'))}]
      redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(lft.c)})]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:save_CPPFLAGS spids:[10237])
          op: Equal
          rhs: {($ VSub_DollarName '$CPPFLAGS')}
          spids: [10237]
        )
      ]
      spids: [10237]
    )
    (C {(add_cppflags)} {(-D_FILE_OFFSET_BITS) (Lit_Other '=') (64)})
    (command.SimpleCommand
      words: [
        {(ac_testn)}
        {(can_lfs_sus)}
        {(SQ <'!'>)}
        {(can_lfs)}
        {(0)}
        {(DQ ('... with -D_FILE_OFFSET_BITS=64'))}
      ]
      redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(lft.c)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_LFS_SUS')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[10279])
                  op: Equal
                  rhs: {($ VSub_DollarName '$save_CPPFLAGS')}
                  spids: [10279]
                )
              ]
              spids: [10279]
            )
            (C {(add_cppflags)} {(-D_LARGE_FILES) (Lit_Other '=') (1)})
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(can_lfs_aix)}
                {(SQ <'!'>)}
                {(can_lfs)}
                {(0)}
                {(DQ ('... with -D_LARGE_FILES=1'))}
              ]
              redirects: [(redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(lft.c)})]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CAN_LFS_AIX')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:CPPFLAGS spids:[10320])
                      op: Equal
                      rhs: {($ VSub_DollarName '$save_CPPFLAGS')}
                      spids: [10320]
                    )
                  ]
                  spids: [10320]
                )
              ]
            )
          ]
          spids: [16777215 10276]
        )
      ]
      spids: [16777215 10323]
    )
    (C {(rm)} {(-f)} {(lft.c)})
    (C {(rmf)} {(lft) (Lit_Other '*')})
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(can_inttypes)}
        {(SQ <'!'>)}
        {(stdint_h)}
        {(1)}
        {(DQ ('for standard 32-bit integer types'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10373
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((uint32_t)(size_t)*av + (int32_t)ac); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(can_ucbints)}
        {(SQ <'!'>)}
        {(can_inttypes)}
        {(1)}
        {(DQ ('for UCB 32-bit integer types'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10398
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((u_int32_t)(size_t)*av + (int32_t)ac); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(can_int8type)}
        {(SQ <'!'>)}
        {(stdint_h)}
        {(1)}
        {(DQ ('for standard 8-bit integer type'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10423
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((uint8_t)(size_t)av[ac]); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(can_ucbint8)}
        {(SQ <'!'>)}
        {(can_int8type)}
        {(1)}
        {(DQ ('for UCB 8-bit integer type'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10448
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('int main(int ac, char **av) { return ((u_int8_t)(size_t)av[ac]); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(rlim_t)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10473
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_BOTH_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#include <time.h>\n')
            ('#elif HAVE_SYS_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#elif HAVE_TIME_H\n')
            ('#include <time.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_RESOURCE_H\n')
            ('#include <sys/resource.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(void) { return (((int)(rlim_t)0) + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_testn)} {(sig_t)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10492
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <signal.h>\n')
            ('#include <stddef.h>\n')
            ('volatile sig_t foo = (sig_t)0;\n')
            ('int main(void) { return (foo == (sig_t)0); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_testn)} {(sighandler_t)} {(SQ <'!'>)} {(sig_t)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10516
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <signal.h>\n')
            ('#include <stddef.h>\n')
            ('volatile sighandler_t foo = (sighandler_t)0;\n')
            ('int main(void) { return (foo == (sighandler_t)0); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_SIGHANDLER_T')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(add_cppflags)} {(-Dsig_t) (Lit_Other '=') (sighandler_t)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_SIG_T spids:[10538])
                  op: Equal
                  rhs: {(1)}
                  spids: [10538]
                )
              ]
              spids: [10538]
            )
          ]
          spids: [16777215 10528]
        )
      ]
      spids: [16777215 10541]
    )
    (command.SimpleCommand
      words: [{(ac_testn)} {(__sighandler_t)} {(SQ <'!'>)} {(sig_t)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 10566
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <signal.h>\n')
            ('#include <stddef.h>\n')
            ('volatile __sighandler_t foo = (__sighandler_t)0;\n')
            ('int main(void) { return (foo == (__sighandler_t)0); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE___SIGHANDLER_T')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(add_cppflags)} {(-Dsig_t) (Lit_Other '=') (__sighandler_t)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_SIG_T spids:[10588])
                  op: Equal
                  rhs: {(1)}
                  spids: [10588]
                )
              ]
              spids: [10588]
            )
          ]
          spids: [16777215 10578]
        )
      ]
      spids: [16777215 10591]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_SIG_T')})
        (C {(add_cppflags)} {(-Dsig_t) (Lit_Other '=') (nosig_t)})
      ]
    )
    (C {(ac_cppflags)} {(SIG_T)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(makefile)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(Lit_Other ':')} {(nothing)} {(to)} {(check)})]
          spids: [16777215 10635]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HAVE_LINK_WORKS spids:[10649])
              op: Equal
              rhs: {(x)}
              spids: [10649]
            )
          ]
          spids: [10649]
        )
        (C {(ac_testinit)} {(link_works)} {(SQ )} 
          {(SQ <'checking if the final link command may succeed'>)}
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:fv spids:[10665])
              op: Equal
              rhs: {(1)}
              spids: [10665]
            )
          ]
          spids: [10665]
        )
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})
            (redir.HereDoc
              op: <Redir_DLessDash '<<-'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 10697
              stdin_parts: [
                ('#define EXTERN\n')
                ('#define MKSH_INCLUDES_ONLY\n')
                ('#include ')
                (Right_DoubleQuote '"')
                (sh.h)
                (Right_DoubleQuote '"')
                ('\n')
                ('__RCSID(')
                (Right_DoubleQuote '"')
                ($ VSub_DollarName '$srcversion')
                (Right_DoubleQuote '"')
                (');\n')
                ('int main(void) { printf(')
                (Right_DoubleQuote '"')
                ('Hello, World!')
                (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>)
                (n)
                (Right_DoubleQuote '"')
                ('); return (isatty(0)); }\n')
              ]
            )
          ]
        )
        (command.Case
          to_match: {($ VSub_DollarName '$cm')}
          arms: [
            (case_arm
              pat_list: [{(llvm)}]
              action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -emit-llvm -c conftest.c')
                        )
                      }
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[10725])
                          op: Equal
                          rhs: {(0)}
                          spids: [10725]
                        )
                      ]
                      spids: [10725]
                    )
                  ]
                )
                (C {(rmf)} {($ VSub_DollarName '$tfn') (.s)})
                (command.AndOr
                  ops: [Op_DPipe Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ('llvm-link -o - conftest.o | opt ') ($ VSub_DollarName '$optflags') 
                          (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                        )
                      }
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[10757])
                          op: Equal
                          rhs: {(0)}
                          spids: [10757]
                        )
                      ]
                      spids: [10757]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' ') ($ VSub_DollarName '$tfn') ('.s ') ($ VSub_DollarName '$LIBS') 
                          (' ') ($ VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
              spids: [10706 10707 10790 16777215]
            )
            (case_arm
              pat_list: [{(dragonegg)}]
              action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -S -flto conftest.c')
                        )
                      }
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[10812])
                          op: Equal
                          rhs: {(0)}
                          spids: [10812]
                        )
                      ]
                      spids: [10812]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} {(DQ ('mv conftest.s conftest.ll'))})
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} {(DQ ('llvm-as conftest.ll'))})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[10851])
                          op: Equal
                          rhs: {(0)}
                          spids: [10851]
                        )
                      ]
                      spids: [10851]
                    )
                  ]
                )
                (C {(rmf)} {($ VSub_DollarName '$tfn') (.s)})
                (command.AndOr
                  ops: [Op_DPipe Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ('llvm-link -o - conftest.bc | opt ') ($ VSub_DollarName '$optflags') 
                          (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                        )
                      }
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[10883])
                          op: Equal
                          rhs: {(0)}
                          spids: [10883]
                        )
                      ]
                      spids: [10883]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' ') ($ VSub_DollarName '$tfn') ('.s ') ($ VSub_DollarName '$LIBS') 
                          (' ') ($ VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
              spids: [10793 10794 10916 16777215]
            )
            (case_arm
              pat_list: [{(combine)}]
              action: [
                (C {(v)} 
                  {
                    (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                      ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' -fwhole-program --combine ') ($ VSub_DollarName '$NOWARN') 
                      (' -o ') ($ VSub_DollarName '$tcfn') (' conftest.c ') ($ VSub_DollarName '$LIBS') (' ') 
                      ($ VSub_DollarName '$ccpr')
                    )
                  }
                )
              ]
              spids: [10919 10920 10944 16777215]
            )
            (case_arm
              pat_list: [{(lto)} {(normal)}]
              action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:cm spids:[10953])
                      op: Equal
                      rhs: {(normal)}
                      spids: [10953]
                    )
                  ]
                  spids: [10953]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -c conftest.c')
                        )
                      }
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[10972])
                          op: Equal
                          rhs: {(0)}
                          spids: [10972]
                        )
                      ]
                      spids: [10972]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(0)})
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' conftest.o ') ($ VSub_DollarName '$LIBS') (' ') 
                          ($ VSub_DollarName '$ccpr')
                        )
                      }
                    )
                  ]
                )
              ]
              spids: [10947 10950 11003 16777215]
            )
          ]
          spids: [10699 10703 11006]
        )
        (command.AndOr
          ops: [Op_DPipe]
          children: [
            (C {(test)} {(-f)} {($ VSub_DollarName '$tcfn')})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fv spids:[11017])
                  op: Equal
                  rhs: {(0)}
                  spids: [11017]
                )
              ]
              spids: [11017]
            )
          ]
        )
        (C {(ac_testdone)})
        (command.AndOr
          ops: [Op_DPipe]
          children: [
            (C {(test)} {($ VSub_DollarName '$fv')} {(Lit_Other '=')} {(1)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
      spids: [10646 11038]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(x) (DQ (NetBSD))} {(Lit_Other '=')} {(x) (DQ ($ VSub_DollarName '$TARGET_OS'))})
        (C {($ VSub_DollarName '$e')} {(Ignore)} {(the)} {(compatibility)} {(warning.)})
      ]
    )
    (command.SimpleCommand
      words: [{(ac_testn)} {(sys_errlist)} {(SQ )} {(DQ ('the sys_errlist[] array and sys_nerr'))}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11097
          stdin_parts: [
            ('extern const int sys_nerr;\n')
            ('extern const char * const sys_errlist[];\n')
            ('extern int isatty(int);\n')
            ('int main(void) { return (*sys_errlist[sys_nerr - 1] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_testn)}
        {(_sys_errlist)}
        {(SQ <'!'>)}
        {(sys_errlist)}
        {(0)}
        {(DQ ('the _sys_errlist[] array and _sys_nerr'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11123
          stdin_parts: [
            ('extern const int _sys_nerr;\n')
            ('extern const char * const _sys_errlist[];\n')
            ('extern int isatty(int);\n')
            ('int main(void) { return (*_sys_errlist[_sys_nerr - 1] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(1)} {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$HAVE__SYS_ERRLIST'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(add_cppflags)} {(-Dsys_nerr) (Lit_Other '=') (_sys_nerr)})
            (C {(add_cppflags)} {(-Dsys_errlist) (Lit_Other '=') (_sys_errlist)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HAVE_SYS_ERRLIST spids:[11154])
                  op: Equal
                  rhs: {(1)}
                  spids: [11154]
                )
              ]
              spids: [11154]
            )
          ]
          spids: [16777215 11137]
        )
      ]
      spids: [16777215 11157]
    )
    (C {(ac_cppflags)} {(SYS_ERRLIST)})
    (command.ForEach
      iter_name: what
      iter_words: [{(name)} {(list)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:uwhat spids:[11178])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(upper)} {($ VSub_DollarName '$what')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [11179 11183]
                      )
                    }
                  spids: [11178]
                )
              ]
              spids: [11178]
            )
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(sys_sig) ($ VSub_DollarName '$what')}
                {(SQ )}
                {(DQ ('the sys_sig') (${ VSub_Name what) ('[] array'))}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 11217
                  stdin_parts: [
                    ('extern const char * const sys_sig')
                    (${ VSub_Name what)
                    ('[];\n')
                    ('extern int isatty(int);\n')
                    ('int main(void) { return (sys_sig')
                    (${ VSub_Name what)
                    ('[0][0] + isatty(0)); }\n')
                  ]
                )
              ]
            )
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(_sys_sig) ($ VSub_DollarName '$what')}
                {(SQ <'!'>)}
                {(sys_sig) ($ VSub_DollarName '$what')}
                {(0)}
                {(DQ ('the _sys_sig') (${ VSub_Name what) ('[] array'))}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 11256
                  stdin_parts: [
                    ('extern const char * const _sys_sig')
                    (${ VSub_Name what)
                    ('[];\n')
                    ('extern int isatty(int);\n')
                    ('int main(void) { return (_sys_sig')
                    (${ VSub_Name what)
                    ('[0][0] + isatty(0)); }\n')
                  ]
                )
              ]
            )
            (C {(eval)} 
              {(Lit_VarLike 'uwhat_v=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                (HAVE__SYS_SIG) ($ VSub_DollarName '$uwhat')
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(1)} {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$uwhat_v'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(add_cppflags)} 
                      {(-Dsys_sig) ($ VSub_DollarName '$what') (Lit_Other '=') (_sys_sig) 
                        ($ VSub_DollarName '$what')
                      }
                    )
                    (C {(eval)} {(HAVE_SYS_SIG) ($ VSub_DollarName '$uwhat') (Lit_Other '=') (1)})
                  ]
                  spids: [16777215 11279]
                )
              ]
              spids: [16777215 11299]
            )
            (C {(ac_cppflags)} {(SYS_SIG) ($ VSub_DollarName '$uwhat')})
          ]
          spids: [11175 11307]
        )
      spids: [11169 11173]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(flock)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11335
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <fcntl.h>\n')
            ('#undef flock\n')
            ('#if HAVE_SYS_FILE_H\n')
            ('#include <sys/file.h>\n')
            ('#endif\n')
            ('int main(void) { return (flock(0, LOCK_EX | LOCK_UN)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(lock_fcntl)}
        {(SQ <'!'>)}
        {(flock)}
        {(1)}
        {(SQ <'whether we can lock files with fcntl'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11365
          stdin_parts: [
            ('#include <fcntl.h>\n')
            ('#undef flock\n')
            ('int main(void) {\n')
            ('struct flock lks;\n')
            ('lks.l_type = F_WRLCK | F_UNLCK;\n')
            ('return (fcntl(0, F_SETLKW, &lks));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(getrusage)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11383
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) {\n')
            ('struct rusage ru;\n')
            ('return (getrusage(RUSAGE_SELF, &ru) +\n')
            ('    getrusage(RUSAGE_CHILDREN, &ru));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(getsid)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11396
          stdin_parts: [('#include <unistd.h>\n') ('int main(void) { return ((int)getsid(0)); }\n')]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(gettimeofday)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11410
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { struct timeval tv; return (gettimeofday(&tv, NULL)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(killpg)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11423
          stdin_parts: [
            ('#include <signal.h>\n')
            ('int main(int ac, char *av[]) { return (av[0][killpg(123, ac)]); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(memmove)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11443
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <stddef.h>\n')
            ('#include <string.h>\n')
            ('#if HAVE_STRINGS_H\n')
            ('#include <strings.h>\n')
            ('#endif\n')
            ('int main(int ac, char *av[]) {\n')
            ('return (*(int *)(void *)memmove(av[0], av[1], (size_t)ac));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(mknod)} {(SQ )} {(SQ <'if to use mknod(), makedev() and friends'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11469
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(int ac, char *av[]) {\n')
            ('dev_t dv;\n')
            ('dv = makedev((unsigned int)ac, (unsigned int)av[0][0]);\n')
            ('return (mknod(av[0], (mode_t)0, dv) ? (int)major(dv) :\n')
            ('    (int)minor(dv));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(mmap)} {(lock_fcntl)} {(0)} {(SQ <'for mmap and munmap'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11500
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_SYS_FILE_H\n')
            ('#include <sys/file.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_MMAN_H\n')
            ('#include <sys/mman.h>\n')
            ('#endif\n')
            ('#include <stddef.h>\n')
            ('#include <stdlib.h>\n')
            ('int main(void) { return ((void *)mmap(NULL, (size_t)0,\n')
            ('    PROT_READ, MAP_PRIVATE, 0, (off_t)0) == (void *)NULL ? 1 :\n')
            ('    munmap(NULL, 0)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(nice)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11513
          stdin_parts: [('#include <unistd.h>\n') ('int main(void) { return (nice(4)); }\n')]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(revoke)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11530
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_LIBUTIL_H\n')
            ('#include <libutil.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(int ac, char *av[]) { return (ac + revoke(av[0])); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(setlocale_ctype)} {(SQ )} {(SQ <'setlocale(LC_CTYPE, "")'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11551
          stdin_parts: [
            ('#include <locale.h>\n')
            ('#include <stddef.h>\n')
            ('int main(void) { return ((int)(size_t)(void *)setlocale(LC_CTYPE, "")); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(langinfo_codeset)} {(setlocale_ctype)} {(0)} {(SQ <'nl_langinfo(CODESET)'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11573
          stdin_parts: [
            ('#include <langinfo.h>\n')
            ('#include <stddef.h>\n')
            ('int main(void) { return ((int)(size_t)(void *)nl_langinfo(CODESET)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(select)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11614
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_BOTH_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#include <time.h>\n')
            ('#elif HAVE_SYS_TIME_H\n')
            ('#include <sys/time.h>\n')
            ('#elif HAVE_TIME_H\n')
            ('#include <time.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_BSDTYPES_H\n')
            ('#include <sys/bsdtypes.h>\n')
            ('#endif\n')
            ('#if HAVE_SYS_SELECT_H\n')
            ('#include <sys/select.h>\n')
            ('#endif\n')
            ('#if HAVE_BSTRING_H\n')
            ('#include <bstring.h>\n')
            ('#endif\n')
            ('#include <stddef.h>\n')
            ('#include <stdlib.h>\n')
            ('#include <string.h>\n')
            ('#if HAVE_STRINGS_H\n')
            ('#include <strings.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(void) {\n')
            ('struct timeval tv = { 1, 200000 };\n')
            ('fd_set fds; FD_ZERO(&fds); FD_SET(0, &fds);\n')
            ('return (select(FD_SETSIZE, &fds, NULL, NULL, &tv));\n')
            ('}\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(setresugid)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11628
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#include <unistd.h>\n')
            ('int main(void) { return (setresuid(0,0,0) + setresgid(0,0,0)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(setgroups)} {(setresugid)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11649
          stdin_parts: [
            ('#include <sys/types.h>\n')
            ('#if HAVE_GRP_H\n')
            ('#include <grp.h>\n')
            ('#endif\n')
            ('#include <unistd.h>\n')
            ('int main(void) { gid_t gid = 0; return (setgroups(0, &gid)); }\n')
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(test)} {(x) (DQ ($ VSub_DollarName '$et'))} {(Lit_Other '=')} {(x) (DQ (klibc))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [{(ac_testn)} {(__rt_sigsuspend)} {(SQ )} {(SQ <'whether klibc uses RT signals'>)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 11692
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('extern int __rt_sigsuspend(const sigset_t *, size_t);\n')
                    ('int main(void) { return (__rt_sigsuspend(NULL, 0)); }\n')
                  ]
                )
              ]
            )
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(__sigsuspend_s)}
                {(SQ <'!'>)}
                {(__rt_sigsuspend)}
                {(1)}
                {(SQ <'whether sigsuspend is usable (1/2)'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 11727
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('extern int __sigsuspend_s(sigset_t);\n')
                    ('int main(void) { return (__sigsuspend_s(0)); }\n')
                  ]
                )
              ]
            )
            (command.SimpleCommand
              words: [
                {(ac_testn)}
                {(__sigsuspend_xxs)}
                {(SQ <'!'>)}
                {(__sigsuspend_s)}
                {(1)}
                {(SQ <'whether sigsuspend is usable (2/2)'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 11756
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('extern int __sigsuspend_xxs(int, int, sigset_t);\n')
                    ('int main(void) { return (__sigsuspend_xxs(0, 0, 0)); }\n')
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(DQ (000))} {(Lit_Other '=')} 
                          {
                            (DQ ($ VSub_DollarName '$HAVE___RT_SIGSUSPEND') 
                              ($ VSub_DollarName '$HAVE___SIGSUSPEND_S') ($ VSub_DollarName '$HAVE___SIGSUSPEND_XXS')
                            )
                          }
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(add_cppflags)} {(-DMKSH_NO_SIGSUSPEND)})]
                  spids: [16777215 11776]
                )
              ]
              spids: [16777215 11788]
            )
          ]
          spids: [16777215 11668]
        )
      ]
      spids: [16777215 11790]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(strerror)} {(SQ <'!'>)} {(sys_errlist)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11812
          stdin_parts: [
            ('extern char *strerror(int);\n')
            ('int main(int ac, char *av[]) { return (*strerror(*av[ac])); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(strsignal)} {(SQ <'!'>)} {(sys_siglist)} {(0)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11834
          stdin_parts: [
            ('#include <string.h>\n')
            ('#include <signal.h>\n')
            ('int main(void) { return (strsignal(1)[0]); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(strlcpy)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11848
          stdin_parts: [
            ('#include <string.h>\n')
            ('int main(int ac, char *av[]) { return (strlcpy(*av, av[1],\n')
            ('    (size_t)ac)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(flock_decl)} {(flock)} {(1)} {(SQ <'for declaration of flock()'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11882
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('#if HAVE_SYS_FILE_H\n')
            ('#include <sys/file.h>\n')
            ('#endif\n')
            ('int main(void) { return ((flock)(0, 0)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [{(ac_test)} {(revoke_decl)} {(revoke)} {(1)} {(SQ <'for declaration of revoke()'>)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11903
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { return ((revoke)("")); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(sys_errlist_decl)}
        {(sys_errlist)}
        {(0)}
        {(DQ ('for declaration of sys_errlist[] and sys_nerr'))}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11924
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { return (*sys_errlist[sys_nerr - 1] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.SimpleCommand
      words: [
        {(ac_test)}
        {(sys_siglist_decl)}
        {(sys_siglist)}
        {(0)}
        {(SQ <'for declaration of sys_siglist[]'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 11945
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('int main(void) { return (sys_siglist[0][0] + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:fd spids:[11956])
          op: Equal
          rhs: {(SQ <'if to use persistent history'>)}
          spids: [11956]
        )
      ]
      spids: [11956]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(ac_cache)} {(PERSISTENT_HISTORY)})
        (command.Case
          to_match: 
            {($ VSub_DollarName '$HAVE_MMAP') ($ VSub_DollarName '$HAVE_FLOCK') 
              ($ VSub_DollarName '$HAVE_LOCK_FCNTL')
            }
          arms: [
            (case_arm
              pat_list: [{(11) (Lit_Other '*')} {(101)}]
              action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:fv spids:[11981])
                      op: Equal
                      rhs: {(1)}
                      spids: [11981]
                    )
                  ]
                  spids: [11981]
                )
              ]
              spids: [11975 11979 11984 16777215]
            )
          ]
          spids: [11967 11973 11986]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$fv')})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[11998])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$check_categories') (' no-histfile'))}
              spids: [11998]
            )
          ]
          spids: [11998]
        )
      ]
    )
    (C {(ac_testdone)})
    (C {(ac_cppflags)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:save_CFLAGS spids:[12009])
          op: Equal
          rhs: {($ VSub_DollarName '$CFLAGS')}
          spids: [12009]
        )
      ]
      spids: [12009]
    )
    (command.SimpleCommand
      words: [
        {(ac_testn)}
        {(compile_time_asserts_) ($ VSub_Dollar '$$')}
        {(SQ )}
        {(SQ <'whether compile-time assertions pass'>)}
      ]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 12085
          stdin_parts: [
            ('#define MKSH_INCLUDES_ONLY\n')
            ('#include "sh.h"\n')
            ('#ifndef CHAR_BIT\n')
            ('#define CHAR_BIT 8\t/* defuse this test on really legacy systems */\n')
            ('#endif\n')
            ('struct ctasserts {\n')
            ('#define cta(name, assertion) char name[(assertion) ? 1 : -1]\n')
            ('/* this one should be defined by the standard */\n')
            ('cta(char_is_1_char, (sizeof(char) == 1) && (sizeof(signed char) == 1) &&\n')
            ('    (sizeof(unsigned char) == 1));\n')
            ('cta(char_is_8_bits, ((CHAR_BIT) == 8) && ((int)(unsigned char)0xFF == 0xFF) &&\n')
            ('    ((int)(unsigned char)0x100 == 0) && ((int)(unsigned char)(int)-1 == 0xFF));\n')
            ('/* the next assertion is probably not really needed */\n')
            ('cta(short_is_2_char, sizeof(short) == 2);\n')
            ('cta(short_size_no_matter_of_signedness, sizeof(short) == sizeof(unsigned short));\n')
            ('/* the next assertion is probably not really needed */\n')
            ('cta(int_is_4_char, sizeof(int) == 4);\n')
            ('cta(int_size_no_matter_of_signedness, sizeof(int) == sizeof(unsigned int));\n')
            ('\n')
            ('cta(long_ge_int, sizeof(long) >= sizeof(int));\n')
            ('cta(long_size_no_matter_of_signedness, sizeof(long) == sizeof(unsigned long));\n')
            ('\n')
            ('#ifndef MKSH_LEGACY_MODE\n')
            ('/* the next assertion is probably not really needed */\n')
            ('cta(ari_is_4_char, sizeof(mksh_ari_t) == 4);\n')
            ('/* but this is */\n')
            (
'cta(ari_has_31_bit, 0 < (mksh_ari_t)(((((mksh_ari_t)1 << 15) << 15) - 1) * 2 + 1));\n'
            )
            ('/* the next assertion is probably not really needed */\n')
            ('cta(uari_is_4_char, sizeof(mksh_uari_t) == 4);\n')
            ('/* but the next three are; we REQUIRE unsigned integer wraparound */\n')
            (
'cta(uari_has_31_bit, 0 < (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 2 + 1));\n'
            )
            (
'cta(uari_has_32_bit, 0 < (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 3));\n'
            )
            ('cta(uari_wrap_32_bit,\n')
            ('    (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 3) >\n')
            ('    (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 4));\n')
            ('#define NUM 22\n')
            ('#else\n')
            ('#define NUM 16\n')
            ('#endif\n')
            ('/* these are always required */\n')
            ('cta(ari_is_signed, (mksh_ari_t)-1 < (mksh_ari_t)0);\n')
            ('cta(uari_is_unsigned, (mksh_uari_t)-1 > (mksh_uari_t)0);\n')
            ('/* we require these to have the precisely same size and assume 2s complement */\n')
            ('cta(ari_size_no_matter_of_signedness, sizeof(mksh_ari_t) == sizeof(mksh_uari_t));\n')
            ('\n')
            ('cta(sizet_size_no_matter_of_signedness, sizeof(ssize_t) == sizeof(size_t));\n')
            ('cta(sizet_voidptr_same_size, sizeof(size_t) == sizeof(void *));\n')
            ('cta(sizet_funcptr_same_size, sizeof(size_t) == sizeof(void (*)(void)));\n')
            ('/* our formatting routines assume this */\n')
            ('cta(ptr_fits_in_long, sizeof(size_t) <= sizeof(long));\n')
            ('cta(ari_fits_in_long, sizeof(mksh_ari_t) <= sizeof(long));\n')
            ('/* for struct alignment people */\n')
            ('char padding[64 - NUM];\n')
            ('};\n')
            ('char ctasserts_dblcheck[sizeof(struct ctasserts) == 64 ? 1 : -1];\n')
            ('int main(void) { return (sizeof(ctasserts_dblcheck) + isatty(0)); }\n')
          ]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:CFLAGS spids:[12086])
          op: Equal
          rhs: {($ VSub_DollarName '$save_CFLAGS')}
          spids: [12086]
        )
      ]
      spids: [12086]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(eval)} {(test)} {(1)} {(Lit_Other '=')} 
          {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (HAVE_COMPILE_TIME_ASSERTS_) 
            ($ VSub_Dollar '$$')
          }
        )
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Other '=')} {(1)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [{(ac_test)} {(long_32bit)} {(SQ )} {(SQ <'whether long is 32 bit wide'>)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 12158
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('#ifndef CHAR_BIT\n')
                    ('#define CHAR_BIT 0\n')
                    ('#endif\n')
                    ('struct ctasserts {\n')
                    ('#define cta(name, assertion) char name[(assertion) ? 1 : -1]\n')
                    ('cta(char_is_8_bits, (CHAR_BIT) == 8);\n')
                    ('cta(long_is_32_bits, sizeof(long) == 4);\n')
                    ('};\n')
                    ('int main(void) { return (sizeof(struct ctasserts)); }\n')
                  ]
                )
              ]
            )
            (command.SimpleCommand
              words: [
                {(ac_test)}
                {(long_64bit)}
                {(SQ <'!'>)}
                {(long_32bit)}
                {(0)}
                {(SQ <'whether long is 64 bit wide'>)}
              ]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(SQ <EOF>)}
                  here_end_span_id: 12193
                  stdin_parts: [
                    ('#define MKSH_INCLUDES_ONLY\n')
                    ('#include "sh.h"\n')
                    ('#ifndef CHAR_BIT\n')
                    ('#define CHAR_BIT 0\n')
                    ('#endif\n')
                    ('struct ctasserts {\n')
                    ('#define cta(name, assertion) char name[(assertion) ? 1 : -1]\n')
                    ('cta(char_is_8_bits, (CHAR_BIT) == 8);\n')
                    ('cta(long_is_64_bits, sizeof(long) == 8);\n')
                    ('};\n')
                    ('int main(void) { return (sizeof(struct ctasserts)); }\n')
                  ]
                )
              ]
            )
            (command.Case
              to_match: 
                {($ VSub_DollarName '$HAVE_LONG_32BIT') ($ VSub_DollarName '$HAVE_LONG_64BIT')}
              arms: [
                (case_arm
                  pat_list: [{(10)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:check_categories spids:[12207])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$check_categories') (' int:32'))}
                          spids: [12207]
                        )
                      ]
                      spids: [12207]
                    )
                  ]
                  spids: [12204 12205 12213 16777215]
                )
                (case_arm
                  pat_list: [{(01)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:check_categories spids:[12219])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$check_categories') (' int:64'))}
                          spids: [12219]
                        )
                      ]
                      spids: [12219]
                    )
                  ]
                  spids: [12216 12217 12225 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:check_categories spids:[12231])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$check_categories') (' int:u'))}
                          spids: [12231]
                        )
                      ]
                      spids: [12231]
                    )
                  ]
                  spids: [12228 12229 12237 16777215]
                )
              ]
              spids: [12196 12201 12240]
            )
          ]
          spids: [16777215 12128]
        )
      ]
      spids: [16777215 12242]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_SYS_SIGNAME')})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {(ac_testinit)} {(cpp_dd)} {(SQ )} 
                      {(SQ <'checking if the C Preprocessor supports -dD'>)}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.SimpleCommand
                  words: [{(echo)} {(SQ <'#define foo bar'>)}]
                  redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})]
                )
                (C {(vv)} {(SQ <']'>)} 
                  {
                    (DQ ($ VSub_DollarName '$CPP') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                      ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -dD conftest.c >x')
                    )
                  }
                )
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (command.SimpleCommand
                      words: [{(grep)} {(SQ <'#define foo bar'>)} {(x)}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(/dev/null)}
                        )
                        (redir.Redir
                          op: <Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:fv spids:[12327])
                          op: Equal
                          rhs: {(1)}
                          spids: [12327]
                        )
                      ]
                      spids: [12327]
                    )
                  ]
                )
                (C {(rmf)} {(conftest.c)} {(x)} {(vv.out)})
                (C {(ac_testdone)})
              ]
              spids: [16777215 12280]
            )
          ]
          spids: [16777215 12342]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')} {(...)} {(done.)})
    (command.SimpleCommand
      words: [{(echo)} {(wq)}]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(x)})]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (command.Pipeline
          children: [
            (command.SimpleCommand
              words: [{(ed)} {(x)}]
              redirects: [
                (redir.Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(x)})
                (redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})
              ]
            )
            (command.SimpleCommand
              words: [{(grep)} {(3)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          negated: F
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:check_categories spids:[12400])
              op: Equal
              rhs: 
                {(DQ ($ VSub_DollarName '$check_categories') (' ') ($ VSub_DollarName '$oldish_ed'))}
              spids: [12400]
            )
          ]
          spids: [12400]
        )
      ]
    )
    (C {(rmf)} {(x)} {(vv.out)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_SYS_SIGNAME')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CPP_DD')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {($ VSub_DollarName '$e')} {(Generating)} {(list)} {(of)} {(signal)} {(names...)})
                  ]
                  spids: [16777215 12439]
                )
              ]
              else_action: [
                (C {($ VSub_DollarName '$e')} {(No)} {(list)} {(of)} {(signal)} {(names)} {(available)} 
                  {(via)} {(cpp.)} {(Falling)} {(back...)}
                )
              ]
              spids: [12455 12481]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sigseenone spids:[12484])
                  op: Equal
                  rhs: {(Lit_Other ':')}
                  spids: [12484]
                )
              ]
              spids: [12484]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sigseentwo spids:[12488])
                  op: Equal
                  rhs: {(Lit_Other ':')}
                  spids: [12488]
                )
              ]
              spids: [12488]
            )
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ <'#include <signal.h>\n'> <'#if defined(NSIG_MAX)\n'> 
                    <'#define cfg_NSIG NSIG_MAX\n'> <'#elif defined(NSIG)\n'> <'#define cfg_NSIG NSIG\n'> <'#elif defined(_NSIG)\n'> 
                    <'#define cfg_NSIG _NSIG\n'> <'#elif defined(SIGMAX)\n'> <'#define cfg_NSIG (SIGMAX + 1)\n'> <'#elif defined(_SIGMAX)\n'> 
                    <'#define cfg_NSIG (_SIGMAX + 1)\n'> <'#else\n'> <'/*XXX better error out, see sh.h */\n'> <'#define cfg_NSIG 64\n'> <'#endif\n'> <'int\n'> 
                    <'mksh_cfg= cfg_NSIG\n'> <';'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(conftest.c)})]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:NSIG spids:[12523])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(vq)} 
                                    {
                                      (DQ ($ VSub_DollarName '$CPP') (' ') 
                                        ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c')
                                      )
                                    }
                                  )
                                  (C {(grep)} {(-v)} {(SQ <'^#'>)})
                                  (C {(sed)} 
                                    {
                                      (SQ <'/mksh_cfg.*= *$/{\n'> <'\t\tN\n'> <'\t\ts/\\n/ /\n'> 
                                        <'\t\t}'>
                                      )
                                    }
                                  )
                                  (C {(grep)} {(SQ <'^ *mksh_cfg *='>)})
                                  (C {(sed)} 
                                    {
                                      (SQ 
                                        <
's/^ *mksh_cfg *=[\t ]*\\([()0-9x+-][()0-9x+\t -]*\\).*$/\\1/'
                                        >
                                      )
                                    }
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [12524 12582]
                      )
                    }
                  spids: [12523]
                )
              ]
              spids: [12523]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$NSIG')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (mksh_cfg) (Lit_Other '*')}]
                  action: [
                    (command.Sentence
                      child: 
                        (C {($ VSub_DollarName '$e')} 
                          {(DQ ("Error: NSIG='") ($ VSub_DollarName '$NSIG') ("'"))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:NSIG spids:[12606])
                          op: Equal
                          rhs: {(0)}
                          spids: [12606]
                        )
                      ]
                      spids: [12606]
                    )
                  ]
                  spids: [12592 12595 12609 16777215]
                )
                (case_arm
                  pat_list: [
                    {(Lit_Other '*') (Lit_Other '[') 
                      (word_part.EscapedLiteralPart
                        token: <Lit_EscapedChar '\\ '>
                      ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\('>) 
                      (word_part.EscapedLiteralPart
                        token: <Lit_EscapedChar '\\)'>
                      ) (Lit_Other '+') (-) (Lit_Other ']') (Lit_Other '*')
                    }
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:NSIG spids:[12623])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.SimpleCommand
                                        words: [
                                          {(DQ ($ VSub_DollarName '$AWK'))}
                                          {
                                            (DQ ('BEGIN { print ') ($ VSub_DollarName '$NSIG') (' }'))
                                          }
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(/dev/null)}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [12624 12637]
                              )
                            }
                          spids: [12623]
                        )
                      ]
                      spids: [12623]
                    )
                  ]
                  spids: [12612 12621 12639 16777215]
                )
              ]
              spids: [12585 12589 12642]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:printf spids:[12645])
                  op: Equal
                  rhs: {(printf)}
                  spids: [12645]
                )
              ]
              spids: [12645]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Subshell
                  child: (C {(printf)} {(hallo)})
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                  spids: [12649 12653]
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:printf spids:[12663])
                      op: Equal
                      rhs: {(echo)}
                      spids: [12663]
                    )
                  ]
                  spids: [12663]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$printf')} {(Lit_Other '=')} {(echo)})
                (C {(test)} 
                  {
                    (DQ 
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(printf)} {(Lit_Other '%') (d)} {(42)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [12680 12687]
                      )
                    )
                  } {(Lit_Other '=')} {(42)}
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:printf spids:[12696])
                      op: Equal
                      rhs: {(echo)}
                      spids: [12696]
                    )
                  ]
                  spids: [12696]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$printf')} {(Lit_Other '=')} {(echo)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:NSIG spids:[12710])
                      op: Equal
                      rhs: 
                        {
                          (word_part.CommandSubPart
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.SimpleCommand
                                    words: [
                                      {(printf)}
                                      {(Lit_Other '%') (d)}
                                      {(DQ ($ VSub_DollarName '$NSIG'))}
                                    ]
                                    redirects: [
                                      (redir.Redir
                                        op: <Redir_Great '2>'>
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [12711 12723]
                          )
                        }
                      spids: [12710]
                    )
                  ]
                  spids: [12710]
                )
              ]
            )
            (C {($ VSub_DollarName '$printf')} {(DQ ('NSIG=') ($ VSub_DollarName '$NSIG') (' ... '))})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sigs spids:[12735])
                  op: Equal
                  rhs: {(DQ ('ABRT FPE ILL INT SEGV TERM ALRM BUS CHLD CONT HUP KILL PIPE QUIT'))}
                  spids: [12735]
                )
              ]
              spids: [12735]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sigs spids:[12741])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$sigs') 
                        (' STOP TSTP TTIN TTOU USR1 USR2 POLL PROF SYS TRAP URG VTALRM')
                      )
                    }
                  spids: [12741]
                )
              ]
              spids: [12741]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sigs spids:[12748])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$sigs') 
                        (' XCPU XFSZ INFO WINCH EMT IO DIL LOST PWR SAK CLD IOT STKFLT')
                      )
                    }
                  spids: [12748]
                )
              ]
              spids: [12748]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sigs spids:[12755])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$sigs') 
                        (' ABND DCE DUMP IOERR TRACE DANGER THCONT THSTOP RESV UNUSED')
                      )
                    }
                  spids: [12755]
                )
              ]
              spids: [12755]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_CPP_DD')})
                (C {(test)} {($ VSub_DollarName '$NSIG')} {(-gt)} {(1)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:sigs spids:[12782])
                      op: Equal
                      rhs: 
                        {(DQ ($ VSub_DollarName '$sigs') (' ')) 
                          (word_part.CommandSubPart
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(vq)} 
                                        {
                                          (DQ ($ VSub_DollarName '$CPP') (' ') 
                                            ($ VSub_DollarName '$CFLAGS') (' ') ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' -dD conftest.c')
                                          )
                                        }
                                      )
                                      (C {(grep)} {(SQ <'[\t ]SIG[A-Z0-9][A-Z0-9]*[\t ]'>)})
                                      (C {(sed)} 
                                        {(SQ <'s/^.*[\t ]SIG\\([A-Z0-9][A-Z0-9]*\\)[\t ].*$/\\1/'>)}
                                      )
                                      (C {(sort)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [12787 12826]
                          )
                        }
                      spids: [12782]
                    )
                  ]
                  spids: [12782]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_DollarName '$NSIG')} {(-gt)} {(1)})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:sigs spids:[12839])
                      op: Equal
                      rhs: (word.EmptyWord)
                      spids: [12839]
                    )
                  ]
                  spids: [12839]
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  iter_name: name
                  iter_words: [{($ VSub_DollarName '$sigs')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {($ VSub_DollarName '$sigseenone')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(Lit_Other '*') (Lit_Other ':') ($ VSub_DollarName '$name') 
                                  (Lit_Other ':') (Lit_Other '*')
                                }
                              ]
                              action: [(command.ControlFlow token:<ControlFlow_Continue continue>)]
                              spids: [12861 12866 12870 16777215]
                            )
                          ]
                          spids: [12854 12858 12873]
                        )
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:sigseenone spids:[12876])
                              op: Equal
                              rhs: 
                                {($ VSub_DollarName '$sigseenone') ($ VSub_DollarName '$name') 
                                  (Lit_Other ':')
                                }
                              spids: [12876]
                            )
                          ]
                          spids: [12876]
                        )
                        (command.SimpleCommand
                          words: [{(echo)} {(SQ <'#include <signal.h>'>)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.SimpleCommand
                          words: [{(echo)} {(int)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.SimpleCommand
                          words: [
                            {(echo)}
                            {(Lit_VarLike 'mksh_cfg=')}
                            {(SIG) ($ VSub_DollarName '$name')}
                          ]
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.SimpleCommand
                          words: [{(echo)} {(SQ <';'>)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(conftest.c)}
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {(vq)} 
                              {
                                (DQ ($ VSub_DollarName '$CPP') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$NOWARN') (' conftest.c')
                                )
                              }
                            )
                            (C {(grep)} {(-v)} {(SQ <'^#'>)})
                            (C {(sed)} 
                              {
                                (SQ <'/mksh_cfg.*= *$/{\n'> <'\t\t\tN\n'> <'\t\t\ts/\\n/ /\n'> 
                                  <'\t\t\t}'>
                                )
                              }
                            )
                            (C {(grep)} {(SQ <'^ *mksh_cfg *='>)})
                            (C {(sed)} 
                              {(SQ <'s/^ *mksh_cfg *=[\t ]*\\([0-9][0-9x]*\\).*$/:\\1 '>) 
                                ($ VSub_DollarName '$name') (/)
                              }
                            )
                          ]
                          negated: F
                        )
                      ]
                      spids: [12851 12986]
                    )
                  spids: [12847 12849]
                )
                (C {(sed)} {(-n)} {(SQ <'/^:[^ ]/s/^://p'>)})
                (command.WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (command.Sentence
                      child: (C {(read)} {(nr)} {(name)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$printf')} {(Lit_Other '=')} {(echo)})
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:nr spids:[13022])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.SimpleCommand
                                                words: [
                                                  {(printf)}
                                                  {(Lit_Other '%') (d)}
                                                  {(DQ ($ VSub_DollarName '$nr'))}
                                                ]
                                                redirects: [
                                                  (redir.Redir
                                                    op: <Redir_Great '2>'>
                                                    fd: 2
                                                    arg_word: {(/dev/null)}
                                                  )
                                                ]
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [13023 13035]
                                      )
                                    }
                                  spids: [13022]
                                )
                              ]
                              spids: [13022]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Op_DAmp Op_DPipe]
                          children: [
                            (C {(test)} {($ VSub_DollarName '$nr')} {(-gt)} {(0)})
                            (C {(test)} {($ VSub_DollarName '$nr')} {(-lt)} {($ VSub_DollarName '$NSIG')})
                            (command.ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ VSub_DollarName '$sigseentwo')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(Lit_Other '*') (Lit_Other ':') ($ VSub_DollarName '$nr') 
                                  (Lit_Other ':') (Lit_Other '*')
                                }
                              ]
                              spids: [13068 13073 13075 16777215]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('\t\t{ ') 
                                      (word_part.EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\"'>
                                      ) ($ VSub_DollarName '$name') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (', ') 
                                      ($ VSub_DollarName '$nr') (' },')
                                    )
                                  }
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:sigseentwo spids:[13094])
                                      op: Equal
                                      rhs: 
                                        {($ VSub_DollarName '$sigseentwo') ($ VSub_DollarName '$nr') 
                                          (Lit_Other ':')
                                        }
                                      spids: [13094]
                                    )
                                  ]
                                  spids: [13094]
                                )
                                (command.SimpleCommand
                                  words: [
                                    {($ VSub_DollarName '$printf')}
                                    {
                                      (DQ ($ VSub_DollarName '$name') ('=') ($ VSub_DollarName '$nr') 
                                        (' ')
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_GreatAnd '>&'>
                                      fd: 16777215
                                      arg_word: {(2)}
                                    )
                                  ]
                                )
                              ]
                              spids: [13078 13079 13113 16777215]
                            )
                          ]
                          spids: [13061 13065 13116]
                        )
                      ]
                      spids: [13009 13119]
                    )
                  redirects: [
                    (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(signames.inc)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(rmf)} {(conftest.c)})
            (C {($ VSub_DollarName '$e')} {(done.)})
          ]
          spids: [16777215 12425]
        )
      ]
      spids: [16777215 13137]
    )
    (C {(addsrcs)} {(SQ <'!'>)} {(HAVE_STRLCPY)} {(strlcpy.c)})
    (C {(addsrcs)} {(USE_PRINTF_BUILTIN)} {(printf.c)})
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$USE_PRINTF_BUILTIN'))})
        (C {(add_cppflags)} {(-DMKSH_PRINTF_BUILTIN)})
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$HAVE_CAN_VERB'))})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:CFLAGS spids:[13184])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$CFLAGS') (' -verbose'))}
              spids: [13184]
            )
          ]
          spids: [13184]
        )
      ]
    )
    (C {(add_cppflags)} {(-DMKSH_BUILD_R) (Lit_Other '=') (523)})
    (C {($ VSub_DollarName '$e')} {($ VSub_DollarName '$bi') ($ VSub_DollarName '$me') (Lit_Other ':')} 
      {(Finished)} {(configuration)} {(testing) (Lit_Comma ',')} {(now)} {(producing)} {(output.) ($ VSub_DollarName '$ao')}
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:files spids:[13218])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [13218]
        )
      ]
      spids: [13218]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:objs spids:[13220])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [13220]
        )
      ]
      spids: [13220]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:sp spids:[13222])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [13222]
        )
      ]
      spids: [13222]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$tcfn')}
      arms: [
        (case_arm
          pat_list: [{(a.exe)} {(conftest.exe)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:mkshexe spids:[13236])
                  op: Equal
                  rhs: {($ VSub_DollarName '$tfn') (.exe)}
                  spids: [13236]
                )
              ]
              spids: [13236]
            )
            (C {(add_cppflags)} {(-DMKSH_EXE_EXT)})
          ]
          spids: [13230 13233 13246 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:mkshexe spids:[13252])
                  op: Equal
                  rhs: {($ VSub_DollarName '$tfn')}
                  spids: [13252]
                )
              ]
              spids: [13252]
            )
          ]
          spids: [13248 13249 13256 16777215]
        )
      ]
      spids: [13224 13228 13258]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$curdir')}
      arms: [
        (case_arm
          pat_list: [
            {(Lit_Other '*') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) 
              (Lit_Other '*')
            }
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:mkshshebang spids:[13271])
                  op: Equal
                  rhs: {(DQ ('#!./') ($ VSub_DollarName '$mkshexe'))}
                  spids: [13271]
                )
              ]
              spids: [13271]
            )
          ]
          spids: [13266 13269 13277 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:mkshshebang spids:[13282])
                  op: Equal
                  rhs: {(DQ ('#!') ($ VSub_DollarName '$curdir') (/) ($ VSub_DollarName '$mkshexe'))}
                  spids: [13282]
                )
              ]
              spids: [13282]
            )
          ]
          spids: [13279 13280 13290 16777215]
        )
      ]
      spids: [13260 13264 13292]
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(test.sh)})
        (redir.HereDoc
          op: <Redir_DLessDash '<<-'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 13635
          stdin_parts: [
            ($ VSub_DollarName '$mkshshebang')
            ('\n')
            ("LC_ALL=C PATH='")
            ($ VSub_DollarName '$PATH')
            ("'; export LC_ALL PATH\n")
            ('test -n ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (KSH_VERSION)
            (Right_DoubleQuote '"')
            (' || exit 1\n')
            ('set -A check_categories -- ')
            ($ VSub_DollarName '$check_categories')
            ('\n')
            ("pflag='")
            ($ VSub_DollarName '$curdir')
            (/)
            ($ VSub_DollarName '$mkshexe')
            ("'\n")
            ("sflag='")
            ($ VSub_DollarName '$srcdir')
            ("/check.t'\n")
            ('usee=0 Pflag=0 Sflag=0 uset=0 vflag=1 xflag=0\n')
            ('while getopts ')
            (Right_DoubleQuote '"')
            ('C:e:fPp:QSs:t:v')
            (Right_DoubleQuote '"')
            (' ch; do case ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('ch {\n')
            ('(C)\tcheck_categories[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#check_categories[*]}]=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(e)\tusee=1; eflag=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(f)\tcheck_categories[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#check_categories[*]}]=fastbox ;;\n')
            ('(P)\tPflag=1 ;;\n')
            ('(+P)\tPflag=0 ;;\n')
            ('(p)\tpflag=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(Q)\tvflag=0 ;;\n')
            ('(+Q)\tvflag=1 ;;\n')
            ('(S)\tSflag=1 ;;\n')
            ('(+S)\tSflag=0 ;;\n')
            ('(s)\tsflag=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(t)\tuset=1; tflag=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('OPTARG ;;\n')
            ('(v)\tvflag=1 ;;\n')
            ('(+v)\tvflag=0 ;;\n')
            ('(*)\txflag=1 ;;\n')
            ('}\n')
            ('done\n')
            ('shift ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('((OPTIND - 1))\n')
            ("set -A args -- '")
            ($ VSub_DollarName '$srcdir')
            ("/check.pl' -p ")
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (pflag)
            (Right_DoubleQuote '"')
            ('\n')
            ('x=\n')
            ('for y in ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{check_categories[@]}')
            (Right_DoubleQuote '"')
            ('; do\n')
            ('x=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('x,')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('y\n')
            ('done\n')
            ('if [[ -n ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('x ]]; then\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-C\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{x#,}\n')
            ('fi\n')
            ('if (( usee )); then\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-e\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('eflag\n')
            ('fi\n')
            ('(( Pflag )) && args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-P\n')
            ('if (( uset )); then\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-t\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('tflag\n')
            ('fi\n')
            ('(( vflag )) && args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-v\n')
            ('(( xflag )) && args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-x\t# force usage by synerr\n')
            ('if [[ -n ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('TMPDIR && -d ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('TMPDIR/. ]]; then\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=-T\n')
            ('args[')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{#args[*]}]=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('TMPDIR\n')
            ('fi\n')
            ('print Testing mksh for conformance:\n')
            ("grep -F -e Mir''OS: -e MIRBSD ")
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            ('\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('This shell is actually:')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>)
            (n)
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>)
            (t)
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (KSH_VERSION)
            (Right_DoubleQuote '"')
            ('\n')
            ("print 'test.sh built for mksh ")
            ($ VSub_DollarName '$dstversion')
            ("'\n")
            ("cstr='")
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('os = defined ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('^O ? ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('^O : ')
            (Right_DoubleQuote '"')
            (unknown)
            (Right_DoubleQuote '"')
            (";'\n")
            ('cstr=')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (cstr)
            (Right_DoubleQuote '"')
            ("'print ")
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('os . ')
            (Right_DoubleQuote '"')
            (', Perl version ')
            (Right_DoubleQuote '"')
            (' . ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ("];'\n")
            ('for perli in ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('PERL perl5 perl no; do\n')
            ('if [[ ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perli = no ]]; then\n')
            ('print Cannot find a working Perl interpreter, aborting.\n')
            ('exit 1\n')
            ('fi\n')
            ('print ')
            (Right_DoubleQuote '"')
            ("Trying Perl interpreter '")
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ("perli'...")
            (Right_DoubleQuote '"')
            ('\n')
            ('perlos=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('(')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perli -e ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (cstr)
            (Right_DoubleQuote '"')
            (')\n')
            ('rv=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('?\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('Errorlevel ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ("rv, running on '")
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ("perlos'")
            (Right_DoubleQuote '"')
            ('\n')
            ('if (( rv )); then\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('=> not using')
            (Right_DoubleQuote '"')
            ('\n')
            ('continue\n')
            ('fi\n')
            ('if [[ -n ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perlos ]]; then\n')
            ('print ')
            (Right_DoubleQuote '"')
            ('=> using it')
            (Right_DoubleQuote '"')
            ('\n')
            ('break\n')
            ('fi\n')
            ('done\n')
            ('(( Sflag )) || echo + ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ('\n')
            ('(( Sflag )) || exec ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ($ VSub_DollarName '$tsts')
            ('\n')
            ('# use of the -S option for check.t split into multiple chunks\n')
            ('rv=0\n')
            ('for s in ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (sflag)
            (Right_DoubleQuote '"')
            ('.*; do\n')
            ('echo + ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (s)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ('\n')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('perli ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('{args[@]}')
            (Right_DoubleQuote '"')
            (' -s ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            (s)
            (Right_DoubleQuote '"')
            (' ')
            (Right_DoubleQuote '"')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('@')
            (Right_DoubleQuote '"')
            ($ VSub_DollarName '$tsts')
            ('\n')
            ('rc=')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('?\n')
            ('(( rv = rv ? rv : rc ))\n')
            ('done\n')
            ('exit ')
            (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
            ('rv\n')
          ]
        )
      ]
    )
    (C {(chmod)} {(755)} {(test.sh)})
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:emitbc spids:[13652])
                  op: Equal
                  rhs: {(DQ ('-S -flto'))}
                  spids: [13652]
                )
              ]
              spids: [13652]
            )
          ]
          spids: [13648 13649 13658 16777215]
        )
        (case_arm
          pat_list: [{(llvm)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:emitbc spids:[13664])
                  op: Equal
                  rhs: {(DQ ('-emit-llvm -c'))}
                  spids: [13664]
                )
              ]
              spids: [13664]
            )
          ]
          spids: [13660 13661 13670 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:emitbc spids:[13676])
                  op: Equal
                  rhs: {(-c)}
                  spids: [13676]
                )
              ]
              spids: [13676]
            )
          ]
          spids: [13672 13673 13680 16777215]
        )
      ]
      spids: [13642 13646 13682]
    )
    (command.SimpleCommand
      words: [{(echo)} {(DQ (': # work around NeXTstep bug'))}]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (C {(cd)} {(DQ ($ VSub_DollarName '$srcdir'))})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:optfiles spids:[13699])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: (command.CommandList children:[(C {(echo)} {(Lit_Other '*') (.opt)})])
                left_token: <Left_Backtick '`'>
                spids: [13700 13705]
              )
            }
          spids: [13699]
        )
      ]
      spids: [13699]
    )
    (C {(cd)} {(DQ ($ VSub_DollarName '$curdir'))})
    (command.ForEach
      iter_name: file
      iter_words: [{($ VSub_DollarName '$optfiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {(DQ ("echo + Running genopt on '") ($ VSub_DollarName '$file') ("'..."))})
            (C {(echo)} 
              {
                (DQ ("(srcfile='") ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file') 
                  ("'; BUILDSH_RUN_GENOPT=1; . '") ($ VSub_DollarName '$srcdir') ("/Build.sh')")
                )
              }
            )
          ]
          spids: [13722 13746]
        )
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
      spids: [13718 13720]
    )
    (command.SimpleCommand
      words: [{(echo)} {(set)} {(-x)}]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ VSub_DollarName '$SRCS')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:op spids:[13772])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(x) (DQ ($ VSub_DollarName '$file'))})
                                  (C {(sed)} {(SQ <'s/^x\\(.*\\)\\.c$/\\1./'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [13773 13788]
                      )
                    }
                  spids: [13772]
                )
              ]
              spids: [13772]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:file spids:[13799])
                      op: Equal
                      rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                      spids: [13799]
                    )
                  ]
                  spids: [13799]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:files spids:[13805])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$files') ($ VSub_DollarName '$sp') 
                        ($ VSub_DollarName '$file')
                      )
                    }
                  spids: [13805]
                )
              ]
              spids: [13805]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sp spids:[13813])
                  op: Equal
                  rhs: {(SQ <' '>)}
                  spids: [13813]
                )
              ]
              spids: [13813]
            )
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                    ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$file') (' || exit 1')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(dragonegg)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ('mv ') (${ VSub_Name op) ('s ') (${ VSub_Name op) (ll))}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(Rebuild.sh)}
                        )
                      ]
                    )
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ('llvm-as ') (${ VSub_Name op) ('ll || exit 1'))}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(Rebuild.sh)}
                        )
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:objs spids:[13884])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$objs') ($ VSub_DollarName '$sp') 
                                (${ VSub_Name op) (bc)
                              )
                            }
                          spids: [13884]
                        )
                      ]
                      spids: [13884]
                    )
                  ]
                  spids: [16777215 13849]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:objs spids:[13898])
                      op: Equal
                      rhs: 
                        {
                          (DQ ($ VSub_DollarName '$objs') ($ VSub_DollarName '$sp') (${ VSub_Name op) 
                            (o)
                          )
                        }
                      spids: [13898]
                    )
                  ]
                  spids: [13898]
                )
              ]
              spids: [13895 13909]
            )
          ]
          spids: [13769 13911]
        )
      spids: [13765 13767]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)} {(llvm)}]
          action: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('rm -f ') ($ VSub_DollarName '$tfn') (.s))}]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
            )
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('llvm-link -o - ') ($ VSub_DollarName '$objs') (' | opt ') 
                    ($ VSub_DollarName '$optflags') (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:lobjs spids:[13953])
                  op: Equal
                  rhs: {($ VSub_DollarName '$tfn') (.s)}
                  spids: [13953]
                )
              ]
              spids: [13953]
            )
          ]
          spids: [13919 13922 13958 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:lobjs spids:[13964])
                  op: Equal
                  rhs: {($ VSub_DollarName '$objs')}
                  spids: [13964]
                )
              ]
              spids: [13964]
            )
          ]
          spids: [13960 13961 13968 16777215]
        )
      ]
      spids: [13913 13917 13970]
    )
    (command.SimpleCommand
      words: [{(echo)} {(Lit_VarLike 'tcfn=') ($ VSub_DollarName '$mkshexe')}]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.SimpleCommand
      words: [
        {(echo)}
        {
          (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
            ($ VSub_DollarName '$LDFLAGS') (' -o ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('tcfn ') 
            ($ VSub_DollarName '$lobjs') (' ') ($ VSub_DollarName '$LIBS') (' ') ($ VSub_DollarName '$ccpr')
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.SimpleCommand
      words: [
        {(echo)}
        {
          (DQ ('test -f ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
            ('tcfn || exit 1; ') ($ VSub_DollarName '$SIZE') (' ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (tcfn)
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(Rebuild.sh)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(makefile)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:extras spids:[14030])
                  op: Equal
                  rhs: {(SQ <'emacsfn.h rlimits.opt sh.h sh_flags.opt var_spec.h'>)}
                  spids: [14030]
                )
              ]
              spids: [14030]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$HAVE_SYS_SIGNAME')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:extras spids:[14046])
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$extras') (' signames.inc'))}
                      spids: [14046]
                    )
                  ]
                  spids: [14046]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:gens spids:[14053])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [14053]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:genq spids:[14055])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [14055]
                )
              ]
              spids: [14053]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ VSub_DollarName '$optfiles')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:genf spids:[14070])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(basename)} {(DQ ($ VSub_DollarName '$file'))})
                                          (C {(sed)} {(SQ <'s/.opt$/.gen/'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [14071 14085]
                              )
                            }
                          spids: [14070]
                        )
                      ]
                      spids: [14070]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:gens spids:[14088])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$gens') (' ') ($ VSub_DollarName '$genf'))}
                          spids: [14088]
                        )
                      ]
                      spids: [14088]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:genq spids:[14096])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$genq') ($ VSub_DollarName '$nl') 
                                ($ VSub_DollarName '$genf') (': ') ($ VSub_DollarName '$srcdir') ('/Build.sh ') ($ VSub_DollarName '$srcdir') (/) 
                                ($ VSub_DollarName '$file') ('\n') ('\t\t\tsrcfile=') ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file') 
                                ('; BUILDSH_RUN_GENOPT=1; . ') ($ VSub_DollarName '$srcdir') (/Build.sh)
                              )
                            }
                          spids: [14096]
                        )
                      ]
                      spids: [14096]
                    )
                  ]
                  spids: [14067 14118]
                )
              spids: [14063 14065]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(Makefrag.inc)}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 14235
                  stdin_parts: [
                    ('# Makefile fragment for building mksh ')
                    ($ VSub_DollarName '$dstversion')
                    ('\n')
                    ('\n')
                    ('PROG=\t\t')
                    ($ VSub_DollarName '$mkshexe')
                    ('\n')
                    ('MAN=\t\tmksh.1\n')
                    ('SRCS=\t\t')
                    ($ VSub_DollarName '$SRCS')
                    ('\n')
                    ('SRCS_FP=\t')
                    ($ VSub_DollarName '$files')
                    ('\n')
                    ('OBJS_BP=\t')
                    ($ VSub_DollarName '$objs')
                    ('\n')
                    ('INDSRCS=\t')
                    ($ VSub_DollarName '$extras')
                    ('\n')
                    ('NONSRCS_INST=\tdot.mkshrc ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(MAN)\n')
                    ('NONSRCS_NOINST=\tBuild.sh Makefile Rebuild.sh check.pl check.t test.sh\n')
                    ('CC=\t\t')
                    ($ VSub_DollarName '$CC')
                    ('\n')
                    ('CFLAGS=\t\t')
                    ($ VSub_DollarName '$CFLAGS')
                    ('\n')
                    ('CPPFLAGS=\t')
                    ($ VSub_DollarName '$CPPFLAGS')
                    ('\n')
                    ('LDFLAGS=\t')
                    ($ VSub_DollarName '$LDFLAGS')
                    ('\n')
                    ('LIBS=\t\t')
                    ($ VSub_DollarName '$LIBS')
                    ('\n')
                    ('\n')
                    ('.depend ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP):')
                    ($ VSub_DollarName '$gens')
                    ($ VSub_DollarName '$genq')
                    ('\n')
                    ('\n')
                    ('# not BSD make only:\n')
                    ('#VPATH=\t\t')
                    ($ VSub_DollarName '$srcdir')
                    ('\n')
                    ('#all: ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(PROG)\n')
                    ('#')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(PROG): ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP)\n')
                    ('#\t')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(CC) ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(CFLAGS) ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(LDFLAGS) -o ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('@ ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP) ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(LIBS)\n')
                    ('#')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(OBJS_BP): ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(SRCS_FP) ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(NONSRCS)\n')
                    ('#.c.o:\n')
                    ('#\t')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(CC) ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(CFLAGS) ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(CPPFLAGS) -c ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('<\n')
                    ('\n')
                    ('# for all make variants:\n')
                    ('#REGRESS_FLAGS=\t-f\n')
                    ('#regress:\n')
                    ('#\t./test.sh ')
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    ('(REGRESS_FLAGS)\n')
                    ('check_categories=')
                    ($ VSub_DollarName '$check_categories')
                    ('\n')
                    ('\n')
                    ('# for BSD make only:\n')
                    ('#.PATH: ')
                    ($ VSub_DollarName '$srcdir')
                    ('\n')
                    ('#.include <bsd.prog.mk>\n')
                  ]
                )
              ]
            )
            (C {($ VSub_DollarName '$e')})
            (C {($ VSub_DollarName '$e')} {(Generated)} {(Makefrag.inc)} {(successfully.)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 14027]
        )
      ]
      spids: [16777215 14253]
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ VSub_DollarName '$optfiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {($ VSub_DollarName '$e')} 
              {(DQ ("+ Running genopt on '") ($ VSub_DollarName '$file') ("'..."))}
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(do_genopt)} {(DQ ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file'))})
                (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
          spids: [14264 14290]
        )
      spids: [14260 14262]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(combine)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:objs spids:[14306])
                  op: Equal
                  rhs: {(DQ ('-o ') ($ VSub_DollarName '$mkshexe'))}
                  spids: [14306]
                )
              ]
              spids: [14306]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ VSub_DollarName '$SRCS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:file spids:[14333])
                              op: Equal
                              rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                              spids: [14333]
                            )
                          ]
                          spids: [14333]
                        )
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:objs spids:[14339])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$objs') (' ') ($ VSub_DollarName '$file'))}
                          spids: [14339]
                        )
                      ]
                      spids: [14339]
                    )
                  ]
                  spids: [14322 14347]
                )
              spids: [14318 14320]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:emitbc spids:[14350])
                  op: Equal
                  rhs: {(DQ ('-fwhole-program --combine'))}
                  spids: [14350]
                )
              ]
              spids: [14350]
            )
            (C {(v)} 
              {
                (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                  ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$LDFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$objs') 
                  (' ') ($ VSub_DollarName '$LIBS') (' ') ($ VSub_DollarName '$ccpr')
                )
              }
            )
          ]
          spids: [16777215 14303]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$pm')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ForEach
              iter_name: file
              iter_words: [{($ VSub_DollarName '$SRCS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:file spids:[14410])
                              op: Equal
                              rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                              spids: [14410]
                            )
                          ]
                          spids: [14410]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {(v)} 
                          {
                            (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                              ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$file')
                            )
                          }
                        )
                      terminator: <Op_Amp '&'>
                    )
                  ]
                  spids: [14399 14433]
                )
              spids: [14395 14397]
            )
            (C {(wait)})
          ]
          spids: [14376 14387]
        )
      ]
      else_action: [
        (command.ForEach
          iter_name: file
          iter_words: [{($ VSub_DollarName '$SRCS')}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(dragonegg)})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:op spids:[14465])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(x) (DQ ($ VSub_DollarName '$file'))})
                                          (C {(sed)} {(SQ <'s/^x\\(.*\\)\\.c$/\\1./'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [14466 14481]
                              )
                            }
                          spids: [14465]
                        )
                      ]
                      spids: [14465]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(test)} {(-f)} {($ VSub_DollarName '$file')})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:file spids:[14492])
                          op: Equal
                          rhs: {($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$file')}
                          spids: [14492]
                        )
                      ]
                      spids: [14492]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(v)} 
                      {
                        (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
                          ($ VSub_DollarName '$CPPFLAGS') (' ') ($ VSub_DollarName '$emitbc') (' ') ($ VSub_DollarName '$file')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(dragonegg)})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(v)} {(DQ ('mv ') (${ VSub_Name op) ('s ') (${ VSub_Name op) (ll))})
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(v)} {(DQ ('llvm-as ') (${ VSub_Name op) (ll))})
                            (command.ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(1)}
                            )
                          ]
                        )
                      ]
                      spids: [16777215 14530]
                    )
                  ]
                  spids: [16777215 14565]
                )
              ]
              spids: [14450 14568]
            )
          spids: [14446 14448]
        )
      ]
      spids: [14438 14570]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$cm')}
      arms: [
        (case_arm
          pat_list: [{(dragonegg)} {(llvm)}]
          action: [
            (C {(rmf)} {($ VSub_DollarName '$tfn') (.s)})
            (C {(v)} 
              {
                (DQ ('llvm-link -o - ') ($ VSub_DollarName '$objs') (' | opt ') 
                  ($ VSub_DollarName '$optflags') (' | llc -o ') ($ VSub_DollarName '$tfn') (.s)
                )
              }
            )
          ]
          spids: [14578 14581 14603 16777215]
        )
      ]
      spids: [14572 14576 14605]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:tcfn spids:[14607])
          op: Equal
          rhs: {($ VSub_DollarName '$mkshexe')}
          spids: [14607]
        )
      ]
      spids: [14607]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {($ VSub_DollarName '$cm')} {(Lit_Other '=')} {(combine)})
        (C {(v)} 
          {
            (DQ ($ VSub_DollarName '$CC') (' ') ($ VSub_DollarName '$CFLAGS') (' ') 
              ($ VSub_DollarName '$LDFLAGS') (' -o ') ($ VSub_DollarName '$tcfn') (' ') ($ VSub_DollarName '$lobjs') (' ') ($ VSub_DollarName '$LIBS') 
              (' ') ($ VSub_DollarName '$ccpr')
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {($ VSub_DollarName '$tcfn')})
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.AndOr
      ops: [Op_DPipe Op_DPipe]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$r')})
        (C {(v)} 
          {
            (DQ ($ VSub_DollarName '$NROFF') (" -mdoc <'") ($ VSub_DollarName '$srcdir') ("/mksh.1' >") 
              ($ VSub_DollarName '$tfn') (.cat1)
            )
          }
        )
        (C {(rmf)} {($ VSub_DollarName '$tfn') (.cat1)})
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(0)} {(Lit_Other '=')} {($ VSub_DollarName '$eq')})
        (C {(v)} {($ VSub_DollarName '$SIZE')} {($ VSub_DollarName '$tcfn')})
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:i spids:[14696])
          op: Equal
          rhs: {(install)}
          spids: [14696]
        )
      ]
      spids: [14696]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(/usr/ucb/) ($ VSub_DollarName '$i')})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:i spids:[14708])
              op: Equal
              rhs: {(/usr/ucb/) ($ VSub_DollarName '$i')}
              spids: [14708]
            )
          ]
          spids: [14708]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(1)} {(Lit_Other '=')} {($ VSub_DollarName '$eq')})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:e spids:[14722])
              op: Equal
              rhs: {(Lit_Other ':')}
              spids: [14722]
            )
          ]
          spids: [14722]
        )
      ]
    )
    (C {($ VSub_DollarName '$e')})
    (C {($ VSub_DollarName '$e')} {(Installing)} {(the)} {(shell) (Lit_Other ':')})
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ('# ') ($ VSub_DollarName '$i') (' -c -s -o root -g bin -m 555 ') ($ VSub_DollarName '$tfn') 
          (' /bin/') ($ VSub_DollarName '$tfn')
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ VSub_DollarName '$legacy')} {(Lit_Other '=')} {(0)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ('# grep -x /bin/') ($ VSub_DollarName '$tfn') 
                  (' /etc/shells >/dev/null || echo /bin/') ($ VSub_DollarName '$tfn') (' >>/etc/shells')
                )
              }
            )
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ('# ') ($ VSub_DollarName '$i') 
                  (' -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/')
                )
              }
            )
          ]
          spids: [16777215 14758]
        )
      ]
      spids: [16777215 14780]
    )
    (C {($ VSub_DollarName '$e')})
    (C {($ VSub_DollarName '$e')} {(Installing)} {(the)} {(manual) (Lit_Other ':')})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-f)} {($ VSub_DollarName '$tfn') (.cat1)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {($ VSub_DollarName '$e')} 
              {
                (DQ ('# ') ($ VSub_DollarName '$i') (' -c -o root -g bin -m 444 ') 
                  ($ VSub_DollarName '$tfn') (.cat1)
                )
              } {(DQ (/usr/share/man/cat1/) ($ VSub_DollarName '$tfn') (.0))}
            )
            (C {($ VSub_DollarName '$e')} {(or)})
          ]
          spids: [16777215 14803]
        )
      ]
      spids: [16777215 14829]
    )
    (C {($ VSub_DollarName '$e')} 
      {
        (DQ ('# ') ($ VSub_DollarName '$i') (' -c -o root -g bin -m 444 ') ($ VSub_DollarName '$tfn') 
          ('.1 /usr/share/man/man1/') ($ VSub_DollarName '$tfn') (.1)
        )
      }
    )
    (C {($ VSub_DollarName '$e')})
    (C {($ VSub_DollarName '$e')} {(Run)} {(the)} {(regression)} {(test)} {(suite) (Lit_Other ':')} 
      {(./test.sh)}
    )
    (C {($ VSub_DollarName '$e')} {(Please)} {(also)} {(read)} {(the)} {(sample)} {(file)} {(dot.mkshrc)} 
      {(and)} {(the)} {(fine)} {(manual.)}
    )
    (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
    (command.SimpleCommand
      words: [{(Lit_Other ':')}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOD>)}
          here_end_span_id: 14973
          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')
          ]
        )
      ]
    )
  ]
)