(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:args_orig spids:[126])
          op: Equal
          rhs: {($ VSub_At '$@')}
          spids: [126]
        )
      ]
      spids: [126]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:args spids:[129])
          op: Equal
          rhs: {(DQ ('-nologo -W3'))}
          spids: [129]
        )
      ]
      spids: [129]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:static_crt spids:[134])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [134]
        )
      ]
      spids: [134]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:debug_crt spids:[136])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [136]
        )
      ]
      spids: [136]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:cl spids:[138])
          op: Equal
          rhs: {(DQ (cl))}
          spids: [138]
        )
      ]
      spids: [138]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ml spids:[143])
          op: Equal
          rhs: {(DQ (ml))}
          spids: [143]
        )
      ]
      spids: [143]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:safeseh spids:[148])
          op: Equal
          rhs: {(DQ (-safeseh))}
          spids: [148]
        )
      ]
      spids: [148]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:output spids:[153])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [153]
        )
      ]
      spids: [153]
    )
    (command.WhileUntil
      keyword: <KW_While while>
      cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(-fexceptions)}]
                  action: [(C {(shift)} {(1)})]
                  spids: [179 180 196 16777215]
                )
                (case_arm
                  pat_list: [{(-m32)}]
                  action: [(C {(shift)} {(1)})]
                  spids: [199 200 208 16777215]
                )
                (case_arm
                  pat_list: [{(-m64)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ml spids:[215])
                          op: Equal
                          rhs: {(DQ (ml64))}
                          spids: [215]
                        )
                      ]
                      spids: [215]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:safeseh spids:[224])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [224]
                        )
                      ]
                      spids: [224]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [211 212 232 16777215]
                )
                (case_arm
                  pat_list: [{(-clang-cl)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cl spids:[239])
                          op: Equal
                          rhs: {(DQ (clang-cl))}
                          spids: [239]
                        )
                      ]
                      spids: [239]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:safeseh spids:[245])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [245]
                        )
                      ]
                      spids: [245]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [235 236 253 16777215]
                )
                (case_arm
                  pat_list: [{(-O0)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[260])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -Od'))}
                          spids: [260]
                        )
                      ]
                      spids: [260]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [256 257 272 16777215]
                )
                (case_arm
                  pat_list: [{(-O) (Lit_Other '*')}]
                  action: [
                    (command.Case
                      to_match: {($ VSub_DollarName '$args_orig')}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (-DFFI_DEBUG) (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:args spids:[309])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$args'))}
                                  spids: [309]
                                )
                              ]
                              spids: [309]
                            )
                          ]
                          spids: [303 306 315 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (command.Case
                              to_match: {($ VSub_Number '$1')}
                              arms: [
                                (case_arm
                                  pat_list: [{(-O3)}]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:args spids:[349])
                                          op: Equal
                                          rhs: {(DQ ($ VSub_DollarName '$args') (' -O2'))}
                                          spids: [349]
                                        )
                                      ]
                                      spids: [349]
                                    )
                                  ]
                                  spids: [345 346 356 16777215]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:args spids:[363])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ ($ VSub_DollarName '$args') (' ') 
                                                ($ VSub_Number '$1')
                                              )
                                            }
                                          spids: [363]
                                        )
                                      ]
                                      spids: [363]
                                    )
                                  ]
                                  spids: [359 360 371 16777215]
                                )
                              ]
                              spids: [338 342 374]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:opt spids:[377])
                                  op: Equal
                                  rhs: {(DQ (true))}
                                  spids: [377]
                                )
                              ]
                              spids: [377]
                            )
                          ]
                          spids: [318 319 383 16777215]
                        )
                      ]
                      spids: [296 300 386]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [275 277 394 16777215]
                )
                (case_arm
                  pat_list: [{(-g)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[405])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -Zi'))}
                          spids: [405]
                        )
                      ]
                      spids: [405]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [397 398 417 16777215]
                )
                (case_arm
                  pat_list: [{(-DFFI_DEBUG)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[428])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -RTC1'))}
                          spids: [428]
                        )
                      ]
                      spids: [428]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:defines spids:[435])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$defines') (' ') ($ VSub_Number '$1'))}
                          spids: [435]
                        )
                      ]
                      spids: [435]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [420 421 448 16777215]
                )
                (case_arm
                  pat_list: [{(-DUSE_STATIC_RTL)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:static_crt spids:[459])
                          op: Equal
                          rhs: {(1)}
                          spids: [459]
                        )
                      ]
                      spids: [459]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [451 452 468 16777215]
                )
                (case_arm
                  pat_list: [{(-DUSE_DEBUG_RTL)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:debug_crt spids:[479])
                          op: Equal
                          rhs: {(1)}
                          spids: [479]
                        )
                      ]
                      spids: [479]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [471 472 488 16777215]
                )
                (case_arm
                  pat_list: [{(-c)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[495])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -c'))}
                          spids: [495]
                        )
                      ]
                      spids: [495]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[502])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_DollarName '$args')})
                                            (C {(sed)} {(SQ <'s%/Fe%/Fo%g'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [504 516]
                                )
                              )
                            }
                          spids: [502]
                        )
                      ]
                      spids: [502]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:single spids:[520])
                          op: Equal
                          rhs: {(DQ (-c))}
                          spids: [520]
                        )
                      ]
                      spids: [520]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [491 492 531 16777215]
                )
                (case_arm
                  pat_list: [{(-D) (Lit_Other '*') (Lit_Other '=') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:name spids:[541])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_Number '$1')})
                                            (C {(sed)} {(SQ <'s/-D\\([^=][^=]*\\)=.*/\\1/g'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [543 553]
                                )
                              )
                            }
                          spids: [541]
                        )
                      ]
                      spids: [541]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:value spids:[557])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_Number '$1')})
                                            (C {(sed)} {(SQ <'s/-D[^=][^=]*=//g'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [559 569]
                                )
                              )
                            }
                          spids: [557]
                        )
                      ]
                      spids: [557]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[573])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$args') (' -D') (${ VSub_Name name) ("='") 
                                ($ VSub_DollarName '$value') ("'")
                              )
                            }
                          spids: [573]
                        )
                      ]
                      spids: [573]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:defines spids:[586])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$defines') (' -D') (${ VSub_Name name) ("='") 
                                ($ VSub_DollarName '$value') ("'")
                              )
                            }
                          spids: [586]
                        )
                      ]
                      spids: [586]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [534 538 604 16777215]
                )
                (case_arm
                  pat_list: [{(-D) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[612])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' ') ($ VSub_Number '$1'))}
                          spids: [612]
                        )
                      ]
                      spids: [612]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:defines spids:[620])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$defines') (' ') ($ VSub_Number '$1'))}
                          spids: [620]
                        )
                      ]
                      spids: [620]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [607 609 633 16777215]
                )
                (case_arm
                  pat_list: [{(-I)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[640])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -I') ($ VSub_Number '$2'))}
                          spids: [640]
                        )
                      ]
                      spids: [640]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:includes spids:[648])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$includes') (' -I') ($ VSub_Number '$2'))}
                          spids: [648]
                        )
                      ]
                      spids: [648]
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [636 637 661 16777215]
                )
                (case_arm
                  pat_list: [{(-I) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[669])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' ') ($ VSub_Number '$1'))}
                          spids: [669]
                        )
                      ]
                      spids: [669]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:includes spids:[677])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$includes') (' ') ($ VSub_Number '$1'))}
                          spids: [677]
                        )
                      ]
                      spids: [677]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [664 666 690 16777215]
                )
                (case_arm
                  pat_list: [{(-W)} {(-Wextra)}]
                  action: [(C {(shift)} {(1)})]
                  spids: [693 696 708 16777215]
                )
                (case_arm
                  pat_list: [{(-Wall)}]
                  action: [(C {(shift)} {(1)})]
                  spids: [711 712 728 16777215]
                )
                (case_arm
                  pat_list: [{(-pedantic)}]
                  action: [(C {(shift)} {(1)})]
                  spids: [731 732 744 16777215]
                )
                (case_arm
                  pat_list: [{(-Werror)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[751])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -WX'))}
                          spids: [751]
                        )
                      ]
                      spids: [751]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [747 748 763 16777215]
                )
                (case_arm
                  pat_list: [{(-W) (Lit_Other '*')}]
                  action: [(C {(shift)} {(1)})]
                  spids: [766 768 780 16777215]
                )
                (case_arm
                  pat_list: [{(-S)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[787])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' -FAs'))}
                          spids: [787]
                        )
                      ]
                      spids: [787]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [783 784 799 16777215]
                )
                (case_arm
                  pat_list: [{(-o)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:outdir spids:[806])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [(C {(dirname)} {($ VSub_Number '$2')})]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [808 812]
                                )
                              )
                            }
                          spids: [806]
                        )
                      ]
                      spids: [806]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:base spids:[816])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(basename)} {($ VSub_Number '$2')})
                                            (C {(sed)} {(SQ <'s/\\.[^.]*//g'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [818 828]
                                )
                              )
                            }
                          spids: [816]
                        )
                      ]
                      spids: [816]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$single'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:output spids:[849])
                                  op: Equal
                                  rhs: {(DQ (-Fo) ($ VSub_Number '$2'))}
                                  spids: [849]
                                )
                              ]
                              spids: [849]
                            )
                          ]
                          spids: [16777215 845]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:output spids:[859])
                              op: Equal
                              rhs: {(DQ (-Fe) ($ VSub_Number '$2'))}
                              spids: [859]
                            )
                          ]
                          spids: [859]
                        )
                      ]
                      spids: [856 866]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$assembly'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:args spids:[885])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$args') (' ') 
                                        ($ VSub_DollarName '$output')
                                      )
                                    }
                                  spids: [885]
                                )
                              ]
                              spids: [885]
                            )
                          ]
                          spids: [16777215 882]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:args spids:[896])
                              op: Equal
                              rhs: 
                                {
                                  (DQ ($ VSub_DollarName '$args') (' ') ($ VSub_DollarName '$output') 
                                    (' -Fd') ($ VSub_DollarName '$outdir') (/) ($ VSub_DollarName '$base') (' -Fp') ($ VSub_DollarName '$outdir') (/) 
                                    ($ VSub_DollarName '$base') (' -Fa') ($ VSub_DollarName '$outdir') (/) ($ VSub_DollarName '$base')
                                  )
                                }
                              spids: [896]
                            )
                          ]
                          spids: [896]
                        )
                      ]
                      spids: [893 916]
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [802 803 924 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (.S)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:src spids:[932])
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [932]
                        )
                      ]
                      spids: [932]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:assembly spids:[936])
                          op: Equal
                          rhs: {(DQ (true))}
                          spids: [936]
                        )
                      ]
                      spids: [936]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [927 929 947 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (.c)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[955])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' ') ($ VSub_Number '$1'))}
                          spids: [955]
                        )
                      ]
                      spids: [955]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [950 952 968 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:args spids:[979])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$args') (' ') ($ VSub_Number '$1'))}
                          spids: [979]
                        )
                      ]
                      spids: [979]
                    )
                    (C {(shift)} {(1)})
                  ]
                  spids: [971 972 992 16777215]
                )
              ]
              spids: [171 176 995]
            )
          ]
          spids: [168 997]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$opt'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:args spids:[1025])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$args') (' -link -OPT:REF -OPT:ICF -INCREMENTAL:NO'))}
                  spids: [1025]
                )
              ]
              spids: [1025]
            )
          ]
          spids: [16777215 1022]
        )
      ]
      spids: [16777215 1031]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$static_crt'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:md spids:[1050])
                  op: Equal
                  rhs: {(-MT)}
                  spids: [1050]
                )
              ]
              spids: [1050]
            )
          ]
          spids: [16777215 1047]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:md spids:[1056])
              op: Equal
              rhs: {(-MD)}
              spids: [1056]
            )
          ]
          spids: [1056]
        )
      ]
      spids: [1053 1059]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$debug_crt'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:md spids:[1078])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name md) (d))}
                  spids: [1078]
                )
              ]
              spids: [1078]
            )
          ]
          spids: [16777215 1075]
        )
      ]
      spids: [16777215 1086]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$assembly'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$outdir'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:outdir spids:[1121])
                          op: Equal
                          rhs: {(DQ (.))}
                          spids: [1121]
                        )
                      ]
                      spids: [1121]
                    )
                  ]
                  spids: [16777215 1118]
                )
              ]
              spids: [16777215 1127]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ppsrc spids:[1130])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$outdir') (/) 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(basename)} {($ VSub_DollarName '$src')})
                                    (C {(sed)} {(SQ <'s/.S$/.asm/g'>)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [1134 1144]
                        )
                      )
                    }
                  spids: [1130]
                )
              ]
              spids: [1130]
            )
            (C {(echo)} 
              {
                (DQ ($ VSub_DollarName '$cl') (' -nologo -EP ') ($ VSub_DollarName '$includes') (' ') 
                  ($ VSub_DollarName '$defines') (' ') ($ VSub_DollarName '$src') (' > ') ($ VSub_DollarName '$ppsrc')
                )
              }
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.SimpleCommand
                  words: [
                    {(DQ ($ VSub_DollarName '$cl'))}
                    {(-nologo)}
                    {(-EP)}
                    {($ VSub_DollarName '$includes')}
                    {($ VSub_DollarName '$defines')}
                    {($ VSub_DollarName '$src')}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_DollarName '$ppsrc')}
                    )
                  ]
                )
                (command.ControlFlow
                  token: <ControlFlow_Exit exit>
                  arg_word: {($ VSub_QMark '$?')}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:output spids:[1188])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} {($ VSub_DollarName '$output')})
                                    (C {(sed)} {(SQ <'s%/F[dpa][^ ]*%%g'>)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [1190 1202]
                        )
                      )
                    }
                  spids: [1188]
                )
              ]
              spids: [1188]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:args spids:[1206])
                  op: Equal
                  rhs: 
                    {
                      (DQ ('-nologo ') ($ VSub_DollarName '$safeseh') (' ') 
                        ($ VSub_DollarName '$single') (' ') ($ VSub_DollarName '$output') (' ') ($ VSub_DollarName '$ppsrc')
                      )
                    }
                  spids: [1206]
                )
              ]
              spids: [1206]
            )
            (C {(echo)} {(DQ ($ VSub_DollarName '$ml') (' ') ($ VSub_DollarName '$args'))})
            (C {(eval)} 
              {
                (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                  ($ VSub_DollarName '$ml') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_DollarName '$args')
                )
              }
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:result spids:[1240])
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [1240]
                )
              ]
              spids: [1240]
            )
          ]
          spids: [16777215 1102]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:args spids:[1255])
              op: Equal
              rhs: {(DQ ($ VSub_DollarName '$md') (' ') ($ VSub_DollarName '$args'))}
              spids: [1255]
            )
          ]
          spids: [1255]
        )
        (C {(echo)} {(DQ ($ VSub_DollarName '$cl') (' ') ($ VSub_DollarName '$args'))})
        (C {(eval)} 
          {
            (DQ ('(') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
              ($ VSub_DollarName '$cl') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_DollarName '$args') 
              (' 2>&1 1>&3 | ') ("          awk '{print ") (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
              ("0} /D9002/ {error=1} END{exit error}' >&2) 3>&1")
            )
          }
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:result spids:[1297])
              op: Equal
              rhs: {($ VSub_QMark '$?')}
              spids: [1297]
            )
          ]
          spids: [1297]
        )
      ]
      spids: [1252 1300]
    )
    (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_DollarName '$result')})
  ]
)