(command.CommandList
  children: [
    (C {(set)} {(-ex)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_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')
                )
              }
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:fuzzer_mode_build_dir)
          op: Equal
          rhs: {($ VSub_Number '$1')}
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:no_fuzzer_mode_build_dir)
          op: Equal
          rhs: {($ VSub_Number '$2')}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(SQ <'^FUZZ:'>)} 
                      {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/CMakeCache.txt))}
                    )
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (' was not built with -DFUZZ=1'))}
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(grep)} {(-q)} {(SQ <'^NO_FUZZER_MODE:'>)} 
                  {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/CMakeCache.txt))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') 
                  (' was built with -DNO_FUZZER_MODE=1')
                )
              }
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(SQ <'^FUZZ:'>)} 
                      {(DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') (/CMakeCache.txt))}
                    )
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') (' was not built with -DFUZZ=1'))}
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(SQ <'^NO_FUZZER_MODE:'>)} 
                      {(DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') (/CMakeCache.txt))}
                    )
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') 
                  (' was not built with -DNO_FUZZER_MODE=1')
                )
              }
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.FuncDef
      name: assert_directory
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.BoolUnary
                                  op_id: BoolUnary_d
                                  child: {($ VSub_Number '$1')}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ($ VSub_Number '$1') (' not found.'))})
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (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)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:fuzzer_mode_shim)
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(readlink)} {(-f)} 
                        {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/ssl/test/bssl_shim))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
              )
            }
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:no_fuzzer_mode_shim)
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(readlink)} {(-f)} 
                        {(DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') (/ssl/test/bssl_shim))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
              )
            }
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:fuzzer_mode_transcripts)
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(mktemp)} {(-d)} {(SQ </tmp/boringssl-transcript.XXXXXX>)})]
                  )
                left_token: <Left_CommandSub '$('>
              )
            }
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:no_fuzzer_mode_transcripts)
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(mktemp)} {(-d)} {(SQ </tmp/boringssl-transcript.XXXXXX>)})]
                  )
                left_token: <Left_CommandSub '$('>
              )
            }
        )
      ]
    )
    (C {(echo)} {(Recording)} {(fuzzer-mode)} {(transcripts)})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (command.Subshell
          command_list: 
            (command.CommandList
              children: [
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(cd)} {(../ssl/test/runner/)})
                    (C {(go)} {(test)} {(-shim-path)} {(DQ ($ VSub_DollarName '$fuzzer_mode_shim'))} 
                      {(-transcript-dir)} {(DQ ($ VSub_DollarName '$fuzzer_mode_transcripts'))} {(-fuzzer)} {(-deterministic)}
                    )
                  ]
                )
              ]
            )
        )
        (C {(true)})
      ]
    )
    (C {(echo)} {(Recording)} {(non-fuzzer-mode)} {(transcripts)})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (command.Subshell
          command_list: 
            (command.CommandList
              children: [
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(cd)} {(../ssl/test/runner/)})
                    (C {(go)} {(test)} {(-shim-path)} {(DQ ($ VSub_DollarName '$no_fuzzer_mode_shim'))} 
                      {(-transcript-dir)} {(DQ ($ VSub_DollarName '$no_fuzzer_mode_transcripts'))} {(-deterministic)}
                    )
                  ]
                )
              ]
            )
        )
        (C {(true)})
      ]
    )
    (command.FuncDef
      name: minimize_corpus
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fuzzer)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:corpus)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                )
              ]
            )
            (C {(echo)} {(DQ ('Minimizing ') (${ VSub_Name corpus))})
            (C {(mv)} {(DQ ($ VSub_DollarName '$corpus'))} {(DQ (${ VSub_Name corpus) (_old))})
            (C {(mkdir)} {(DQ ($ VSub_DollarName '$corpus'))})
            (C {(DQ ($ VSub_DollarName '$fuzzer'))} {(-max_len) (Lit_Other '=') (50000)} 
              {(-merge) (Lit_Other '=') (1)} {(DQ ($ VSub_DollarName '$corpus'))} {(DQ (${ VSub_Name corpus) (_old))}
            )
            (C {(rm)} {(-Rf)} {(DQ (${ VSub_Name corpus) (_old))})
          ]
        )
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/fuzz/client))} 
      {(client_corpus)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/fuzz/server))} 
      {(server_corpus)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') (/fuzz/client))} 
      {(client_corpus_no_fuzzer_mode)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_DollarName '$no_fuzzer_mode_build_dir') (/fuzz/server))} 
      {(server_corpus_no_fuzzer_mode)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/fuzz/dtls_client))} 
      {(dtls_client_corpus)}
    )
    (C {(minimize_corpus)} {(DQ ($ VSub_DollarName '$fuzzer_mode_build_dir') (/fuzz/dtls_server))} 
      {(dtls_server_corpus)}
    )
    (C {(DQ ($ VSub_DollarName '$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_DollarName '$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_DollarName '$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_DollarName '$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_DollarName '$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_DollarName '$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))}
    )
  ]
)