(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OS) op:Equal rhs:{($ VSub_Number '$1')} spids:[22])]
      spids: [22]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ARCH) op:Equal rhs:{($ VSub_Number '$2')} spids:[25])]
      spids: [25]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MAKE_TARGET)
          op: Equal
          rhs: {($ VSub_Number '$3')}
          spids: [28]
        )
      ]
      spids: [28]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolBinary op_id:Redir_Less left:{($ VSub_Pound '$#')} right:{(3)})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('No arguments provided. This script is intended to be run from Maven.'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 45]
        )
      ]
      spids: [16777215 59]
    )
    (Case
      to_match: {($ VSub_Name '$MAKE_TARGET')}
      arms: [
        (case_arm pat_list:[{(protoc-gen-javalite)}] spids:[69 70 73 16777215])
        (case_arm pat_list:[{(protoc)}] spids:[76 77 80 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (C {(echo)} {(DQ ('Target ')) (DQ ($ VSub_Name '$TARGET')) (DQ (' invalid.'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [83 84 16777215 104]
        )
      ]
      spids: [62 66 104]
    )
    (C {(export)} {(Lit_VarLike 'PATH=') (DQ ('/bin:/usr/bin:') ($ VSub_Name '$PATH'))})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:E_PARAM_ERR) op:Equal rhs:{(98)} spids:[131])]
      spids: [131]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:E_ASSERT_FAILED) op:Equal rhs:{(99)} spids:[134])]
      spids: [134]
    )
    (FuncDef
      name: fail
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('ERROR: ') ($ VSub_Number '$1'))})
            (C {(echo)})
            (ControlFlow
              token: <ControlFlow_Exit exit>
              arg_word: {($ VSub_Name '$E_ASSERT_FAILED')}
            )
          ]
          spids: [145]
        )
      spids: [141 144]
    )
    (FuncDef
      name: assertEq
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:lineno)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [177]
                )
              ]
              spids: [177]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$lineno'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('lineno not given'))})
                    (ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {($ VSub_Name '$E_PARAM_ERR')}
                    )
                  ]
                  spids: [16777215 194]
                )
              ]
              spids: [16777215 209]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(DQ ($ VSub_Number '$1'))}
                              right: {(DQ ($ VSub_Number '$2'))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Assertion failed:  ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          ($ VSub_Number '$1') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' == ') 
                          (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Number '$2') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (DQ ('File ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          ($ VSub_Number '$0') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (', line ') ($ VSub_Name '$lineno')
                        )
                      }
                    )
                    (ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {($ VSub_Name '$E_ASSERT_FAILED')}
                    )
                  ]
                  spids: [16777215 230]
                )
              ]
              spids: [16777215 267]
            )
          ]
          spids: [174]
        )
      spids: [169 173]
    )
    (FuncDef
      name: checkArch
      body: 
        (BraceGroup
          children: [
            (C {(echo)})
            (C {(echo)} {(DQ ('Checking file format ...'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalOr
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$OS'))}
                                  right: {(windows)}
                                )
                              right: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$OS'))}
                                  right: {(linux)}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:format)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(objdump)} {(-f)} {(DQ ($ VSub_Number '$1'))})
                                            (C {(grep)} {(-o)} {(DQ ('file format .*') (Lit_Other '$'))})
                                            (C {(grep)} {(-o)} {(DQ ('[^ ]*') (Lit_Other '$'))})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [326 356]
                                )
                              )
                            }
                          spids: [324]
                        )
                      ]
                      spids: [324]
                    )
                    (C {(echo)} {(Lit_VarLike 'Format=') ($ VSub_Name '$format')})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$OS'))}
                                      right: {(linux)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {(DQ ($ VSub_Name '$ARCH'))}
                                              right: {(x86_32)}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(assertEq)} {($ VSub_Name '$format')} {(DQ (elf32-i386))} 
                                      {($ VSub_Name '$LINENO')}
                                    )
                                  ]
                                  spids: [16777215 399]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {(DQ ($ VSub_Name '$ARCH'))}
                                              right: {(x86_64)}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(assertEq)} {($ VSub_Name '$format')} {(DQ (elf64-x86-64))} 
                                      {($ VSub_Name '$LINENO')}
                                    )
                                  ]
                                  spids: [413 428]
                                )
                              ]
                              else_action: [
                                (C {(fail)} {(DQ ('Unsupported arch: ') ($ VSub_Name '$ARCH'))})
                              ]
                              spids: [442 453]
                            )
                          ]
                          spids: [16777215 381]
                        )
                      ]
                      else_action: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DBracket
                                      expr: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ ($ VSub_Name '$ARCH'))}
                                          right: {(x86_32)}
                                        )
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(assertEq)} {($ VSub_Name '$format')} {(DQ (pei-i386))} 
                                  {($ VSub_Name '$LINENO')}
                                )
                              ]
                              spids: [16777215 478]
                            )
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DBracket
                                      expr: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ ($ VSub_Name '$ARCH'))}
                                          right: {(x86_64)}
                                        )
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(assertEq)} {($ VSub_Name '$format')} {(DQ (pei-x86-64))} 
                                  {($ VSub_Name '$LINENO')}
                                )
                              ]
                              spids: [492 507]
                            )
                          ]
                          else_action: [(C {(fail)} {(DQ ('Unsupported arch: ') ($ VSub_Name '$ARCH'))})]
                          spids: [521 532]
                        )
                      ]
                      spids: [456 535]
                    )
                  ]
                  spids: [16777215 321]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$OS'))}
                              right: {(osx)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:format)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(file)} {(-b)} {(DQ ($ VSub_Number '$1'))})
                                            (C {(grep)} {(-o)} {(DQ ('[^ ]*') (Lit_Other '$'))})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [558 577]
                                )
                              )
                            }
                          spids: [556]
                        )
                      ]
                      spids: [556]
                    )
                    (C {(echo)} {(Lit_VarLike 'Format=') ($ VSub_Name '$format')})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_32)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(assertEq)} {($ VSub_Name '$format')} {(DQ (i386))} 
                              {($ VSub_Name '$LINENO')}
                            )
                          ]
                          spids: [16777215 602]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_64)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(assertEq)} {($ VSub_Name '$format')} {(DQ (x86_64))} 
                              {($ VSub_Name '$LINENO')}
                            )
                          ]
                          spids: [616 631]
                        )
                      ]
                      else_action: [(C {(fail)} {(DQ ('Unsupported arch: ') ($ VSub_Name '$ARCH'))})]
                      spids: [645 656]
                    )
                  ]
                  spids: [538 553]
                )
              ]
              else_action: [(C {(fail)} {(DQ ('Unsupported system: ') ($ VSub_Name '$OS'))})]
              spids: [659 670]
            )
            (C {(echo)})
          ]
          spids: [283]
        )
      spids: [278 282]
    )
    (FuncDef
      name: checkDependencies
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$OS'))}
                              right: {(windows)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dump_cmd)
                          op: Equal
                          rhs: 
                            {(SQ <'objdump -x '>) (DQ ($ VSub_Number '$1')) 
                              (SQ <' | fgrep "DLL Name"'>)
                            }
                          spids: [713]
                        )
                      ]
                      spids: [713]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:white_list)
                          op: Equal
                          rhs: 
                            {
                              (DQ (KERNEL32) (Lit_Other '\\') (.dll) (Lit_Other '\\') ('|msvcrt') 
                                (Lit_Other '\\') (.dll)
                              )
                            }
                          spids: [725]
                        )
                      ]
                      spids: [725]
                    )
                  ]
                  spids: [16777215 710]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$OS'))}
                              right: {(linux)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dump_cmd)
                          op: Equal
                          rhs: {(SQ <'ldd '>) (DQ ($ VSub_Number '$1'))}
                          spids: [755]
                        )
                      ]
                      spids: [755]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_32)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:white_list)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (linux-gate) (Lit_Other '\\') (.so) (Lit_Other '\\') (.1) 
                                        (Lit_Other '\\') ('|libpthread') (Lit_Other '\\') (.so) (Lit_Other '\\') (.0) (Lit_Other '\\') ('|libm') (Lit_Other '\\') 
                                        (.so) (Lit_Other '\\') (.6) (Lit_Other '\\') ('|libc') (Lit_Other '\\') (.so) (Lit_Other '\\') (.6) 
                                        (Lit_Other '\\') ('|ld-linux') (Lit_Other '\\') (.so) (Lit_Other '\\') (.2)
                                      )
                                    }
                                  spids: [782]
                                )
                              ]
                              spids: [782]
                            )
                          ]
                          spids: [16777215 779]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_64)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:white_list)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (linux-vdso) (Lit_Other '\\') (.so) (Lit_Other '\\') (.1) 
                                        (Lit_Other '\\') ('|libpthread') (Lit_Other '\\') (.so) (Lit_Other '\\') (.0) (Lit_Other '\\') ('|libm') (Lit_Other '\\') 
                                        (.so) (Lit_Other '\\') (.6) (Lit_Other '\\') ('|libc') (Lit_Other '\\') (.so) (Lit_Other '\\') (.6) 
                                        (Lit_Other '\\') ('|ld-linux-x86-64') (Lit_Other '\\') (.so) (Lit_Other '\\') (.2)
                                      )
                                    }
                                  spids: [834]
                                )
                              ]
                              spids: [834]
                            )
                          ]
                          spids: [816 831]
                        )
                      ]
                      spids: [16777215 868]
                    )
                  ]
                  spids: [737 752]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$OS'))}
                              right: {(osx)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dump_cmd)
                          op: Equal
                          rhs: {(SQ <'otool -L '>) (DQ ($ VSub_Number '$1')) (SQ <' | fgrep dylib'>)}
                          spids: [889]
                        )
                      ]
                      spids: [889]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:white_list)
                          op: Equal
                          rhs: 
                            {
                              (DQ (libz) (Lit_Other '\\') (.1) (Lit_Other '\\') (.dylib) (Lit_Other '\\') 
                                ('|libstdc++') (Lit_Other '\\') (.6) (Lit_Other '\\') (.dylib) (Lit_Other '\\') ('|libSystem') (Lit_Other '\\') (.B) 
                                (Lit_Other '\\') (.dylib)
                              )
                            }
                          spids: [901]
                        )
                      ]
                      spids: [901]
                    )
                  ]
                  spids: [871 886]
                )
              ]
              spids: [16777215 923]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalOr
                              left: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ ($ VSub_Name '$white_list'))}
                                )
                              right: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ ($ VSub_Name '$dump_cmd'))}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fail)} 
                      {
                        (DQ ('Unsupported platform ') ($ VSub_Name '$OS') (-) ($ VSub_Name '$ARCH') (.))
                      }
                    )
                  ]
                  spids: [16777215 947]
                )
              ]
              spids: [16777215 961]
            )
            (C {(echo)} {(DQ ('Checking for expected dependencies ...'))})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Pipeline
                  children: [
                    (C {(eval)} {($ VSub_Name '$dump_cmd')})
                    (C {(grep)} {(-i)} {(DQ ($ VSub_Name '$white_list'))})
                  ]
                  negated: F
                )
                (C {(fail)} {(DQ ("doesn't show any expected dependencies"))})
              ]
            )
            (C {(echo)} {(DQ ('Checking for unexpected dependencies ...'))})
            (Pipeline
              children: [
                (C {(eval)} {($ VSub_Name '$dump_cmd')})
                (C {(grep)} {(-i)} {(-v)} {(DQ ($ VSub_Name '$white_list'))})
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ret)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [1018]
                )
              ]
              spids: [1018]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name '$ret')}
                              right: {(0)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(fail)} {(DQ ('found unexpected dependencies (listed above).'))})]
                  spids: [16777215 1035]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {($ VSub_Name '$ret')}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(fail)} {(DQ ('Error when checking dependencies.'))})]
                  spids: [1045 1058]
                )
              ]
              spids: [16777215 1068]
            )
            (C {(echo)} {(DQ ('Dependencies look good.'))})
            (C {(echo)})
          ]
          spids: [692]
        )
      spids: [687 691]
    )
    (C {(echo)} 
      {
        (DQ ('Building protoc, OS=') ($ VSub_Name '$OS') (' ARCH=') ($ VSub_Name '$ARCH') (' TARGET=') 
          ($ VSub_Name '$TARGET')
        )
      }
    )
    (C {(cd)} 
      {
        (DQ 
          (CommandSubPart
            command_list: (CommandList children:[(C {(dirname)} {(DQ ($ VSub_Number '$0'))})])
            left_token: <Left_CommandSub '$('>
            spids: [1107 1113]
          )
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:WORKING_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_CommandSub '$('>
                spids: [1118 1120]
              )
            }
          spids: [1117]
        )
      ]
      spids: [1117]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONFIGURE_ARGS)
          op: Equal
          rhs: {(DQ (--disable-shared))}
          spids: [1122]
        )
      ]
      spids: [1122]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TARGET_FILE)
          op: Equal
          rhs: {(target/) ($ VSub_Name '$MAKE_TARGET') (.exe)}
          spids: [1128]
        )
      ]
      spids: [1128]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ ($ VSub_Name '$OS'))}
                      right: {(windows)}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MAKE_TARGET)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name MAKE_TARGET) (.exe))}
                  spids: [1151]
                )
              ]
              spids: [1151]
            )
          ]
          spids: [16777215 1148]
        )
      ]
      spids: [16777215 1159]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CXXFLAGS) op:Equal rhs:{(DQ (-DNDEBUG))} spids:[1168])]
      spids: [1168]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LDFLAGS) op:Equal rhs:{(DQ )} spids:[1173])]
      spids: [1173]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(uname)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [1183 1185]
                            )
                          )
                        }
                      right: {(CYGWIN) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(assertEq)} {(DQ ($ VSub_Name '$OS'))} {(windows)} {($ VSub_Name '$LINENO')})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$ARCH'))}
                              right: {(x86_64)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CONFIGURE_ARGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$CONFIGURE_ARGS') (' --host=x86_64-w64-mingw32'))}
                          spids: [1236]
                        )
                      ]
                      spids: [1236]
                    )
                  ]
                  spids: [16777215 1233]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$ARCH'))}
                              right: {(x86_32)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CONFIGURE_ARGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$CONFIGURE_ARGS') (' --host=i686-pc-mingw32'))}
                          spids: [1261]
                        )
                      ]
                      spids: [1261]
                    )
                  ]
                  spids: [1243 1258]
                )
              ]
              else_action: [(C {(fail)} {(DQ ('Unsupported arch by CYGWIN: ') ($ VSub_Name '$ARCH'))})]
              spids: [1268 1279]
            )
          ]
          spids: [16777215 1196]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(uname)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [1286 1288]
                            )
                          )
                        }
                      right: {(MINGW32) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(assertEq)} {(DQ ($ VSub_Name '$OS'))} {(windows)} {($ VSub_Name '$LINENO')})
            (C {(assertEq)} {(DQ ($ VSub_Name '$ARCH'))} {(x86_32)} {($ VSub_Name '$LINENO')})
          ]
          spids: [1281 1299]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(uname)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [1328 1330]
                            )
                          )
                        }
                      right: {(MINGW64) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(assertEq)} {(DQ ($ VSub_Name '$OS'))} {(windows)} {($ VSub_Name '$LINENO')})
            (C {(assertEq)} {(DQ ($ VSub_Name '$ARCH'))} {(x86_64)} {($ VSub_Name '$LINENO')})
          ]
          spids: [1323 1341]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(uname)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [1370 1372]
                            )
                          )
                        }
                      right: {(Linux) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$OS'))}
                              right: {(linux)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_64)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CXXFLAGS)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name '$CXXFLAGS') (' -m64'))}
                                  spids: [1422]
                                )
                              ]
                              spids: [1422]
                            )
                          ]
                          spids: [16777215 1419]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_32)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CXXFLAGS)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name '$CXXFLAGS') (' -m32'))}
                                  spids: [1447]
                                )
                              ]
                              spids: [1447]
                            )
                          ]
                          spids: [1429 1444]
                        )
                      ]
                      else_action: [(C {(fail)} {(DQ ('Unsupported arch: ') ($ VSub_Name '$ARCH'))})]
                      spids: [1454 1465]
                    )
                  ]
                  spids: [16777215 1401]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$OS'))}
                              right: {(windows)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CONFIGURE_ARGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$CONFIGURE_ARGS'))}
                          spids: [1498]
                        )
                      ]
                      spids: [1498]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_64)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CONFIGURE_ARGS)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name '$CONFIGURE_ARGS') 
                                        (' --host=x86_64-w64-mingw32')
                                      )
                                    }
                                  spids: [1522]
                                )
                              ]
                              spids: [1522]
                            )
                          ]
                          spids: [16777215 1519]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Name '$ARCH'))}
                                      right: {(x86_32)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CONFIGURE_ARGS)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name '$CONFIGURE_ARGS') (' --host=i686-w64-mingw32'))
                                    }
                                  spids: [1547]
                                )
                              ]
                              spids: [1547]
                            )
                          ]
                          spids: [1529 1544]
                        )
                      ]
                      else_action: [(C {(fail)} {(DQ ('Unsupported arch: ') ($ VSub_Name '$ARCH'))})]
                      spids: [1554 1565]
                    )
                  ]
                  spids: [1468 1483]
                )
              ]
              else_action: [
                (C {(fail)} 
                  {
                    (DQ ('Cannot build ') ($ VSub_Name '$OS') (' on ') 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [1577 1579]
                      )
                    )
                  }
                )
              ]
              spids: [1568 1583]
            )
          ]
          spids: [1365 1383]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(uname)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [1590 1592]
                            )
                          )
                        }
                      right: {(Darwin) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(assertEq)} {(DQ ($ VSub_Name '$OS'))} {(osx)} {($ VSub_Name '$LINENO')})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CXXFLAGS)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$CXXFLAGS') (' -mmacosx-version-min=10.7'))}
                  spids: [1621]
                )
              ]
              spids: [1621]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$ARCH'))}
                              right: {(x86_64)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CXXFLAGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$CXXFLAGS') (' -m64'))}
                          spids: [1646]
                        )
                      ]
                      spids: [1646]
                    )
                  ]
                  spids: [16777215 1643]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$ARCH'))}
                              right: {(x86_32)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CXXFLAGS)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$CXXFLAGS') (' -m32'))}
                          spids: [1671]
                        )
                      ]
                      spids: [1671]
                    )
                  ]
                  spids: [1653 1668]
                )
              ]
              else_action: [(C {(fail)} {(DQ ('Unsupported arch: ') ($ VSub_Name '$ARCH'))})]
              spids: [1678 1689]
            )
          ]
          spids: [1585 1603]
        )
      ]
      else_action: [
        (C {(fail)} 
          {
            (DQ ('Unsupported system: ') 
              (CommandSubPart
                command_list: (CommandList children:[(C {(uname)})])
                left_token: <Left_CommandSub '$('>
                spids: [1698 1700]
              )
            )
          }
        )
      ]
      spids: [1691 1703]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ ($ VSub_Name '$OS'))}
                      right: {(osx)}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LDFLAGS)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$LDFLAGS') (' -static-libgcc -static-libstdc++ -s'))}
                  spids: [1733]
                )
              ]
              spids: [1733]
            )
          ]
          spids: [16777215 1730]
        )
      ]
      spids: [16777215 1739]
    )
    (C {(export)} {(CXXFLAGS)} {(LDFLAGS)})
    (AndOr
      ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DPipe]
      children: [
        (C {(cd)} {(DQ ($ VSub_Name '$WORKING_DIR')) (/..)})
        (C {(./configure)} {($ VSub_Name '$CONFIGURE_ARGS')})
        (C {(cd)} {(src)})
        (C {(make)} {(clean)})
        (C {(make)} {($ VSub_Name '$MAKE_TARGET')})
        (C {(cd)} {(DQ ($ VSub_Name '$WORKING_DIR'))})
        (C {(mkdir)} {(-p)} {(target)})
        (C {(cp)} {(../src/) ($ VSub_Name '$MAKE_TARGET')} {($ VSub_Name '$TARGET_FILE')})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ ($ VSub_Name '$OS'))}
                      right: {(osx)}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(strip)} {($ VSub_Name '$TARGET_FILE')})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
          spids: [16777215 1831]
        )
      ]
      spids: [16777215 1848]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(checkArch)} {($ VSub_Name '$TARGET_FILE')})
        (C {(checkDependencies)} {($ VSub_Name '$TARGET_FILE')})
      ]
    )
  ]
)