(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BINARY)
          op: Equal
          rhs: {(DQ (${ VSub_Name BUILT_PRODUCTS_DIR) (/) (${ VSub_Name EXECUTABLE_PATH))}
          spids: [32]
        )
      ]
      spids: [32]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalNot
                      child: (BoolUnary op_id:BoolUnary_f child:{(DQ ($ VSub_Name '$BINARY'))})
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(exit)} {(0)})]
          spids: [16777215 59]
        )
      ]
      spids: [16777215 74]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BINARY_DIR)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {(DQ (${ VSub_Name BINARY))})])
                  left_token: <Left_CommandSub '$('>
                  spids: [79 87]
                )
              )
            }
          spids: [77]
        )
      ]
      spids: [77]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BUILTIN_DYLIB_PATH)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(otool)} {(-L)} {(DQ (${ VSub_Name BINARY))})
                          (C {(sed)} {(-Ene)} 
                            {
                              (SQ 
                                <
's/^[[:blank:]]+(.*libclang_rt\\.asan_.*_dynamic\\.dylib).*$/\\1/p'
                                >
                              )
                            }
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [95 117]
              )
            }
          spids: [94]
        )
      ]
      spids: [94]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ (${ VSub_Name BUILTIN_DYLIB_PATH))}
                      right: {(Lit_Other '*') (asan_iossim_dynamic) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ASAN_DYLIB_NAME)
                  op: Equal
                  rhs: {(libclang_rt.asan_iossim_dynamic.dylib)}
                  spids: [142]
                )
              ]
              spids: [142]
            )
          ]
          spids: [16777215 139]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ (${ VSub_Name BUILTIN_DYLIB_PATH))}
                      right: {(Lit_Other '*') (asan_osx_dynamic) (Lit_Other '*')}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ASAN_DYLIB_NAME)
                  op: Equal
                  rhs: {(libclang_rt.asan_osx_dynamic.dylib)}
                  spids: [167]
                )
              ]
              spids: [167]
            )
          ]
          spids: [145 164]
        )
      ]
      spids: [16777215 170]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_z child:{(DQ (${ VSub_Name BUILTIN_DYLIB_PATH))})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ (${ VSub_Name BINARY) (' does not depend on the ASan runtime library!'))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[200])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [16777215 188]
        )
      ]
      spids: [16777215 208]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ASAN_DYLIB)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(find)} 
                        {
                          (DQ (${ VSub_Name BUILT_PRODUCTS_DIR) 
                            ('/../../third_party/llvm-build/Release+Asserts/lib/clang/')
                          )
                        } {(-type)} {(f)} {(-path)} {(DQ ('*') (${ VSub_Name ASAN_DYLIB_NAME))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [218 244]
              )
            }
          spids: [217]
        )
      ]
      spids: [217]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DYLIB_BASENAME)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(basename)} {(DQ (${ VSub_Name ASAN_DYLIB))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [248 256]
              )
            }
          spids: [247]
        )
      ]
      spids: [247]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ (${ VSub_Name DYLIB_BASENAME))}
                      right: {(DQ (${ VSub_Name ASAN_DYLIB_NAME))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('basename(') (${ VSub_Name ASAN_DYLIB) (') != ') (${ VSub_Name ASAN_DYLIB_NAME))
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[295])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [16777215 279]
        )
      ]
      spids: [16777215 303]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:UPPER_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BINARY_DIR))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [319 327]
              )
            }
          spids: [318]
        )
      ]
      spids: [318]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name UPPER_DIR))} {(Lit_Other '=') (Lit_Other '=')} 
                  {(DQ (MacOS))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LIBRARIES_DIR)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name UPPER_DIR) (/Libraries))}
                  spids: [352]
                )
              ]
              spids: [352]
            )
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name LIBRARIES_DIR))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NEW_LC_ID_DYLIB)
                  op: Equal
                  rhs: {(DQ ('@executable_path/../Libraries/') (${ VSub_Name ASAN_DYLIB_NAME))}
                  spids: [372]
                )
              ]
              spids: [372]
            )
          ]
          spids: [16777215 349]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:LIBRARIES_DIR)
              op: Equal
              rhs: {(DQ (${ VSub_Name BINARY_DIR))}
              spids: [383]
            )
          ]
          spids: [383]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:NEW_LC_ID_DYLIB)
              op: Equal
              rhs: {(DQ ('@executable_path/') (${ VSub_Name ASAN_DYLIB_NAME))}
              spids: [391]
            )
          ]
          spids: [391]
        )
      ]
      spids: [380 399]
    )
    (C {(cp)} {(DQ (${ VSub_Name ASAN_DYLIB))} {(DQ (${ VSub_Name LIBRARIES_DIR))})
    (C {(install_name_tool)} {(-id)} {(DQ (${ VSub_Name NEW_LC_ID_DYLIB))} 
      {(DQ (${ VSub_Name LIBRARIES_DIR) (/) (${ VSub_Name ASAN_DYLIB_NAME))}
    )
    (C {(install_name_tool)} {(-change)} {(DQ (${ VSub_Name BUILTIN_DYLIB_PATH))} 
      {(DQ (${ VSub_Name NEW_LC_ID_DYLIB))} {(DQ (${ VSub_Name BINARY))}
    )
  ]
)