'Some code executed before actually processing the job.
:param VFGJob job: the VFGJob object.
:return: None'

def _pre_job_handling(self, job):

    if ((self._final_address is not None) and (job.addr == self._final_address)):
        l.debug('%s    is    viewed    as    a    final    state.    Skip.', job)
        raise AngrSkipJobNotice()
    l.debug('Handling    VFGJob    %s', job)
    if (not self._top_task):
        l.debug('No    more    tasks    available.    Skip    the    job.')
        raise AngrSkipJobNotice()
    assert isinstance(self._top_task, FunctionAnalysis)
    if (job not in self._top_task.jobs):
        unwind_count = None
        for (i, task) in enumerate(reversed(self._task_stack)):
            if isinstance(task, FunctionAnalysis):
                if (job in task.jobs):
                    unwind_count = i
        if (unwind_count is None):
            l.debug('%s    is    not    recorded.    Skip    the    job.', job)
            raise AngrSkipJobNotice()
        else:
            for i in xrange(unwind_count):
                if isinstance(self._top_task, FunctionAnalysis):
                    pending_job_key = self._get_pending_job(self._top_task.function_address)
                    if (pending_job_key is not None):
                        self._trace_pending_job(pending_job_key)
                        l.debug('A    pending    job    is    found    for    function    %#x.    Delay    %s.', self._top_task.function_address, job)
                        raise AngrDelayJobNotice()
                task = self._task_stack.pop()
                if (not task.done):
                    l.warning('Removing    an    unfinished    task    %s.    Might    be    a    bug.', task)
            assert (job in self._top_task.jobs)
    if ((self._final_state_callback is not None) and self._final_state_callback(job.state, job.call_stack)):
        l.debug('%s.state    is    considered    as    a    final    state.    Skip    the    job.', job)
        self.final_states.append(job.state)
        raise AngrSkipJobNotice()
    self._execution_counter[job.addr] += 1
    self._top_task.jobs.remove(job)
    job.call_stack_suffix = job.get_call_stack_suffix()
    job.jumpkind = ('Ijk_Boring' if (job.state.history.jumpkind is None) else job.state.history.jumpkind)
    src_block_id = job.src_block_id
    src_exit_stmt_idx = job.src_exit_stmt_idx
    addr = job.state.se.any_int(job.state.regs.ip)
    input_state = job.state
    block_id = BlockID.new(addr, job.call_stack_suffix, job.jumpkind)
    if (self._tracing_times[block_id] > self._max_iterations):
        l.debug('%s    has    been    traced    too    many    times.    Skip', job)
        raise AngrSkipJobNotice()
    self._tracing_times[block_id] += 1
    if (block_id not in self._nodes):
        vfg_node = VFGNode(addr, block_id, state=input_state)
        self._nodes[block_id] = vfg_node
    else:
        vfg_node = self._nodes[block_id]
    job.vfg_node = vfg_node
    vfg_node.state = input_state
    (job.sim_successors, _, restart_analysis) = self._get_simsuccessors(input_state, addr)
    if restart_analysis:
        raise AngrVFGRestartAnalysisNotice()
    if (job.sim_successors is None):
        l.debug('Cannot    create    SimSuccessors    for    %s.    Skip.', job)
        raise AngrSkipJobNotice()
    self._graph_add_edge(src_block_id, block_id, jumpkind=job.jumpkind, src_exit_stmt_idx=src_exit_stmt_idx)
