(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: [267 284]
                    )
                  spids: [260 265]
                )
            )
          ]
          spids: [250]
        )
      spids: [246 249]
    )
    (FuncDef
      name: extract-oil
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-r)} {(-f)} {(-v)} {($ VSub_Name '$TAR_DIR') (/oil-) (Lit_Other '*')})
            (C {(tar)} {(-x)} {(--directory)} {($ VSub_Name '$TAR_DIR')} {(--file)} {(_release/oil.tar)})
          ]
          spids: [305]
        )
      spids: [301 304]
    )
    (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: [388 390]
                      )
                    }
                  spids: [387]
                )
              ]
              spids: [385]
            )
            (C {(find)} {(DQ ($ VSub_At '$@'))} {(-maxdepth)} {(0)} {(-printf)} 
              {
                (DQ ($ VSub_Name '$host') (Lit_Other '\\') ('t%s') (Lit_Other '\\') ('t%p') 
                  (Lit_Other '\\') (n)
                )
              }
            )
          ]
          spids: [367]
        )
      spids: [363 366]
    )
    (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: [434 442]
                      )
                    }
                  spids: [433]
                )
              ]
              spids: [431]
            )
            (SimpleCommand
              words: [
                {(sizes-tsv)}
                {($ VSub_Name '$TAR_DIR') (/oil-) ($ VSub_Name '$OIL_VERSION') 
                  (/_build/oil/bytecode-opy.zip)
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(${ VSub_Name prefix) (.bytecode-size.tsv)}
                  spids: [464]
                )
              ]
            )
            (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: [483]
                )
              ]
            )
            (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: [503]
                )
              ]
            )
            (C {(log)} {(DQ ('Wrote ') (${ VSub_Name prefix) ('.*.tsv'))})
          ]
          spids: [428]
        )
      spids: [424 427]
    )
    (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: [557]
                )
              ]
              spids: [555]
            )
            (Pipeline
              children: [(C {(unzip)} {(-l)} {($ VSub_Name '$zip')}) (C {(tail)} {(-n)} {(1)})]
              negated: F
            )
            (C {(ls)} {(-l)} {($ VSub_Name '$zip')})
          ]
          spids: [552]
        )
      spids: [548 551]
    )
    (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:[611])]
            )
          ]
          spids: [603]
        )
      spids: [599 602]
    )
    (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: [662]
                )
              ]
              spids: [660]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:job_id)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [671]
                )
              ]
              spids: [669]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [677]
                )
              ]
              spids: [675]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host_hash)
                  op: Equal
                  rhs: {($ VSub_Number '$4')}
                  spids: [683]
                )
              ]
              spids: [681]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:compiler_path)
                  op: Equal
                  rhs: {($ VSub_Number '$5')}
                  spids: [689]
                )
              ]
              spids: [687]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:compiler_hash)
                  op: Equal
                  rhs: {($ VSub_Number '$6')}
                  spids: [695]
                )
              ]
              spids: [693]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src_dir)
                  op: Equal
                  rhs: {($ VSub_Number '$7')}
                  spids: [701]
                )
              ]
              spids: [699]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:action)
                  op: Equal
                  rhs: {($ VSub_Number '$8')}
                  spids: [707]
                )
              ]
              spids: [705]
            )
            (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: [714]
                )
              ]
              spids: [712]
            )
            (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: [736]
                )
              ]
              spids: [732]
            )
            (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: [796]
                )
              ]
              spids: [794]
            )
            (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: [809 813]
                        )
                      )
                    }
                  spids: [805]
                )
              ]
              spids: [803]
            )
            (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:[829])]
            )
            (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: [855 860]
                          )
                        )
                      } {(--)} {(./configure)}
                    )
                    (C {(make)} {(clean)})
                  ]
                  spids: [850 851 886 16777215]
                )
                (case_arm
                  pat_list: [{(make)}]
                  action: [
                    (C 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name TIME_PREFIX>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [895 900]
                          )
                        )
                      } {(--)} {(make)} {(Lit_VarLike 'CC=') ($ VSub_Name '$compiler_path')}
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:target) op:Equal spids:[914])]
                      spids: [912]
                    )
                    (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: [930]
                                )
                              ]
                              spids: [930]
                            )
                          ]
                          spids: [924 927 934 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: [943]
                                )
                              ]
                              spids: [943]
                            )
                          ]
                          spids: [937 940 947 16777215]
                        )
                      ]
                      spids: [917 921 950]
                    )
                    (C {(strip)} {($ VSub_Name '$target')})
                    (C {(cp)} {(-v)} {($ VSub_Name '$target')} {($ VSub_Name '$bin_dir')})
                  ]
                  spids: [890 891 968 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: [978]
                        )
                      ]
                      spids: [976]
                    )
                    (C 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name TIME_PREFIX>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [987 992]
                          )
                        )
                      } {(--)} {(make)} {(Lit_VarLike 'CC=') ($ VSub_Name '$compiler_path')} {($ VSub_Name '$target')}
                    )
                    (C {(cp)} {(-v)} {($ VSub_Name '$target')} {($ VSub_Name '$bin_dir')})
                  ]
                  spids: [972 973 1015 16777215]
                )
              ]
              spids: [843 847 1018]
            )
            (SimpleCommand
              words: [{(popd)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1024])]
            )
          ]
          spids: [657]
        )
      spids: [653 656]
    )
    (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: [1039]
                )
              ]
              spids: [1037]
            )
            (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: [1054]
                )
              ]
              spids: [1052]
            )
            (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: [1080 1120]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [1034]
        )
      spids: [1030 1033]
    )
    (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: [1134]
                )
              ]
              spids: [1132]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tarball)
                  op: Equal
                  rhs: {(SQ <_release/oil.0.5.alpha1.gz>)}
                  spids: [1149]
                )
              ]
              spids: [1147]
            )
            (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: [1187 1190 1196 16777215]
                            )
                          ]
                          spids: [1176 1180 1199]
                        )
                        (ForEach
                          iter_name: dir
                          iter_words: [
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name TAR_SUBDIRS>
                                  bracket_op: (WholeArray op_id:Lit_At)
                                  spids: [1210 1215]
                                )
                              )
                            }
                          ]
                          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: [1219 1248]
                            )
                          spids: [1208 1217]
                        )
                      ]
                      spids: [1173 1251]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [1129]
        )
      spids: [1125 1128]
    )
    (FuncDef
      name: oil-historical-tasks
      body: (BraceGroup children:[(C {(echo)})] spids:[1266])
      spids: [1262 1265]
    )
    (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: [1280]
        )
      ]
      spids: [1278]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:NUM_COLUMNS) op:Equal rhs:{(7)} spids:[1301])]
      spids: [1299]
    )
    (FuncDef
      name: measure
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1317]
                )
              ]
              spids: [1315]
            )
            (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: [1327 1333]
                      )
                    }
                  spids: [1326]
                )
              ]
              spids: [1324]
            )
            (C {(extract-oil)})
            (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: [1348 1352]
                      )
                    }
                  spids: [1347]
                )
              ]
              spids: [1345]
            )
            (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: [1358 1362]
                      )
                    }
                  spids: [1357]
                )
              ]
              spids: [1355]
            )
            (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: [1371]
                )
              ]
              spids: [1369]
            )
            (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: [1417]
                )
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t1)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/oil-tasks.txt)}
                  spids: [1425]
                )
              ]
              spids: [1423]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t2)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/other-shell-tasks.txt)}
                  spids: [1432]
                )
              ]
              spids: [1430]
            )
            (SimpleCommand
              words: [{(oil-tasks)} {($ VSub_Name '$provenance')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$t1')}
                  spids: [1442]
                )
              ]
            )
            (SimpleCommand
              words: [{(other-shell-tasks)} {($ VSub_Name '$provenance')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$t2')}
                  spids: [1451]
                )
              ]
            )
            (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: [1312]
        )
      spids: [1308 1311]
    )
    (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: [1536 1542]
                      )
                    }
                  spids: [1535]
                )
              ]
              spids: [1533]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/stage1)}
                  spids: [1548]
                )
              ]
              spids: [1546]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out')})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[1563])]
              spids: [1561]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-a]
              pairs: [
                (assign_pair lhs:(LhsName name:a) op:Equal spids:[1570])
                (assign_pair lhs:(LhsName name:b) op:Equal spids:[1572])
              ]
              spids: [1566]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/times.tsv)}
                  spids: [1580]
                )
              ]
              spids: [1580]
            )
            (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: [1585]
                )
              ]
              spids: [1585]
            )
            (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: [1594]
                )
              ]
              spids: [1594]
            )
            (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: [1605 1611]
                  )
                }
                {
                  (BracedVarSub
                    token: <VSub_Name b>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1613 1619]
                  )
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$x')}
                  spids: [1621]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/bytecode-size.tsv)}
                  spids: [1627]
                )
              ]
              spids: [1627]
            )
            (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: [1632]
                )
              ]
              spids: [1632]
            )
            (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: [1641]
                )
              ]
              spids: [1641]
            )
            (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: [1652 1658]
                  )
                }
                {
                  (BracedVarSub
                    token: <VSub_Name b>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1660 1666]
                  )
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$x')}
                  spids: [1668]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/bin-sizes.tsv)}
                  spids: [1674]
                )
              ]
              spids: [1674]
            )
            (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: [1679]
                )
              ]
              spids: [1679]
            )
            (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: [1688]
                )
              ]
              spids: [1688]
            )
            (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: [1699 1705]
                  )
                }
                {
                  (BracedVarSub
                    token: <VSub_Name b>
                    bracket_op: 
                      (ArrayIndex
                        expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                      )
                    spids: [1707 1713]
                  )
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$x')}
                  spids: [1715]
                )
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:raw_data_tsv)
                  op: Equal
                  rhs: {($ VSub_Name '$out') (/raw-data.tsv)}
                  spids: [1727]
                )
              ]
              spids: [1725]
            )
            (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: [1743 1749]
                    )
                  }
                )
                (C {(echo)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name b>
                      bracket_op: 
                        (ArrayIndex
                          expr: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                        )
                      spids: [1754 1760]
                    )
                  }
                )
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$raw_data_tsv')}
                  spids: [1765]
                )
              ]
              spids: [1732]
            )
            (C {(head)} {($ VSub_Name '$out') (/) (Lit_Other '*')})
            (C {(wc)} {(-l)} {($ VSub_Name '$out') (/) (Lit_Other '*')})
          ]
          spids: [1530]
        )
      spids: [1526 1529]
    )
    (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: [1798]
                )
              ]
              spids: [1796]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:base_url)
                  op: Equal
                  rhs: {(SQ <../../web>)}
                  spids: [1804]
                )
              ]
              spids: [1802]
            )
            (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: [1813]
                )
              ]
            )
            (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: [1896]
                )
              ]
            )
            (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: [1931]
                )
              ]
            )
            (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: [1953]
                )
              ]
            )
          ]
          spids: [1793]
        )
      spids: [1789 1792]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)