(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: die
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ('FATAL: ') ($ VSub_At '$@'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[169])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [159]
        )
      spids: [155 158]
    )
    (FuncDef
      name: _dump-if-exists
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:path)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [189]
                )
              ]
              spids: [187]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [195]
                )
              ]
              spids: [193]
            )
            (AndOr
              children: [
                (C {(test)} {(-f)} {($ VSub_Name '$path')})
                (ControlFlow token:<ControlFlow_Return return>)
              ]
              op_id: Op_DPipe
            )
            (SimpleCommand
              words: [{(cat)} {($ VSub_Name '$path')}]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name '$out')} spids:[214])]
            )
          ]
          spids: [184]
        )
      spids: [180 183]
    )
    (FuncDef
      name: dump-shell-id
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:sh)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [240]
                )
              ]
              spids: [238]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:name) op:Equal spids:[250])]
              spids: [248]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(basename)} {($ VSub_Name '$sh')})])
                        left_token: <Left_CommandSub '$('>
                        spids: [254 258]
                      )
                    }
                  spids: [253]
                )
              ]
              spids: [253]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(_tmp) (Lit_Slash /) (shell-id) (Lit_Slash /) ($ VSub_Name '$name')}
                          )
                        spids: [265 273]
                      )
                    }
                  spids: [264]
                )
              ]
              spids: [262]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out_dir')})
            (Case
              to_match: {($ VSub_Name '$sh')}
              arms: [
                (case_arm
                  pat_list: [{(bin/osh)} {(_bin/osh)}]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:branch) op:Equal spids:[303])]
                      spids: [301]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:branch)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(git)} {(rev-parse)} {(--abbrev-ref)} {(HEAD)})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [307 315]
                              )
                            }
                          spids: [306]
                        )
                      ]
                      spids: [306]
                    )
                    (SimpleCommand
                      words: [{(echo)} {($ VSub_Name '$branch')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {($ VSub_Name '$out_dir') (/git-branch.txt)}
                          spids: [322]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [{(git)} {(rev-parse)} {($ VSub_Name '$branch')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {($ VSub_Name '$out_dir') (/git-commit-hash.txt)}
                          spids: [334]
                        )
                      ]
                    )
                  ]
                  spids: [295 298 340 -1]
                )
              ]
              spids: [288 292 343]
            )
            (Case
              to_match: {($ VSub_Name '$name')}
              arms: [
                (case_arm
                  pat_list: [{(bash)} {(zsh)}]
                  action: [
                    (SimpleCommand
                      words: [{($ VSub_Name '$sh')} {(--version)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {($ VSub_Name '$out_dir') (/version.txt)}
                          spids: [364]
                        )
                      ]
                    )
                  ]
                  spids: [354 357 370 -1]
                )
                (case_arm
                  pat_list: [{(osh)}]
                  action: [
                    (SimpleCommand
                      words: [{($ VSub_Name '$sh')} {(--version)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {($ VSub_Name '$out_dir') (/osh-version.txt)}
                          spids: [381]
                        )
                      ]
                    )
                  ]
                  spids: [373 374 387 -1]
                )
                (case_arm
                  pat_list: [{(dash)} {(mksh)}]
                  action: [
                    (SimpleCommand
                      words: [{(dpkg)} {(-s)} {($ VSub_Name '$name')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {($ VSub_Name '$out_dir') (/dpkg-version.txt)}
                          spids: [406]
                        )
                      ]
                    )
                  ]
                  spids: [390 393 412 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(die)} {(DQ ("Invalid shell '") ($ VSub_Name '$name') ("'"))})]
                  spids: [415 416 428 -1]
                )
              ]
              spids: [347 351 431]
            )
          ]
          spids: [235]
        )
      spids: [231 234]
    )
    (FuncDef
      name: _shell-id-hash
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [445]
                )
              ]
              spids: [443]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:file) op:Equal spids:[452])]
              spids: [450]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Name '$src') (/version.txt)}
                  spids: [456]
                )
              ]
              spids: [456]
            )
            (AndOr
              children: [(C {(test)} {(-f)} {($ VSub_Name '$file')}) (C {(cat)} {($ VSub_Name '$file')})]
              op_id: Op_DAmp
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Name '$src') (/dpkg-version.txt)}
                  spids: [479]
                )
              ]
              spids: [479]
            )
            (AndOr
              children: [
                (C {(test)} {(-f)} {($ VSub_Name '$file')})
                (C {(egrep)} {(SQ <'^Version'>)} {($ VSub_Name '$file')})
              ]
              op_id: Op_DAmp
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Name '$src') (/osh-version.txt)}
                  spids: [506]
                )
              ]
              spids: [506]
            )
            (AndOr
              children: [
                (C {(test)} {(-f)} {($ VSub_Name '$file')})
                (C {(egrep)} {(SQ <'^Oil version|^Interpreter'>)} {($ VSub_Name '$file')})
              ]
              op_id: Op_DAmp
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Name '$src') (/git-commit-hash.txt)}
                  spids: [533]
                )
              ]
              spids: [533]
            )
            (AndOr
              children: [(C {(test)} {(-f)} {($ VSub_Name '$file')}) (C {(cat)} {($ VSub_Name '$file')})]
              op_id: Op_DAmp
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [440]
        )
      spids: [436 439]
    )
    (FuncDef
      name: publish-shell-id
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [571]
                )
              ]
              spids: [569]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_base)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(..) (Lit_Slash /) (benchmark-data) (Lit_Slash /) (shell-id)}
                          )
                        spids: [581 589]
                      )
                    }
                  spids: [580]
                )
              ]
              spids: [578]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$src')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [596 600]
                      )
                    }
                  spids: [595]
                )
              ]
              spids: [593]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:hash) op:Equal spids:[605])]
              spids: [603]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hash)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [(C {(_shell-id-hash)} {($ VSub_Name '$src')}) (C {(md5sum)})]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [618 626]
                      )
                    }
                  spids: [617]
                )
              ]
              spids: [617]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:id)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name hash>
                          suffix_op: 
                            (Slice
                              begin: (ArithWord w:{(Lit_Digits 0)})
                              length: (ArithWord w:{(Lit_Digits 8)})
                            )
                          spids: [637 643]
                        )
                      )
                    }
                  spids: [635]
                )
              ]
              spids: [633]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_Name '$dest_base') (/) ($ VSub_Name '$name') (-) ($ VSub_Name '$id'))
                    }
                  spids: [649]
                )
              ]
              spids: [647]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$dest')})
            (C {(cp)} {(--no-target-directory)} {(--recursive)} {($ VSub_Name '$src') (/)} 
              {($ VSub_Name '$dest') (/)}
            )
            (SimpleCommand
              words: [{(echo)} {($ VSub_Name '$hash')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$dest') (/HASH.txt)}
                  spids: [685]
                )
              ]
            )
            (SimpleCommand
              words: [{(ls)} {(-l)} {($ VSub_Name '$dest')}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[698])]
            )
            (C {(echo)} {($ VSub_Name '$id')})
          ]
          spids: [566]
        )
      spids: [562 565]
    )
    (FuncDef
      name: dump-host-id
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(_tmp) (Lit_Slash /) (host-id) (Lit_Slash /) 
                                (CommandSubPart
                                  command_list: (CommandList children:[(C {(hostname)})])
                                  left_token: <Left_CommandSub '$('>
                                  spids: [754 756]
                                )
                              }
                          )
                        spids: [747 757]
                      )
                    }
                  spids: [746]
                )
              ]
              spids: [744]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out_dir')})
            (SimpleCommand
              words: [{(hostname)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$out_dir') (/hostname.txt)}
                  spids: [771]
                )
              ]
            )
            (SimpleCommand
              words: [{(uname)} {(-m)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$out_dir') (/machine.txt)}
                  spids: [798]
                )
              ]
            )
            (BraceGroup
              children: [(C {(uname)} {(--kernel-release)}) (C {(uname)} {(--kernel-version)})]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$out_dir') (/kernel.txt)}
                  spids: [823]
                )
              ]
              spids: [808]
            )
            (C {(_dump-if-exists)} {(/etc/lsb-release)} {($ VSub_Name '$out_dir') (/lsb-release.txt)})
            (SimpleCommand
              words: [{(cat)} {(/proc/cpuinfo)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$out_dir') (/cpuinfo.txt)}
                  spids: [843]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)} {(/proc/meminfo)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$out_dir') (/meminfo.txt)}
                  spids: [861]
                )
              ]
            )
            (C {(head)} {($ VSub_Name '$out_dir') (/) (Lit_Other '*')})
          ]
          spids: [741]
        )
      spids: [737 740]
    )
    (FuncDef
      name: _host-id-hash
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [896]
                )
              ]
              spids: [894]
            )
            (C {(cat)} {($ VSub_Name '$src') (/machine.txt)})
            (C {(cat)} {($ VSub_Name '$src') (/kernel.txt)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Name '$src') (/lsb-release.txt)}
                  spids: [936]
                )
              ]
              spids: [934]
            )
            (AndOr
              children: [(C {(test)} {(-f)} {($ VSub_Name '$file')}) (C {(cat)} {($ VSub_Name '$file')})]
              op_id: Op_DAmp
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [891]
        )
      spids: [887 890]
    )
    (FuncDef
      name: publish-host-id
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [974]
                )
              ]
              spids: [972]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_base)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(..) (Lit_Slash /) (benchmark-data) (Lit_Slash /) (host-id)}
                          )
                        spids: [984 992]
                      )
                    }
                  spids: [983]
                )
              ]
              spids: [981]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$src')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [999 1003]
                      )
                    }
                  spids: [998]
                )
              ]
              spids: [996]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:hash) op:Equal spids:[1008])]
              spids: [1006]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hash)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [(C {(_host-id-hash)} {($ VSub_Name '$src')}) (C {(md5sum)})]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1012 1020]
                      )
                    }
                  spids: [1011]
                )
              ]
              spids: [1011]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:id)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name hash>
                          suffix_op: 
                            (Slice
                              begin: (ArithWord w:{(Lit_Digits 0)})
                              length: (ArithWord w:{(Lit_Digits 8)})
                            )
                          spids: [1031 1037]
                        )
                      )
                    }
                  spids: [1029]
                )
              ]
              spids: [1027]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_Name '$dest_base') (/) ($ VSub_Name '$name') (-) ($ VSub_Name '$id'))
                    }
                  spids: [1043]
                )
              ]
              spids: [1041]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$dest')})
            (C {(cp)} {(--no-target-directory)} {(--recursive)} {($ VSub_Name '$src') (/)} 
              {($ VSub_Name '$dest') (/)}
            )
            (SimpleCommand
              words: [{(echo)} {($ VSub_Name '$hash')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$dest') (/HASH.txt)}
                  spids: [1079]
                )
              ]
            )
            (SimpleCommand
              words: [{(ls)} {(-l)} {($ VSub_Name '$dest')}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1092])]
            )
            (C {(echo)} {($ VSub_Name '$id')})
          ]
          spids: [969]
        )
      spids: [965 968]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)