(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(common.sh)})
    (C {(source)} {(compare.sh)})
    (FuncDef
      name: md5-manifest
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tree)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [59]
                )
              ]
              spids: [57]
            )
            (C {(pushd)} {($ VSub_Name '$tree')})
            (Pipeline
              children: [
                (C {(find)} {(.)} {(-type)} {(f)})
                (C {(sort)})
                (C {(xargs)} {(stat)} {(--format)} {(SQ <'%s %n'>)})
                (C {(tee)} {(SIZES.txt)})
              ]
              negated: False
            )
            (Pipeline
              children: [
                (C {(find)} {(.)} {(-type)} {(f)})
                (C {(sort)})
                (C {(xargs)} {(md5sum)})
                (C {(tee)} {(MD5.txt)})
              ]
              negated: False
            )
            (C {(popd)})
          ]
          spids: [54]
        )
      spids: [50 53]
    )
    (FuncDef
      name: _compile-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src_tree)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [142]
                )
              ]
              spids: [140]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_tree)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [148]
                )
              ]
              spids: [146]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:version)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [154]
                )
              ]
              spids: [152]
            )
            (C {(shift)} {(3)})
            (C {(rm)} {(-r)} {(-f)} {($ VSub_Name '$dest_tree')})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:ext) op:Equal rhs:{(pyc)} spids:[180])]
              spids: [178]
            )
            (ForEach
              iter_name: rel_path
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {($ VSub_Name '$rel_path')})
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dest)
                          op: Equal
                          rhs: 
                            {(${ VSub_Name dest_tree) (/) 
                              (BracedVarSub
                                token: <VSub_Name rel_path>
                                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.py)})
                                spids: [211 215]
                              ) (.) (${ VSub_Name ext)
                            }
                          spids: [206]
                        )
                      ]
                      spids: [204]
                    )
                    (C {(mkdir)} {(-p)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(dirname)} {($ VSub_Name '$dest')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [226 230]
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(stdlib)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_stdlib-compile-one)} 
                              {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [16777215 245]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(compiler2)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_compile2-one)} 
                              {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [259 270]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(ccompile)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_ccompile-one)} 
                              {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [284 295]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(opy)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_compile-one)} {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} 
                              {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [309 320]
                        )
                      ]
                      else_action: [(C {(die)} {(DQ (bad))})]
                      spids: [334 344]
                    )
                  ]
                  spids: [196 347]
                )
              spids: [190 194]
            )
            (C {(tree)} {($ VSub_Name '$dest_tree')})
            (C {(md5-manifest)} {($ VSub_Name '$dest_tree')})
          ]
          spids: [137]
        )
      spids: [133 136]
    )
    (FuncDef
      name: _fill-opy-tree
      body: 
        (BraceGroup
          children: [(C {(echo)} {(TODO) (Lit_Other ':')} {(grammar)} {(pickle)})]
          spids: [367]
        )
      spids: [363 366]
    )
    (FuncDef
      name: compile-opy-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Name '$PWD')}
                  spids: [391]
                )
              ]
              spids: [389]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:files)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(find)} {($ VSub_Name '$src')} {(-name)} {(_tmp)} {(-a)} {(-prune)} 
                                      {(-o)} {(-name)} {(SQ <'*.py'>)} {(-a)} {(-printf)} {(SQ <'%P\\n'>)}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [400 432]
                            )
                          }
                        ]
                      )
                    }
                  spids: [397]
                )
              ]
              spids: [395]
            )
            (C {(_compile-tree)} {($ VSub_Name '$src')} {(_tmp/opy-ccompile/)} {(ccompile)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [464 469]
                  )
                )
              }
            )
            (C {(_compile-tree)} {($ VSub_Name '$src')} {(_tmp/opy-opy/)} {(opy)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [482 487]
                  )
                )
              }
            )
          ]
          spids: [386]
        )
      spids: [382 385]
    )
    (FuncDef
      name: _fill-osh-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(_tmp) (Lit_Slash /) (osh-stdlib)}
                          )
                        spids: [503 509]
                      )
                    }
                  spids: [502]
                )
              ]
              spids: [500]
            )
            (C {(cp)} {(-v)} {(../osh/osh.asdl)} {($ VSub_Name '$dir') (/osh)})
            (C {(cp)} {(-v)} {(../core/runtime.asdl)} {($ VSub_Name '$dir') (/core)})
            (C {(cp)} {(-v)} {(../asdl/arith.asdl)} {($ VSub_Name '$dir') (/asdl)})
            (C {(ln)} {(-v)} {(-s)} {(-f)} {($ VSub_Name '$PWD') (/../core/libc.so)} 
              {($ VSub_Name '$dir') (/core)}
            )
          ]
          spids: [497]
        )
      spids: [493 496]
    )
    (FuncDef
      name: compile-osh-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                children: [(C {(cd)} {(..)}) (C {(echo)} {($ VSub_Name '$PWD')})]
                                op_id: Op_DAmp
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [569 579]
                      )
                    }
                  spids: [568]
                )
              ]
              spids: [566]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:files)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(find)} {($ VSub_Name '$src')} {(-name)} {(_tmp)} {(-a)} {(-prune)} 
                                      {(-o)} {(-name)} {(opy)} {(-a)} {(-prune)} {(-o)} {(-name)} {(tests)} {(-a)} {(-prune)} {(-o)} {(-name)} {(SQ <'*.py'>)} 
                                      {(-a)} {(-printf)} {(SQ <'%P\\n'>)}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [587 643]
                            )
                          }
                        ]
                      )
                    }
                  spids: [584]
                )
              ]
              spids: [582]
            )
            (C {(_compile-tree)} {($ VSub_Name '$src')} {(_tmp/osh-ccompile/)} {(ccompile)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [658 663]
                  )
                )
              }
            )
            (C {(_compile-tree)} {($ VSub_Name '$src')} {(_tmp/osh-opy/)} {(opy)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [676 681]
                  )
                )
              }
            )
            (C {(_fill-osh-tree)} {(_tmp/osh-ccompile/)})
            (C {(_fill-osh-tree)} {(_tmp/osh-opy/)})
          ]
          spids: [563]
        )
      spids: [559 562]
    )
    (FuncDef
      name: zip-oil-tree
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {(_tmp/oil.zip)})
            (C {(pushd)} {(_tmp/osh-ccompile)})
            (C {(zip)} {(../oil.zip)} {(-r)} {(.)})
            (C {(popd)})
          ]
          spids: [721]
        )
      spids: [717 720]
    )
    (FuncDef
      name: test-osh-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(_tmp) (Lit_Slash /) (osh-opy)}
                          )
                        spids: [764 770]
                      )
                    }
                  spids: [763]
                )
              ]
              spids: [761]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:vm)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(byterun)})
                        spids: [776 780]
                      )
                    }
                  spids: [775]
                )
              ]
              spids: [773]
            )
            (C {(pushd)} {($ VSub_Name '$dir')})
            (C {(mkdir)} {(-p)} {(_tmp)})
            (ForEach
              iter_name: t
              iter_words: [
                (BracedWordTree
                  parts: [
                    (BracedAltPart words:[{(asdl)} {(core)} {(osh)}])
                    (/)
                    (Lit_Other '*')
                    (_test.pyc)
                  ]
                )
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_Name '$t')}
                                      right: {(Lit_Other '*') (arith_parse_test.pyc)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [16777215 834]
                        )
                      ]
                      spids: [16777215 840]
                    )
                    (C {(echo)} {($ VSub_Name '$t')})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name '$vm')} {(Lit_Other '=')} {(byterun)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(opy_)} {(run)} {($ VSub_Name '$t')}]
                              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[875])]
                            )
                          ]
                          spids: [16777215 872]
                        )
                      ]
                      else_action: [
                        (SimpleCommand
                          words: [{(python)} {($ VSub_Name '$t')}]
                          more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[888])]
                        )
                      ]
                      spids: [885 896]
                    )
                  ]
                  spids: [817 899]
                )
              spids: [804 815]
            )
            (C {(popd)})
          ]
          spids: [758]
        )
      spids: [754 757]
    )
    (FuncDef
      name: write-speed
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/speed.py)}
                  spids: [916]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('def do_sum(n):\n') ('  sum = 0\n') ('  for i in xrange(n):\n') 
                        ('    sum += i\n') ('  print(sum)\n') ('\n') ("if __name__ == '__main__':\n") ('  import sys\n') 
                        ('  n = int(sys.argv[1])\n') ('  do_sum(n)\n') ('\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [919]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/speed_main.py)}
                  spids: [937]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('import sys \n') ('import speed\n') ('\n') ('n = int(sys.argv[1])\n') 
                        ('speed.do_sum(n)\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [940]
                )
              ]
            )
          ]
          spids: [911]
        )
      spids: [907 910]
    )
    (FuncDef
      name: opy-speed-test
      body: 
        (BraceGroup
          children: [
            (C {(write-speed)})
            (C {(_compile-one)} {(_tmp/speed.py)} {(_tmp/speed.pyc)})
            (C {(_compile-one)} {(_tmp/speed_main.py)} {(_tmp/speed_main.pyc)})
            (C {(cp)} {(_tmp/speed.pyc)} {(_tmp/speed.opyc)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:n) op:Equal rhs:{(10000)} spids:[992])]
              spids: [990]
            )
            (C {(echo)} {(PYTHON)})
            (TimeBlock pipeline:(C {(python)} {(_tmp/speed.opyc)} {($ VSub_Name '$n')}))
            (C {(echo)} {(OPY)})
            (TimeBlock
              pipeline: (C {(opy_)} {(run)} {(_tmp/speed.opyc)} {($ VSub_Name '$n')})
            )
            (C {(echo)} {(PYTHON)})
            (TimeBlock pipeline:(C {(python)} {(_tmp/speed_main.pyc)} {($ VSub_Name '$n')}))
            (C {(echo)} {(OPY)})
            (TimeBlock
              pipeline: (C {(opy_)} {(run)} {(_tmp/speed_main.pyc)} {($ VSub_Name '$n')})
            )
          ]
          spids: [956]
        )
      spids: [952 955]
    )
    (FuncDef
      name: byterun-speed-test
      body: 
        (BraceGroup
          children: [
            (C {(write-speed)})
            (C {(echo)} {(OLD)} {(BYTERUN)})
            (TimeBlock
              pipeline: (C {(_byterun)} {($ VSub_Name '$PWD') (/_tmp/speed_main.py)} {(10000)})
            )
            (TimeBlock
              pipeline: (C {(_byterun)} {($ VSub_Name '$PWD') (/_tmp/speed.py)} {(10000)})
            )
          ]
          spids: [1086]
        )
      spids: [1082 1085]
    )
    (FuncDef
      name: _byterun
      body: 
        (BraceGroup
          children: [
            (C {(pushd)} {(TildeSubPart prefix:'') (/git/other/byterun)})
            (C {(python)} {(-m)} {(byterun.__main__)} {(DQ ($ VSub_At '$@'))})
            (C {(popd)})
          ]
          spids: [1127]
        )
      spids: [1123 1126]
    )
    (FuncDef
      name: opy-parse-on-byterun
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:arg)
                  op: Equal
                  rhs: {($ VSub_Name '$PWD') (/testdata/hello_py2.py)}
                  spids: [1208]
                )
              ]
              spids: [1206]
            )
            (C {(pushd)} {(_tmp/opy-opy)})
            (C {(opyg)} {(run)} {(opy_main.pyc)} {(-g)} {($ VSub_Name '$GRAMMAR')} {(parse)} 
              {($ VSub_Name '$arg')}
            )
            (C {(popd)})
          ]
          spids: [1203]
        )
      spids: [1199 1202]
    )
    (FuncDef
      name: osh-parse-on-byterun
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cmd)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(osh)}
                          {(--ast-output)}
                          {(-)}
                          {(--no-exec)}
                          {(-c)}
                          {(SQ <'echo "hello world"'>)}
                        ]
                      )
                    }
                  spids: [1245]
                )
              ]
              spids: [1245]
            )
            (C {(../bin/oil.py)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name cmd>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1267 1272]
                  )
                )
              }
            )
            (C {(echo)} {(---)})
            (C {(opyg)} {(run)} {(_tmp/osh-opy/bin/oil.pyc)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name cmd>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1288 1293]
                  )
                )
              }
            )
          ]
          spids: [1242]
        )
      spids: [1238 1241]
    )
    (FuncDef
      name: opy-hello2
      body: (BraceGroup children:[(C {(opyg)} {(run)} {(testdata/hello_py2.py)})] spids:[1303])
      spids: [1299 1302]
    )
    (FuncDef
      name: opy-hello3
      body: (BraceGroup children:[(C {(opyg)} {(run)} {(testdata/hello_py3.py)})] spids:[1319])
      spids: [1315 1318]
    )
    (FuncDef
      name: inspect-pyc
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(misc/inspect_pyc.py)} {(DQ ($ VSub_At '$@'))}]
              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[1364])]
            )
          ]
          spids: [1361]
        )
      spids: [1357 1360]
    )
    (FuncDef
      name: compare-bytecode
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:left)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1388]
                )
              ]
              spids: [1386]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:right)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [1394]
                )
              ]
              spids: [1392]
            )
            (C {(md5sum)} {(DQ ($ VSub_At '$@'))})
            (C {(ls)} {(-l)} {(DQ ($ VSub_At '$@'))})
            (SimpleCommand
              words: [{(inspect-pyc)} {($ VSub_Name '$left')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/pyc-left.txt)}
                  spids: [1420]
                )
              ]
            )
            (SimpleCommand
              words: [{(inspect-pyc)} {($ VSub_Name '$right')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/pyc-right.txt)}
                  spids: [1429]
                )
              ]
            )
            (AndOr
              children: [
                (C {($ VSub_Name '$DIFF')} 
                  (BracedWordTree
                    parts: [(_tmp/pyc-) (BracedAltPart words:[{(left)} {(right)}]) (.txt)]
                  )
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(strings)} {($ VSub_Name '$left')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/str-left.txt)}
                  spids: [1457]
                )
              ]
            )
            (SimpleCommand
              words: [{(strings)} {($ VSub_Name '$right')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/str-right.txt)}
                  spids: [1466]
                )
              ]
            )
            (AndOr
              children: [
                (C {(diff)} {(-u)} 
                  (BracedWordTree
                    parts: [(_tmp/str-) (BracedAltPart words:[{(left)} {(right)}]) (.txt)]
                  )
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (C {(echo)} {(KW_Done done)})
          ]
          spids: [1383]
        )
      spids: [1379 1382]
    )
    (FuncDef
      name: determinism-loop
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:func)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1543]
                )
              ]
              spids: [1541]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(.) (Lit_Slash /) (opy_main.py)}
                          )
                        spids: [1550 1556]
                      )
                    }
                  spids: [1549]
                )
              ]
              spids: [1547]
            )
            (C {(mkdir)} {(-p)} {(_tmp/det)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$file')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1571 1575]
                      )
                    }
                  spids: [1570]
                )
              ]
              spids: [1568]
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(seq)} {(100)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [1584 1588]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {(DQ ('--- ') ($ VSub_Name '$i') (' ---'))})
                    (C {($ VSub_Name '$func')} {($ VSub_Name '$file')} 
                      {(_tmp/det/) ($ VSub_Name '$name') (.1)}
                    )
                    (C {($ VSub_Name '$func')} {($ VSub_Name '$file')} 
                      {(_tmp/det/) ($ VSub_Name '$name') (.2)}
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:size1)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(stat)} {(--format)} {(SQ <'%s'>)} 
                                        {(_tmp/det/) ($ VSub_Name '$name') (.1)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [1625 1637]
                              )
                            }
                          spids: [1624]
                        )
                      ]
                      spids: [1622]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:size2)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(stat)} {(--format)} {(SQ <'%s'>)} 
                                        {(_tmp/det/) ($ VSub_Name '$name') (.2)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [1643 1655]
                              )
                            }
                          spids: [1642]
                        )
                      ]
                      spids: [1640]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$size1')} {(KW_Bang '!') (Lit_Other '=')} 
                                  {($ VSub_Name '$size2')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('mismatched sizes: ') ($ VSub_Name '$size1') (' ') 
                                  ($ VSub_Name '$size2')
                                )
                              }
                            )
                            (C {(compare-bytecode)} 
                              (BracedWordTree
                                parts: [
                                  (_tmp/det/)
                                  ($ VSub_Name '$name')
                                  (.)
                                  (BracedAltPart
                                    words: [{(1)} {(2)}]
                                  )
                                ]
                              )
                            )
                            (C {(echo)} 
                              {(DQ ('Found problem after ') ($ VSub_Name '$i') (' iterations'))}
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [16777215 1670]
                        )
                      ]
                      spids: [16777215 1711]
                    )
                  ]
                  spids: [1591 1714]
                )
              spids: [1583 1589]
            )
          ]
          spids: [1538]
        )
      spids: [1534 1537]
    )
    (FuncDef
      name: opy-determinism-loop
      body: 
        (BraceGroup
          children: [(C {(determinism-loop)} {(_compile-one)} {(../core/lexer.py)})]
          spids: [1723]
        )
      spids: [1719 1722]
    )
    (FuncDef
      name: hash-determinism
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:in)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1747]
                )
              ]
              spids: [1745]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [1753]
                )
              ]
              spids: [1751]
            )
            (SimpleCommand
              words: [{(misc/determinism.py)} {($ VSub_Name '$in')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$out')}
                  spids: [1774]
                )
              ]
            )
          ]
          spids: [1742]
        )
      spids: [1738 1741]
    )
    (FuncDef
      name: hash-determinism-loop
      body: (BraceGroup children:[(C {(determinism-loop)} {(hash-determinism)})] spids:[1785])
      spids: [1781 1784]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(basename)} {($ VSub_Number '$0')})])
                      left_token: <Left_CommandSub '$('>
                      spids: [1799 1803]
                    )
                  } {(Lit_Other '=')} {(SQ <smoke.sh>)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(DQ ($ VSub_At '$@'))})]
          spids: [16777215 1812]
        )
      ]
      spids: [16777215 1819]
    )
  ]
)