(command.CommandList
  children: [
    (C {(cd)} 
      {
        (word_part.CommandSubPart
          command_list: (command.CommandList children:[(C {(dirname)} {(DQ ($ VSub_Number '$0'))})])
          left_token: <Left_Backtick '`'>
          spids: [25 31]
        ) (/../..)
      }
    )
    (C {(set)} {(-e)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:bits spids:[41])
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [41]
        )
      ]
      spids: [41]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$bits')}
      arms: [
        (case_arm
          pat_list: [{(32)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:host spids:[56])
                  op: Equal
                  rhs: {(i686-w64-mingw32)}
                  spids: [56]
                )
              ]
              spids: [56]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:exc spids:[60])
                  op: Equal
                  rhs: {(sjlj)}
                  spids: [60]
                )
              ]
              spids: [60]
            )
          ]
          spids: [52 53 64 16777215]
        )
        (case_arm
          pat_list: [{(64)}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:host spids:[71])
                  op: Equal
                  rhs: {(x86_64-w64-mingw32)}
                  spids: [71]
                )
              ]
              spids: [71]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:exc spids:[75])
                  op: Equal
                  rhs: {(seh)}
                  spids: [75]
                )
              ]
              spids: [75]
            )
          ]
          spids: [67 68 79 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (SQ 
                    <
'error: run script either as `./get_toolchain.sh 32` or `./get_toolchain.sh 64`'
                    >
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [82 83 101 16777215]
        )
      ]
      spids: [45 49 103]
    )
    (C {(echo)} 
      {
        (DQ ('Downloading ') ($ VSub_DollarName '$host') (' toolchain, check ') 
          ($ VSub_DollarName '$PWD') ('/get_toolchain.log for full output')
        )
      }
    )
    (command.SimpleCommand
      words: [
        {(contrib/windows/winrpm.sh)}
        {(http) (Lit_Other ':') (//download.opensuse.org/repositories/windows) (Lit_Other ':') (/mingw) 
          (Lit_Other ':') (/win) ($ VSub_DollarName '$bits') (/openSUSE_Leap_42.2)
        }
        {
          (DQ (mingw) ($ VSub_DollarName '$bits') ('-gcc mingw') ($ VSub_DollarName '$bits') 
            ('-gcc-c++ mingw') ($ VSub_DollarName '$bits') ('-gcc-fortran ') ('   mingw') ($ VSub_DollarName '$bits') ('-libssp0 mingw') 
            ($ VSub_DollarName '$bits') ('-libstdc++6 mingw') ($ VSub_DollarName '$bits') (-libgfortran3)
          )
        }
      ]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(get_toolchain.log)})]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:mingwdir spids:[152])
          op: Equal
          rhs: {(usr/) ($ VSub_DollarName '$host') (/sys-root/mingw)}
          spids: [152]
        )
      ]
      spids: [152]
    )
    (C {(chmod)} {(Lit_Other '+') (x)} {($ VSub_DollarName '$mingwdir') (/bin/) (Lit_Other '*')} 
      {($ VSub_DollarName '$mingwdir') (/) ($ VSub_DollarName '$host') (/bin/) (Lit_Other '*')} 
      {($ VSub_DollarName '$mingwdir') (/libexec/gcc/) ($ VSub_DollarName '$host') (/) (Lit_Other '*') 
        (/) (Lit_Other '*')
      }
    )
    (C {(mkdir)} {(-p)} {(usr/bin)})
    (command.ForEach
      iter_name: i
      iter_words: [
        {(gcc_s_) ($ VSub_DollarName '$exc') (-1)}
        {(ssp-0)}
        {(stdc) (Lit_Other '+') (Lit_Other '+') (-6)}
        {(gfortran-3)}
        {(quadmath-0)}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(cp)} {($ VSub_DollarName '$mingwdir') (/bin/lib) ($ VSub_DollarName '$i') (.dll)} 
              {(usr/bin)}
            )
          ]
          spids: [208 220]
        )
      spids: [191 206]
    )
    (C {($ VSub_DollarName '$mingwdir') (/bin/g) (Lit_Other '+') (Lit_Other '+')} {(--version)})
    (C {(cp)} {($ VSub_DollarName '$mingwdir') (/) ($ VSub_DollarName '$host') (/bin/) (Lit_Other '*')} 
      {($ VSub_DollarName '$mingwdir') (/bin)}
    )
    (command.Case
      to_match: 
        {
          (word_part.CommandSubPart
            command_list: (command.CommandList children:[(C {(uname)})])
            left_token: <Left_CommandSub '$('>
            spids: [245 247]
          )
        }
      arms: [
        (case_arm
          pat_list: [{(CYGWIN) (Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:mklink spids:[257])
                  op: Equal
                  rhs: {(DQ ('cmd /C mklink /J'))}
                  spids: [257]
                )
              ]
              spids: [257]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{(gcc)} {(g) (Lit_Other '+') (Lit_Other '+')} {(gfortran)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(mv)} {($ VSub_DollarName '$mingwdir') (/bin/) ($ VSub_DollarName '$i') (.exe)} 
                      {($ VSub_DollarName '$mingwdir') (/bin/) ($ VSub_DollarName '$host') (-) 
                        ($ VSub_DollarName '$i') (.exe)
                      }
                    )
                  ]
                  spids: [282 300]
                )
              spids: [272 280]
            )
          ]
          spids: [252 254 303 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:mklink spids:[310])
                  op: Equal
                  rhs: {(DQ ('cmd //C mklink //J'))}
                  spids: [310]
                )
              ]
              spids: [310]
            )
          ]
          spids: [306 307 316 16777215]
        )
      ]
      spids: [243 249 318]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(Lit_Other '[')} {(-e)} 
                      {($ VSub_DollarName '$mingwdir') (/) ($ VSub_DollarName '$host') (/include)} {(Lit_Other ']')}
                    )
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {($ VSub_DollarName '$mklink')} 
              {
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(cygpath)} {(-w)} 
                          {($ VSub_DollarName '$mingwdir') (/) ($ VSub_DollarName '$host') (/include)}
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [341 350]
                )
              } 
              {
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [(C {(cygpath)} {(-w)} {($ VSub_DollarName '$mingwdir') (/include)})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [352 359]
                )
              }
            )
          ]
          spids: [16777215 336]
        )
      ]
      spids: [16777215 361]
    )
    (C {(echo)} 
      {
        (DQ ('Toolchain successfully downloaded to ') ($ VSub_DollarName '$PWD') (/) 
          ($ VSub_DollarName '$mingwdir')
        )
      }
    )
    (C {(echo)} 
      {
        (DQ ('Add toolchain to your path by running ') 
          (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ('export PATH=') ($ VSub_DollarName '$PWD') (/) ($ VSub_DollarName '$mingwdir') ('/bin:') 
          (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (PATH) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\`'>)
        )
      }
    )
  ]
)