'Obtain a SimState object for a specific address
Fastpath means the CFG generation will work in an IDA-like way, in which it will not try to execute every
single statement in the emulator, but will just do the decoding job. This is much faster than the old way.
:param int ip: The instruction pointer
:param str jumpkind: The jumpkind upon executing the block
:return: The newly-generated state
:rtype: SimState'

def _create_initial_state(self, ip, jumpkind):

    jumpkind = ('Ijk_Boring' if (jumpkind is None) else jumpkind)
    if (self._initial_state is None):
        state = self.project.factory.entry_state(addr=ip, mode='fastpath')
    else:
        state = self._initial_state
        state.history.jumpkind = jumpkind
        state.set_mode('fastpath')
        state.ip = state.se.BVV(ip, self.project.arch.bits)
    if (jumpkind is not None):
        state.history.jumpkind = jumpkind
    state_info = None
    if ((ip is not None) and (self.project.arch.name in ('MIPS32', 'MIPS64'))):
        state_info = {'t9': state.se.BVV(ip, self.project.arch.bits)}
    elif ((ip is not None) and (self.project.arch.name == 'PPC64')):
        state_info = {'r2': state.registers.load('r2')}
    state = self.project.arch.prepare_state(state, state_info)
    return state
