code: def remove_unnecessary_stuff(self):
          
  
          glibc_functions_blacklist = {
              '_start',
              '_init',
              '_fini',
              '__gmon_start__',
              '__do_global_dtors_aux',
              'frame_dummy',
              'atexit',
              'deregister_tm_clones',
              'register_tm_clones',
              '__x86.get_pc_thunk.bx',
              '__libc_csu_init',
              '__libc_csu_fini',
          }
  
          glibc_data_blacklist = {
              '__TMC_END__',
              '_GLOBAL_OFFSET_TABLE_',
              '__JCR_END__',
              '__dso_handle',
              '__init_array_start',
              '__init_array_end',
  
              #
              'stdout',
              'stderr',
              'stdin',
              'program_invocation_short_',
              'program_invocation_short_name',
              'program_invocation_name',
              '__progname_full',
              '_IO_stdin_used',
              'obstack_alloc_failed_hand',
              'optind',
              'optarg',
              '__progname',
              '_environ',
              'environ',
              '__environ',
          }
  
          glibc_references_blacklist = {
              'frame_dummy',
              '__do_global_dtors_aux',
          }
  
          self.procedures = [p for p in self.procedures if p.name not in glibc_functions_blacklist and not p.is_plt]
  
          self.data = [d for d in self.data if not any(lbl.name in glibc_data_blacklist for _, lbl in d.labels)]
  
          for d in self.data:
              if d.sort == 'pointer-array':
                  for i in range(len(d.content)):
                      ptr = d.content[i]
                      if isinstance(ptr, Label) and ptr.name in glibc_references_blacklist:
                          d.content[i] = 0
docs: Remove unnecessary functions and data
  
          :return: None