'Remove unnecessary functions and data
:return: None'

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', 'program_invocation_short_', '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 xrange(len(d.content)):
                ptr = d.content[i]
                if (isinstance(ptr, Label) and (ptr.name in glibc_references_blacklist)):
                    d.content[i] = 0
