(CommandList
  children: [
    (C {(set)} {(-ex)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_ne left:{($ VSub_Pound '$#')} right:{(2)})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ('Usage: ') ($ VSub_Number '$0') 
                  (' fuzzer_mode_build_dir no_fuzzer_mode_build_dir')
                )
              }
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 61]
        )
      ]
      spids: [-1 77]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:fuzzer_mode_build_dir)
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [80]
        )
      ]
      spids: [80]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:no_fuzzer_mode_build_dir)
          op: Equal
          rhs: {($ VSub_Number '$2')}
          spids: [83]
        )
      ]
      spids: [83]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(SQ <'^FUZZ:'>)} 
                      {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/CMakeCache.txt))}
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (' was not built with -DFUZZ=1'))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 110]
        )
      ]
      spids: [-1 125]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(grep)} {(-q)} {(SQ <'^NO_FUZZER_MODE:'>)} 
                  {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/CMakeCache.txt))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (' was built with -DNO_FUZZER_MODE=1'))}
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 144]
        )
      ]
      spids: [-1 159]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(SQ <'^FUZZ:'>)} 
                      {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/CMakeCache.txt))}
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (' was not built with -DFUZZ=1'))}
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 180]
        )
      ]
      spids: [-1 195]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(SQ <'^NO_FUZZER_MODE:'>)} 
                      {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/CMakeCache.txt))}
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') 
                  (' was not built with -DNO_FUZZER_MODE=1')
                )
              }
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 216]
        )
      ]
      spids: [-1 231]
    )
    (FuncDef
      name: assert_directory
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: (BoolUnary op_id:BoolUnary_d child:{($ VSub_Number '$1')})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ($ VSub_Number '$1') (' not found.'))}) (C {(exit)} {(1)})]
                  spids: [-1 259]
                )
              ]
              spids: [-1 275]
            )
          ]
          spids: [243]
        )
      spids: [239 242]
    )
    (C {(assert_directory)} {(client_corpus)})
    (C {(assert_directory)} {(client_corpus_no_fuzzer_mode)})
    (C {(assert_directory)} {(server_corpus)})
    (C {(assert_directory)} {(server_corpus_no_fuzzer_mode)})
    (C {(assert_directory)} {(dtls_client_corpus)})
    (C {(assert_directory)} {(dtls_server_corpus)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:fuzzer_mode_shim)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(readlink)} {(-f)} 
                        {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/ssl/test/bssl_shim))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [311 320]
              )
            }
          spids: [310]
        )
      ]
      spids: [310]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:no_fuzzer_mode_shim)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(readlink)} {(-f)} 
                        {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/ssl/test/bssl_shim))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [323 334]
              )
            }
          spids: [322]
        )
      ]
      spids: [322]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:fuzzer_mode_transcripts)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(mktemp)} {(-d)} {(SQ </tmp/boringssl-transcript.XXXXXX>)})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [338 346]
              )
            }
          spids: [337]
        )
      ]
      spids: [337]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:no_fuzzer_mode_transcripts)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(mktemp)} {(-d)} {(SQ </tmp/boringssl-transcript.XXXXXX>)})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [349 357]
              )
            }
          spids: [348]
        )
      ]
      spids: [348]
    )
    (C {(echo)} {(Recording)} {(fuzzer-mode)} {(transcripts)})
    (AndOr
      children: [
        (Subshell
          child: 
            (AndOr
              children: [
                (C {(cd)} {(../ssl/test/runner/)})
                (C {(go)} {(test)} {(-shim-path)} {(DQ ($ VSub_Name '$fuzzer_mode_shim'))} 
                  {(-transcript-dir)} {(DQ ($ VSub_Name '$fuzzer_mode_transcripts'))} {(-fuzzer)} {(-deterministic)}
                )
              ]
              op_id: Op_DAmp
            )
          spids: [368 402]
        )
        (C {(true)})
      ]
      op_id: Op_DPipe
    )
    (C {(echo)} {(Recording)} {(non-fuzzer-mode)} {(transcripts)})
    (AndOr
      children: [
        (Subshell
          child: 
            (AndOr
              children: [
                (C {(cd)} {(../ssl/test/runner/)})
                (C {(go)} {(test)} {(-shim-path)} {(DQ ($ VSub_Name '$no_fuzzer_mode_shim'))} 
                  {(-transcript-dir)} {(DQ ($ VSub_Name '$no_fuzzer_mode_transcripts'))} {(-deterministic)}
                )
              ]
              op_id: Op_DAmp
            )
          spids: [417 447]
        )
        (C {(true)})
      ]
      op_id: Op_DPipe
    )
    (FuncDef
      name: minimize_corpus
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fuzzer)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [468]
                )
              ]
              spids: [466]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:corpus)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [476]
                )
              ]
              spids: [474]
            )
            (C {(echo)} {(DQ ('Minimizing ') (${ VSub_Name corpus))})
            (C {(mv)} {(DQ ($ VSub_Name '$corpus'))} {(DQ (${ VSub_Name corpus) (_old))})
            (C {(mkdir)} {(DQ ($ VSub_Name '$corpus'))})
            (C {(DQ ($ VSub_Name '$fuzzer'))} {(-max_len) (Lit_Other '=') (50000)} 
              {(-merge) (Lit_Other '=') (1)} {(DQ ($ VSub_Name '$corpus'))} {(DQ (${ VSub_Name corpus) (_old))}
            )
            (C {(rm)} {(-Rf)} {(DQ (${ VSub_Name corpus) (_old))})
          ]
          spids: [463]
        )
      spids: [459 462]
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/client))} 
      {(client_corpus)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/server))} 
      {(server_corpus)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/fuzz/client))} 
      {(client_corpus_no_fuzzer_mode)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/fuzz/server))} 
      {(server_corpus_no_fuzzer_mode)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/dtls_client))} 
      {(dtls_client_corpus)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/dtls_server))} 
      {(dtls_server_corpus)}
    )
    (C {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/client))} 
      {(-max_len) (Lit_Other '=') (50000)} {(-merge) (Lit_Other '=') (1)} {(client_corpus)} 
      {(DQ (${ VSub_Name fuzzer_mode_transcripts) (/tls/client))}
    )
    (C {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/server))} 
      {(-max_len) (Lit_Other '=') (50000)} {(-merge) (Lit_Other '=') (1)} {(server_corpus)} 
      {(DQ (${ VSub_Name fuzzer_mode_transcripts) (/tls/server))}
    )
    (C {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/fuzz/client))} 
      {(-max_len) (Lit_Other '=') (50000)} {(-merge) (Lit_Other '=') (1)} {(client_corpus_no_fuzzer_mode)} 
      {(DQ (${ VSub_Name no_fuzzer_mode_transcripts) (/tls/client))}
    )
    (C {(DQ ($ VSub_Name '$no_fuzzer_mode_build_dir') (/fuzz/server))} 
      {(-max_len) (Lit_Other '=') (50000)} {(-merge) (Lit_Other '=') (1)} {(server_corpus_no_fuzzer_mode)} 
      {(DQ (${ VSub_Name no_fuzzer_mode_transcripts) (/tls/server))}
    )
    (C {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/dtls_client))} 
      {(-max_len) (Lit_Other '=') (50000)} {(-merge) (Lit_Other '=') (1)} {(dtls_client_corpus)} 
      {(DQ (${ VSub_Name fuzzer_mode_transcripts) (/dtls/client))}
    )
    (C {(DQ ($ VSub_Name '$fuzzer_mode_build_dir') (/fuzz/dtls_server))} 
      {(-max_len) (Lit_Other '=') (50000)} {(-merge) (Lit_Other '=') (1)} {(dtls_server_corpus)} 
      {(DQ (${ VSub_Name fuzzer_mode_transcripts) (/dtls/server))}
    )
  ]
)