 +static long	mem_sortSam2;
 +static long	mem_saveUnmapReads;
 +static long	mem_mtMateFinder__;
++static long	mem_blkrdFreeList2Init;
 +
 +static long md_register_mem_id(const char * mem_id_str);
 +#define REGISTER_MEM_ID(id) id = md_register_mem_id(#id)

+	  *nl = 0; // sam_parse1() supposes '\0' or '\t' as delimiters of tokens
+	  p = nl + 1;
+	} else {
+	  fprintf(stderr, "(E) a block is not terminated by a new line\n");
+	  exit(-1);
+	}
+      } /* for p */

+  for(j=0; j<n_block_reader; j++){
+    blkrd->w[j].mt = blkrd;
+    pthread_create(&blkrd->w[j].tid, &attr, mt_block_reader, &blkrd->w[j]);
+    char tn[32];
+    sprintf(tn, "blk_reader-%d-%d\n", j, CPU_BLKRD(j));
+    if(pthread_setname_np(blkrd->w[j].tid, tn)){}
+#if defined(CPU_SET_AFFINITY)
+{
+      cpu_set_t cpuset;
