def is_JOP_trampoline(self):
    '\n        :return boolean: Returns True if the gadget is a JOP trampoline. Defined as a gadget that begins with a\n                         pop opcode to a non-memory location, and that ends in a dereference of that value. Used to\n                         redirect execution to value stored in memory.\n        '
    first_instr = self.instructions[0]
    gpi_target_op = self.instructions[(len(self.instructions) - 1)].op1
    if ((first_instr.opcode == 'pop') and ('[' not in first_instr.op1)):
        gpi_target = Instruction.get_operand_register_family(gpi_target_op)
        pop_target = Instruction.get_operand_register_family(first_instr.op1)
        return ((gpi_target == pop_target) and ('[' in gpi_target_op))
    return False
:return boolean: Returns True if the gadget is a JOP trampoline. Defined as a gadget that begins with a
                 pop opcode to a non-memory location, and that ends in a dereference of that value. Used to
                 redirect execution to value stored in memory.
def is_JOP_trampoline(self):
    '\n        :return boolean: Returns True if the gadget is a JOP trampoline. Defined as a gadget that begins with a\n                         pop opcode to a non-memory location, and that ends in a dereference of that value. Used to\n                         redirect execution to value stored in memory.\n        '
    first_instr = self.instructions[0]
    gpi_target_op = self.instructions[(len(self.instructions) - 1)].op1
    if ((first_instr.opcode == 'pop') and ('[' not in first_instr.op1)):
        gpi_target = Instruction.get_operand_register_family(gpi_target_op)
        pop_target = Instruction.get_operand_register_family(first_instr.op1)
        return ((gpi_target == pop_target) and ('[' in gpi_target_op))
    return False