docs: def preconstrain_file(self, content, simfile, set_length=False):
          """
          Preconstrain the contents of a file.
  
          :param content:     The content to preconstrain the file to. Can be a bytestring or a list thereof.
          :param simfile:     The actual simfile to preconstrain
          """
          repair_entry_state_opts = False
          if o.TRACK_ACTION_HISTORY in self.state.options:
              repair_entry_state_opts = True
              self.state.options -= {o.TRACK_ACTION_HISTORY}
  
          if set_length: # disable read bounds
              simfile.has_end = False
  
          pos = 0
          for write in content:
              if type(write) is int:
                  write = bytes([write])
              data, length, pos = simfile.read(pos, len(write), disable_actions=True, inspect=False, short_reads=False)
              if not claripy.is_true(length == len(write)):
                  raise AngrError("Bug in either SimFile or in usage of preconstrainer: couldn't get requested data from file")
              self.preconstrain(write, data)
  
          # if the file is a stream, reset its position
          if simfile.pos is not None:
              simfile.pos = 0
  
          if set_length: # enable read bounds; size is now maximum size
              simfile.has_end = True
  
          if repair_entry_state_opts:
              self.state.options |= {o.TRACK_ACTION_HISTORY}