(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(benchmarks/common.sh)})
    (C {(source)} {(build/common.sh)})
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:BASE_DIR) op:Equal rhs:{(_tmp/ovm-build)} spids:[113])]
      spids: [111]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:TAR_DIR)
          op: Equal
          rhs: {($ VSub_Name '$PWD') (/_deps/ovm-build)}
          spids: [118]
        )
      ]
      spids: [116]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:OIL_VERSION)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(head)} {(-n)} {(1)} {(oil-version.txt)})])
                left_token: <Left_CommandSub '$('>
                spids: [139 147]
              )
            }
          spids: [138]
        )
      ]
      spids: [136]
    )
    (Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (LhsName name:TAR_SUBDIRS)
          op: Equal
          rhs: {(ArrayLiteralPart words:[{(bash-4.4)} {(dash-0.5.9.1)}])}
          spids: [160]
        )
      ]
      spids: [156]
    )
    (FuncDef
      name: tarballs
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('bash-4.4.tar.gz\n') ('dash-0.5.9.1.tar.gz\n') ('mksh-R56c.tgz\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [185]
                )
              ]
            )
          ]
          spids: [180]
        )
      spids: [176 179]
    )
    (FuncDef
      name: download
      body: 
        (BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {($ VSub_Name '$TAR_DIR')})
            (Pipeline
              children: [
                (C {(tarballs)})
                (C {(xargs)} {(-n)} {(1)} {(-I)} {(Lit_LBrace '{') (Lit_RBrace '}')} {(--verbose)} {(--)} 
                  {(wget)} {(--directory)} {($ VSub_Name '$TAR_DIR')} {(SQ <'https://www.oilshell.org/blob/ovm-build/{}'>)}
                )
              ]
              negated: F
            )
          ]
          spids: [199]
        )
      spids: [195 198]
    )
    (FuncDef
      name: extract-other
      body: 
        (BraceGroup
          children: [
            (TimeBlock
              pipeline: 
                (ForEach
                  iter_name: f
                  iter_words: [{($ VSub_Name '$TAR_DIR') (/) (Lit_Other '*') (gz)}]
                  do_arg_iter: F
                  body: 
                    (DoGroup
                      children: [
                        (C {(tar)} {(-x)} {(--directory)} {($ VSub_Name '$TAR_DIR')} {(--file)} 
                          {($ VSub_Name '$f')}
                        )
                      ]
                      spids: [264 281]
                    )
                  spids: [257 262]
                )
            )
          ]
          spids: [247]
        )
      spids: [243 246]
    )
    (FuncDef
      name: extract-oil
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:target)
                  op: Equal
                  rhs: {(_release/oil.tar)}
                  spids: [295]
                )
              ]
              spids: [293]
            )
            (C {(rm)} {(-f)} {(-v)} {($ VSub_Name '$target')})
            (C {(make)} {($ VSub_Name '$target')})
            (C {(tar)} {(-x)} {(--directory)} {($ VSub_Name '$TAR_DIR')} {(--file)} 
              {($ VSub_Name '$target')}
            )
          ]
          spids: [290]
        )
      spids: [286 289]
    )
    (FuncDef
      name: extract
      body: (BraceGroup children:[(C {(extract-oil)}) (C {(extract-other)})] spids:[332])
      spids: [328 331]
    )
    (FuncDef
      name: sizes-tsv
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (SingleQuotedPart
                  left: <Left_DollarSingleQuote "$'">
                  tokens: [
                    <Char_Literals host_label>
                    <Char_OneChar '\\t'>
                    <Char_Literals num_bytes>
                    <Char_OneChar '\\t'>
                    <Char_Literals path>
                  ]
                )
              }
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(hostname)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [391 393]
                      )
                    }
                  spids: [390]
                )
              ]
              spids: [388]
            )
            (C {(find)} {(DQ ($ VSub_At '$@'))} {(-maxdepth)} {(0)} {(-printf)} 
              {
                (DQ ($ VSub_Name '$host') (Lit_Other '\\') ('t%s') (Lit_Other '\\') ('t%p') 
                  (Lit_Other '\\') (n)
                )
              }
            )
          ]
          spids: [370]
        )
      spids: [366 369]
    )
    (FuncDef
      name: measure-sizes
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:prefix)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {($ VSub_Name '$BASE_DIR') (Lit_Slash /) (raw) (Lit_Slash /) (demo)}
                          )
                        spids: [437 445]
                      )
                    }
                  spids: [436]
                )
              ]
              spids: [434]
            )
            (SimpleCommand
              words: [
                {(sizes-tsv)}
                {($ VSub_Name '$TAR_DIR') (/oil-) ($ VSub_Name '$OIL_VERSION') 
                  (/_build/oil/bytecode.zip)
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(${ VSub_Name prefix) (.bytecode-size.tsv)}
                  spids: [467]
                )
              ]
            )
            (SimpleCommand
              words: [
                {(sizes-tsv)}
                {($ VSub_Name '$BASE_DIR') (/bin/) (Lit_Other '*') (/oil.) (Lit_Other '*')}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(${ VSub_Name prefix) (.bin-sizes.tsv)}
                  spids: [486]
                )
              ]
            )
            (SimpleCommand
              words: [
                {(sizes-tsv)}
                {($ VSub_Name '$BASE_DIR') (/bin/) (Lit_Other '*') (/) (Lit_Other '*') (sh)}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(${ VSub_Name prefix) (.other-shell-sizes.tsv)}
                  spids: [506]
                )
              ]
            )
            (C {(log)} {(DQ ('Wrote ') (${ VSub_Name prefix) ('.*.tsv'))})
          ]
          spids: [431]
        )
      spids: [427 430]
    )
    (FuncDef
      name: bytecode-size
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:zip)
                  op: Equal
                  rhs: {(_build/oil/bytecode.zip)}
                  spids: [560]
                )
              ]
              spids: [558]
            )
            (Pipeline
              children: [(C {(unzip)} {(-l)} {($ VSub_Name '$zip')}) (C {(tail)} {(-n)} {(1)})]
              negated: F
            )
            (C {(ls)} {(-l)} {($ VSub_Name '$zip')})
          ]
          spids: [555]
        )
      spids: [551 554]
    )
    (FuncDef
      name: clang-oil-dbg
      body: 
        (BraceGroup
          children: [
            (C {(make)} {(clean)})
            (SimpleCommand
              words: [{(make)} {(_build/oil/ovm-dbg)}]
              more_env: [(env_pair name:CC val:{($ VSub_Name '$CLANG')} spids:[614])]
            )
          ]
          spids: [606]
        )
      spids: [602 605]
    )
    (FuncDef
      name: build-task
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:raw_dir)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [665]
                )
              ]
              spids: [663]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:job_id)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [674]
                )
              ]
              spids: [672]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [680]
                )
              ]
              spids: [678]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host_hash)
                  op: Equal
                  rhs: {($ VSub_Number '$4')}
                  spids: [686]
                )
              ]
              spids: [684]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:compiler_path)
                  op: Equal
                  rhs: {($ VSub_Number '$5')}
                  spids: [692]
                )
              ]
              spids: [690]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:compiler_hash)
                  op: Equal
                  rhs: {($ VSub_Number '$6')}
                  spids: [698]
                )
              ]
              spids: [696]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src_dir)
                  op: Equal
                  rhs: {($ VSub_Number '$7')}
                  spids: [704]
                )
              ]
              spids: [702]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:action)
                  op: Equal
                  rhs: {($ VSub_Number '$8')}
                  spids: [710]
                )
              ]
              spids: [708]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:times_out)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_Name '$PWD') (/) ($ VSub_Name '$raw_dir') (/) ($ VSub_Name '$host') (.) 
                        ($ VSub_Name '$job_id') (.times.tsv)
                      )
                    }
                  spids: [717]
                )
              ]
              spids: [715]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TIME_PREFIX)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(time-tsv)}
                          {(--output)}
                          {($ VSub_Name '$times_out')}
                          {(--field)}
                          {(DQ ($ VSub_Name '$host'))}
                          {(--field)}
                          {(DQ ($ VSub_Name '$host_hash'))}
                          {(--field)}
                          {(DQ ($ VSub_Name '$compiler_path'))}
                          {(--field)}
                          {(DQ ($ VSub_Name '$compiler_hash'))}
                          {(--field)}
                          {(DQ ($ VSub_Name '$src_dir'))}
                          {(--field)}
                          {(DQ ($ VSub_Name '$action'))}
                        ]
                      )
                    }
                  spids: [739]
                )
              ]
              spids: [735]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:bin_base_dir)
                  op: Equal
                  rhs: {($ VSub_Name '$PWD') (/) ($ VSub_Name '$BASE_DIR') (/bin)}
                  spids: [799]
                )
              ]
              spids: [797]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:bin_dir)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_Name '$bin_base_dir') (/) 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(basename)} {($ VSub_Name '$compiler_path')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [812 816]
                        )
                      )
                    }
                  spids: [808]
                )
              ]
              spids: [806]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$bin_dir')})
            (SimpleCommand
              words: [{(pushd)} {($ VSub_Name '$src_dir')}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[832])]
            )
            (Case
              to_match: {($ VSub_Name '$action')}
              arms: [
                (case_arm
                  pat_list: [{(configure)}]
                  action: [
                    (C 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name TIME_PREFIX>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [858 863]
                          )
                        )
                      } {(--)} {(./configure)}
                    )
                    (C {(make)} {(clean)})
                  ]
                  spids: [853 854 889 16777215]
                )
                (case_arm
                  pat_list: [{(make)}]
                  action: [
                    (C 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name TIME_PREFIX>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [898 903]
                          )
                        )
                      } {(--)} {(make)} {(Lit_VarLike 'CC=') ($ VSub_Name '$compiler_path')}
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:target) op:Equal spids:[917])]
                      spids: [915]
                    )
                    (Case
                      to_match: {($ VSub_Name '$src_dir')}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (/bash) (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:target)
                                  op: Equal
                                  rhs: {(bash)}
                                  spids: [933]
                                )
                              ]
                              spids: [933]
                            )
                          ]
                          spids: [927 930 937 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (/dash) (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:target)
                                  op: Equal
                                  rhs: {(src/dash)}
                                  spids: [946]
                                )
                              ]
                              spids: [946]
                            )
                          ]
                          spids: [940 943 950 16777215]
                        )
                      ]
                      spids: [920 924 953]
                    )
                    (C {(strip)} {($ VSub_Name '$target')})
                    (C {(cp)} {(-v)} {($ VSub_Name '$target')} {($ VSub_Name '$bin_dir')})
                  ]
                  spids: [893 894 971 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:target)
                          op: Equal
                          rhs: {($ VSub_Name '$action')}
                          spids: [981]
                        )
                      ]
                      spids: [979]
                    )
                    (C 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name TIME_PREFIX>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [990 995]
                          )
                        )
                      } {(--)} {(make)} {(Lit_VarLike 'CC=') ($ VSub_Name '$compiler_path')} {($ VSub_Name '$target')}
                    )
                    (C {(cp)} {(-v)} {($ VSub_Name '$target')} {($ VSub_Name '$bin_dir')})
                  ]
                  spids: [975 976 1018 16777215]
                )
              ]
              spids: [846 850 1021]
            )
            (SimpleCommand
              words: [{(popd)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1027])]
            )
          ]
          spids: [660]
        )
      spids: [656 659]
    )
    (FuncDef
      name: oil-tasks
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1042]
                )
              ]
              spids: [1040]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$TAR_DIR') (/oil-) ($ VSub_Name '$OIL_VERSION'))}
                  spids: [1057]
                )
              ]
              spids: [1055]
            )
            (Pipeline
              children: [
                (C {(cat)} {($ VSub_Name '$provenance')})
                (While
                  cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(echo)} {(DQ ($ VSub_Name '$line'))} {($ VSub_Name '$dir')} {(configure)})
                        (C {(echo)} {(DQ ($ VSub_Name '$line'))} {($ VSub_Name '$dir')} {(_bin/oil.ovm)})
                        (C {(echo)} {(DQ ($ VSub_Name '$line'))} {($ VSub_Name '$dir')} 
                          {(_bin/oil.ovm-dbg)}
                        )
                      ]
                      spids: [1083 1123]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [1037]
        )
      spids: [1033 1036]
    )
    (FuncDef
      name: other-shell-tasks
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1137]
                )
              ]
              spids: [1135]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tarball)
                  op: Equal
                  rhs: {(SQ <_release/oil.0.5.alpha1.gz>)}
                  spids: [1152]
                )
              ]
              spids: [1150]
            )
            (Pipeline
              children: [
                (C {(cat)} {($ VSub_Name '$provenance')})
                (While
                  cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (Case
                          to_match: {($ VSub_Name '$line')}
                          arms: [
                            (case_arm
                              pat_list: [{(Lit_Other '*') (clang) (Lit_Other '*')}]
                              action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                              spids: [1190 1193 1199 16777215]
                            )
                          ]
                          spids: [1179 1183 1202]
                        )
                        (ForEach
                          iter_name: dir
                          iter_words: [
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name TAR_SUBDIRS>
                                  bracket_op: (WholeArray op_id:Lit_At)
                                  spids: [1213 1218]
                                )
                              )
                            }
                          ]
                          do_arg_iter: F
                          body: 
                            (DoGroup
                              children: [
                                (C {(echo)} {(DQ ($ VSub_Name '$line'))} 
                                  {($ VSub_Name '$TAR_DIR') (/) ($ VSub_Name '$dir')} {(configure)}
                                )
                                (C {(echo)} {(DQ ($ VSub_Name '$line'))} 
                                  {($ VSub_Name '$TAR_DIR') (/) ($ VSub_Name '$dir')} {(make)}
                                )
                              ]
                              spids: [1222 1251]
                            )
                          spids: [1211 1220]
                        )
                      ]
                      spids: [1176 1254]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [1132]
        )
      spids: [1128 1131]
    )
    (FuncDef
      name: oil-historical-tasks
      body: (BraceGroup children:[(C {(echo)})] spids:[1269])
      spids: [1265 1268]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:HEADER)
          op: Equal
          rhs: 
            {
              (SingleQuotedPart
                left: <Left_DollarSingleQuote "$'">
                tokens: [
                  <Char_Literals status>
                  <Char_OneChar '\\t'>
                  <Char_Literals elapsed_secs>
                  <Char_OneChar '\\t'>
                  <Char_Literals host_name>
                  <Char_OneChar '\\t'>
                  <Char_Literals host_hash>
                  <Char_OneChar '\\t'>
                  <Char_Literals compiler_path>
                  <Char_OneChar '\\t'>
                  <Char_Literals compiler_hash>
                  <Char_OneChar '\\t'>
                  <Char_Literals src_dir>
                  <Char_OneChar '\\t'>
                  <Char_Literals action>
                ]
              )
            }
          spids: [1283]
        )
      ]
      spids: [1281]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:NUM_COLUMNS) op:Equal rhs:{(7)} spids:[1304])]
      spids: [1302]
    )
    (FuncDef
      name: measure
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1320]
                )
              ]
              spids: [1318]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:raw_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name '$BASE_DIR') (Lit_Slash /) (raw)}
                          )
                        spids: [1330 1336]
                      )
                    }
                  spids: [1329]
                )
              ]
              spids: [1327]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$provenance')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1352 1356]
                      )
                    }
                  spids: [1351]
                )
              ]
              spids: [1349]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:prefix)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name name>
                        suffix_op: 
                          (StringUnary
                            op_id: VOp1_Percent
                            arg_word: {(.compiler-provenance.txt)}
                          )
                        spids: [1362 1366]
                      )
                    }
                  spids: [1361]
                )
              ]
              spids: [1359]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:times_out)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$raw_dir') (/) ($ VSub_Name '$prefix') (.times.tsv))}
                  spids: [1375]
                )
              ]
              spids: [1373]
            )
            (C {(mkdir)} {(-p)} 
              (BracedWordTree
                parts: [
                  ($ VSub_Name '$BASE_DIR')
                  (/)
                  (BracedAltPart words:[{(raw)} {(stage1)} {(bin)}])
                ]
              ) {($ VSub_Name '$raw_dir')}
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_Name '$HEADER'))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$times_out')}
                  spids: [1421]
                )
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t1)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/oil-tasks.txt)}
                  spids: [1429]
                )
              ]
              spids: [1427]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t2)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/other-shell-tasks.txt)}
                  spids: [1436]
                )
              ]
              spids: [1434]
            )
            (SimpleCommand
              words: [{(oil-tasks)} {($ VSub_Name '$provenance')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$t1')}
                  spids: [1446]
                )
              ]
            )
            (SimpleCommand
              words: [{(other-shell-tasks)} {($ VSub_Name '$provenance')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$t2')}
                  spids: [1455]
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (TimeBlock
                  pipeline: 
                    (Pipeline
                      children: [
                        (C {(cat)} {($ VSub_Name '$t1')} {($ VSub_Name '$t2')})
                        (C {(xargs)} {(-n)} {($ VSub_Name '$NUM_COLUMNS')} {(--)} {($ VSub_Number '$0')} 
                          {(build-task)} {($ VSub_Name '$raw_dir')}
                        )
                      ]
                      negated: F
                    )
                )
                (C {(die)} {(DQ ('*** Some tasks failed. ***'))})
              ]
            )
            (C {(measure-sizes)} {($ VSub_Name '$raw_dir') (/) ($ VSub_Name '$prefix')})
            (C {(cp)} {(-v)} {($ VSub_Name '$provenance')} {($ VSub_Name '$raw_dir')})
          ]
          spids: [1315]
        )
      spids: [1311 1314]
    )
    (FuncDef
      name: stage1
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:raw_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name '$BASE_DIR') (Lit_Slash /) (raw)}
                          )
                        spids: [1540 1546]
                      )
                    }
                  spids: [1539]
                )
              ]
              spids: [1537]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/stage1)}
                  spids: [1552]
                )
              ]
              spids: [1550]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out')})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[1567])]
              spids: [1565]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-a]
              pairs: [
                (assign_pair lhs:(LhsName name:a) op:Equal spids:[1574])
                (assign_pair lhs:(LhsName name:b) op:Equal spids:[1576])
              ]
              spids: [1570]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/times.tsv)}
                  spids: [1584]
                )
              ]
              spids: [1584]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:a)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [{($ VSub_Name '$raw_dir') (/flanders.) (Lit_Other '*') (.times.tsv)}]
                      )
                    }
                  spids: [1589]
                )
              ]
              spids: [1589]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:b)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [{($ VSub_Name '$raw_dir') (/lisa.) (Lit_Other '*') (.times.tsv)}]
                      )
                    }
                  spids: [1598]
                )
              ]
              spids: [1598]
            )
            (SimpleCommand
              words: [
                {(tsv-concat)}
                {
                  (BracedVarSub
                    token: <VSub_Name a>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1609 1615]
                  )
                }
                {
                  (BracedVarSub
                    token: <VSub_Name b>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1617 1623]
                  )
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$x')}
                  spids: [1625]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/bytecode-size.tsv)}
                  spids: [1631]
                )
              ]
              spids: [1631]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:a)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {($ VSub_Name '$raw_dir') (/flanders.) (Lit_Other '*') (.bytecode-size.tsv)}
                        ]
                      )
                    }
                  spids: [1636]
                )
              ]
              spids: [1636]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:b)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {($ VSub_Name '$raw_dir') (/lisa.) (Lit_Other '*') (.bytecode-size.tsv)}
                        ]
                      )
                    }
                  spids: [1645]
                )
              ]
              spids: [1645]
            )
            (SimpleCommand
              words: [
                {(tsv-concat)}
                {
                  (BracedVarSub
                    token: <VSub_Name a>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1656 1662]
                  )
                }
                {
                  (BracedVarSub
                    token: <VSub_Name b>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1664 1670]
                  )
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$x')}
                  spids: [1672]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/bin-sizes.tsv)}
                  spids: [1678]
                )
              ]
              spids: [1678]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:a)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {($ VSub_Name '$raw_dir') (/flanders.) (Lit_Other '*') (.bin-sizes.tsv)}
                        ]
                      )
                    }
                  spids: [1683]
                )
              ]
              spids: [1683]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:b)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [{($ VSub_Name '$raw_dir') (/lisa.) (Lit_Other '*') (.bin-sizes.tsv)}]
                      )
                    }
                  spids: [1692]
                )
              ]
              spids: [1692]
            )
            (SimpleCommand
              words: [
                {(tsv-concat)}
                {
                  (BracedVarSub
                    token: <VSub_Name a>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1703 1709]
                  )
                }
                {
                  (BracedVarSub
                    token: <VSub_Name b>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1711 1717]
                  )
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$x')}
                  spids: [1719]
                )
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:raw_data_tsv)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/raw-data.tsv)}
                  spids: [1731]
                )
              ]
              spids: [1729]
            )
            (BraceGroup
              children: [
                (C {(echo)} {(SQ <path>)})
                (C {(echo)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name a>
                      bracket_op: 
                        (ArrayIndex
                          expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                        )
                      spids: [1747 1753]
                    )
                  }
                )
                (C {(echo)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name b>
                      bracket_op: 
                        (ArrayIndex
                          expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                        )
                      spids: [1758 1764]
                    )
                  }
                )
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$raw_data_tsv')}
                  spids: [1769]
                )
              ]
              spids: [1736]
            )
            (C {(head)} {($ VSub_Name '$out') (/) (Lit_Other '*')})
            (C {(wc)} {(-l)} {($ VSub_Name '$out') (/) (Lit_Other '*')})
          ]
          spids: [1534]
        )
      spids: [1530 1533]
    )
    (FuncDef
      name: print-report
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:in_dir)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1802]
                )
              ]
              spids: [1800]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:base_url)
                  op: Equal
                  rhs: {(SQ <../../web>)}
                  spids: [1808]
                )
              ]
              spids: [1806]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('<!DOCTYPE html>\n') ('<html>\n') ('  <head>\n') 
                        ('    <title>OVM Build Performance</title>\n') ('    <script type=') (Right_DoubleQuote '"') (text/javascript) (Right_DoubleQuote '"') (' src=') 
                        (Right_DoubleQuote '"') ($ VSub_Name '$base_url') (/table/table-sort.js) (Right_DoubleQuote '"') ('></script>\n') 
                        ('    <link rel=') (Right_DoubleQuote '"') (stylesheet) (Right_DoubleQuote '"') (' type=') (Right_DoubleQuote '"') (text/css) 
                        (Right_DoubleQuote '"') (' href=') (Right_DoubleQuote '"') ($ VSub_Name '$base_url') (/table/table-sort.css) 
                        (Right_DoubleQuote '"') (' />\n') ('    <link rel=') (Right_DoubleQuote '"') (stylesheet) (Right_DoubleQuote '"') (' type=') 
                        (Right_DoubleQuote '"') (text/css) (Right_DoubleQuote '"') (' href=') (Right_DoubleQuote '"') ($ VSub_Name '$base_url') 
                        (/benchmarks.css) (Right_DoubleQuote '"') (' />\n') ('\n') ('  </head>\n') ('  <body>\n') ('    <p id=') 
                        (Right_DoubleQuote '"') (home-link) (Right_DoubleQuote '"') ('>\n') ('      <a href=') (Right_DoubleQuote '"') (/) 
                        (Right_DoubleQuote '"') ('>oilshell.org</a>\n') ('    </p>\n') ('    <h2>OVM Build Performance</h2>\n') ('\n') 
                        ('    <h3>Elapsed Time by Host and Compiler</h3>\n') ('\n') ('    <p>We measure the build speed of <code>bash</code> and <code>dash</code>\n') 
                        ('    for comparison.\n') ('    </p>\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [1817]
                )
              ]
            )
            (C {(tsv2html)} {(--css-class-pattern)} {(SQ <'special ^oil'>)} 
              {($ VSub_Name '$in_dir') (/times.tsv)}
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('    <h3>Binary Size</h3>\n') ('\n') 
                        ('    <p>The oil binary has two portions:\n') ('      <ol>\n') ('        <li>Architecture-independent <code>bytecode.zip</code></li>\n') 
                        ('        <li>Architecture- and compiler- dependent native code\n') ('            (<code>_build/oil/ovm*</code>)\n') ('        </li>\n') ('      </ol>\n') ('    </p>\n') 
                        ('\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [1900]
                )
              ]
            )
            (C {(tsv2html)} {(--css-class-pattern)} {(SQ <'special /gcc/oil.ovm$'>)} 
              {($ VSub_Name '$in_dir') (/sizes.tsv)}
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('    <h3>Host and Compiler Details</h3>\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [1935]
                )
              ]
            )
            (C {(tsv2html)} {($ VSub_Name '$in_dir') (/hosts.tsv)})
            (C {(tsv2html)} {($ VSub_Name '$in_dir') (/compilers.tsv)})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('  </body>\n') ('</html>\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [1957]
                )
              ]
            )
          ]
          spids: [1797]
        )
      spids: [1793 1796]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)