docs: def handleFlow(self):
          
          #TODO replace sorting loops with sorted function
          self.targets = {}
          self.api = []
          #flow = []
          
          addrs = []
          internals = []
          
          for instr in self.bb_insns:
              if isinstance(instr, CallInsn):
                  if instr.is_api:
                      self.targets[instr.addr] = "API:" + instr.fcn_name
                      
                      self.api.append({"name": instr.fcn_name})
                  else:
                      internals.append(instr.addr)
                      
              else:
                  if instr.jumpout:
                      internals.append(instr.addr)
                  else:
                      addrs.append(instr.addr)
                      addrs.append(instr.offset)
          
          addrs.sort()
          addrs_dict = {}
          for i in range(len(addrs)):
              addrs_dict[addrs[i]] = i
          
          internals_sorted = internals[:]
          internals_sorted.sort()
          calleds_dict = {}
          for i in range(len(internals_sorted)):
              calleds_dict[internals_sorted[i]] = str(i)
              
          flowhash = datasketch.MinHash(num_perm=32)
          
          for instr in self.bb_insns:
              if isinstance(instr, CallInsn):
                  if instr.is_api:
                      #flow.append(hex(instr.offset)+"  API:" + instr.fcn_name)
                      flowhash.update("API:" + instr.fcn_name)
                  else:
                      #flow.append(hex(instr.offset)+"  OUT:" + calleds_dict[instr.addr])
                      flowhash.update("OUT:" + calleds_dict[instr.addr])
                      self.targets[instr.addr] = "OUT:" + calleds_dict[instr.addr]
              else:
                  if instr.jumpout:
                      #flow.append(hex(instr.offset)+"  OUT:" + calleds_dict[instr.addr])
                      flowhash.update("OUT:" + calleds_dict[instr.addr])
                      self.targets[instr.addr] = "OUT:" + calleds_dict[instr.addr]
                  else:
                      off = addrs_dict[instr.offset]
                      tgt = addrs_dict[instr.addr]
                      #flow.append("%x (%d)   JMP:%s   - %x (%d)" % (instr.offset, off, str(tgt - off), instr.addr, tgt))
                      flowhash.update("JMP:" + str(tgt - off))
                      self.targets[instr.addr] = "JMP:" + str(tgt - off)
          
          lean_flowhash = datasketch.LeanMinHash(flowhash)
          flowhash_buf = bytearray(lean_flowhash.bytesize())
          lean_flowhash.serialize(flowhash_buf)
          
          self.flowhash = str(flowhash_buf)
          '''
          for f in flow:
              print f
          for pp in self.bb_insns:
              print pp
          '''