(command.CommandList
  children: [
    (C {<cd>} 
      {
        (command_sub
          left_token: <Id.Left_Backtick '`'>
          command_list: 
            (command.CommandList
              children: [(C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})]
            )
        ) </../..>
      }
    )
    (C {<Id.KW_Set set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bits)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [43]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$bits')}
      arms: [
        (case_arm
          pat_list: [{<32>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host)
                  op: assign_op.Equal
                  rhs: {<i686-w64-mingw32>}
                  spids: [58]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exc)
                  op: assign_op.Equal
                  rhs: {<sjlj>}
                  spids: [62]
                )
              ]
            )
          ]
          spids: [54 55 66 -1]
        )
        (case_arm
          pat_list: [{<64>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host)
                  op: assign_op.Equal
                  rhs: {<x86_64-w64-mingw32>}
                  spids: [73]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exc)
                  op: assign_op.Equal
                  rhs: {<seh>}
                  spids: [77]
                )
              ]
            )
          ]
          spids: [69 70 81 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (SQ 
                    <
'error: run script either as `./get_toolchain.sh 32` or `./get_toolchain.sh 64`'
                    >
                  )
                }
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [84 85 103 -1]
        )
      ]
    )
    (C {<echo>} 
      {
        (DQ <'Downloading '> ($ Id.VSub_DollarName '$host') <' toolchain, check '> 
          ($ Id.VSub_DollarName '$PWD') <'/get_toolchain.log for full output'>
        )
      }
    )
    (command.Simple
      words: [
        {<contrib/windows/winrpm.sh>}
        {<http> <Id.Lit_Other ':'> <//download.opensuse.org/repositories/windows> <Id.Lit_Other ':'> 
          </mingw> <Id.Lit_Other ':'> </win> ($ Id.VSub_DollarName '$bits') </openSUSE_Leap_42.2>
        }
        {
          (DQ <mingw> ($ Id.VSub_DollarName '$bits') <'-gcc mingw'> ($ Id.VSub_DollarName '$bits') 
            <'-gcc-c++ mingw'> ($ Id.VSub_DollarName '$bits') <'-gcc-fortran '> <'   mingw'> ($ Id.VSub_DollarName '$bits') 
            <'-libssp0 mingw'> ($ Id.VSub_DollarName '$bits') <'-libstdc++6 mingw'> ($ Id.VSub_DollarName '$bits') <-libgfortran3>
          )
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<get_toolchain.log>})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:mingwdir)
          op: assign_op.Equal
          rhs: {<usr/> ($ Id.VSub_DollarName '$host') </sys-root/mingw>}
          spids: [154]
        )
      ]
    )
    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName '$mingwdir') </bin/> <Id.Lit_Star '*'>} 
      {($ Id.VSub_DollarName '$mingwdir') </> ($ Id.VSub_DollarName '$host') </bin/> <Id.Lit_Star '*'>} 
      {($ Id.VSub_DollarName '$mingwdir') </libexec/gcc/> ($ Id.VSub_DollarName '$host') </> 
        <Id.Lit_Star '*'> </> <Id.Lit_Star '*'>
      }
    )
    (C {<mkdir>} {<-p>} {<usr/bin>})
    (command.ForEach
      iter_name: i
      iter_words: [
        {<gcc_s_> ($ Id.VSub_DollarName '$exc') <-1>}
        {<ssp-0>}
        {<stdc> <Id.Lit_Other '+'> <Id.Lit_Other '+'> <-6>}
        {<gfortran-3>}
        {<quadmath-0>}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<cp>} 
              {($ Id.VSub_DollarName '$mingwdir') </bin/lib> ($ Id.VSub_DollarName '$i') <.dll>} {<usr/bin>}
            )
          ]
        )
    )
    (C {($ Id.VSub_DollarName '$mingwdir') </bin/g> <Id.Lit_Other '+'> <Id.Lit_Other '+'>} 
      {<--version>}
    )
    (C {<cp>} 
      {($ Id.VSub_DollarName '$mingwdir') </> ($ Id.VSub_DollarName '$host') </bin/> <Id.Lit_Star '*'>} {($ Id.VSub_DollarName '$mingwdir') </bin>}
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            command_list: (command.CommandList children:[(C {<uname>})])
          )
        }
      arms: [
        (case_arm
          pat_list: [{<CYGWIN> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mklink)
                  op: assign_op.Equal
                  rhs: {(DQ <'cmd /C mklink /J'>)}
                  spids: [259]
                )
              ]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{<gcc>} {<g> <Id.Lit_Other '+'> <Id.Lit_Other '+'>} {<gfortran>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<mv>} 
                      {($ Id.VSub_DollarName '$mingwdir') </bin/> ($ Id.VSub_DollarName '$i') <.exe>} 
                      {($ Id.VSub_DollarName '$mingwdir') </bin/> ($ Id.VSub_DollarName '$host') <-> 
                        ($ Id.VSub_DollarName '$i') <.exe>
                      }
                    )
                  ]
                )
            )
          ]
          spids: [254 256 305 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mklink)
                  op: assign_op.Equal
                  rhs: {(DQ <'cmd //C mklink //J'>)}
                  spids: [312]
                )
              ]
            )
          ]
          spids: [308 309 318 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                      {($ Id.VSub_DollarName '$mingwdir') </> ($ Id.VSub_DollarName '$host') </include>} {<Id.Lit_RBracket ']'>}
                    )
                  ]
                  negated: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {($ Id.VSub_DollarName '$mklink')} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {<cygpath>} {<-w>} 
                          {($ Id.VSub_DollarName '$mingwdir') </> ($ Id.VSub_DollarName '$host') 
                            </include>
                          }
                        )
                      ]
                    )
                )
              } 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {<cygpath>} {<-w>} {($ Id.VSub_DollarName '$mingwdir') </include>})]
                    )
                )
              }
            )
          ]
          spids: [322 338]
        )
      ]
    )
    (C {<echo>} 
      {
        (DQ <'Toolchain successfully downloaded to '> ($ Id.VSub_DollarName '$PWD') </> 
          ($ Id.VSub_DollarName '$mingwdir')
        )
      }
    )
    (C {<echo>} 
      {
        (DQ <'Add toolchain to your path by running '> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'export PATH='> ($ Id.VSub_DollarName '$PWD') </> ($ Id.VSub_DollarName '$mingwdir') <'/bin:'> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <PATH> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>)
        )
      }
    )
  ]
)