code: def state_blank(self, flag_page=None, **kwargs):
          
          s = super(SimCGC, self).state_blank(**kwargs)  # pylint:disable=invalid-name
  
          # Special stack base for CGC binaries to work with Shellphish CRS
          s.regs.sp = 0xbaaaaffc
  
          # Map the special cgc memory
          if o.ABSTRACT_MEMORY not in s.options:
              s.memory.mem._preapproved_stack = IRange(0xbaaab000 - 1024 * 1024 * 8, 0xbaaab000)
              s.memory.map_region(0x4347c000, 4096, 1)
  
          # Create the CGC plugin
          s.get_plugin('cgc')
  
          # Set up the flag page
          if flag_page is None:
              flag_page = [s.solver.BVS("cgc-flag-byte-%d" % i, 8, key=('flag', i), eternal=True) for i in range(0x1000)]
          elif type(flag_page) is bytes:
              flag_page = [s.solver.BVV(c, 8) for c in flag_page]
          elif type(flag_page) is list:
              pass
          else:
              raise ValueError("Bad flag page: expected None, bytestring, or list, but got %s" % type(flag_page))
  
          s.cgc.flag_bytes = flag_page
          if s.mode != 'static':
              s.memory.store(0x4347c000, claripy.Concat(*s.cgc.flag_bytes), priv=True)
  
          # set up the address for concrete transmits
          s.unicorn.transmit_addr = self.syscall_from_number(2).addr
  
          s.libc.max_str_len = 1000000
          s.libc.max_strtol_len = 10
          s.libc.max_memcpy_size = 0x100000
          s.libc.max_buffer_size = 0x100000
  
          return s
docs: :param flag_page:   Flag page content, either a string or a list of BV8s