text: # The only clever thing that we do, is strip out "pad" and "last" records
  # To make editing less tedious
  
  
  def split(mpwobj):
      """Split the binary object into a list of "chunks"
      """
  
      biglist = []
  
      ofs = 0
      while ofs < len(mpwobj):
          rectype = mpwobj[ofs]
  
          if not (rectype <= 20 or rectype == 25):
              raise ValueError(f'bad record type {rectype} at {hex(offset)}')
  
          if rectype == 1: # First
              reclen = 4
          elif rectype == 2: # Last
              reclen = 2
          elif rectype == 5: # Module
              reclen = 6
          elif rectype == 6: # EntryPoint
              reclen = 8
          elif rectype == 7: # Size
              reclen = 6
          elif rectype == 11: # Filename
              reclen = 8
          elif rectype == 14: # ModuleEnd
              reclen = 8
          elif rectype == 16: # BlockEnd
              reclen = 12
          elif rectype == 25: # XData
              reclen = 8
          else:
              reclen = 256 * mpwobj[ofs+2] + mpwobj[ofs+3]
  
          biglist.append(mpwobj[ofs:ofs+reclen])
          ofs += reclen
  
      return biglist
  
  
  def join(chunks):
      newlist = []
      for c in chunks:
          newlist.append(c)
          if len(c) & 1:
              newlist.append(b'\0')
      return newlist
  