def is_JOP_COP_dataloader(self):
    '\n        :return boolean: Returns True if the gadget is a JOP or COP data loader. Defined as a gadget that begins with a\n                         pop opcode to a non-memory location, that is also not the target of the GPI. Used to pop a\n                         necessary value off stack en masse before redirecting to the dispatcher.\n        '
    first_instr = self.instructions[0]
    if ((first_instr.opcode == 'pop') and ('[' not in first_instr.op1)):
        gpi_target = Instruction.get_operand_register_family(self.instructions[(len(self.instructions) - 1)].op1)
        pop_target = Instruction.get_operand_register_family(first_instr.op1)
        return (gpi_target != pop_target)
    return False
:return boolean: Returns True if the gadget is a JOP or COP data loader. Defined as a gadget that begins with a
                 pop opcode to a non-memory location, that is also not the target of the GPI. Used to pop a
                 necessary value off stack en masse before redirecting to the dispatcher.
def is_JOP_COP_dataloader(self):
    '\n        :return boolean: Returns True if the gadget is a JOP or COP data loader. Defined as a gadget that begins with a\n                         pop opcode to a non-memory location, that is also not the target of the GPI. Used to pop a\n                         necessary value off stack en masse before redirecting to the dispatcher.\n        '
    first_instr = self.instructions[0]
    if ((first_instr.opcode == 'pop') and ('[' not in first_instr.op1)):
        gpi_target = Instruction.get_operand_register_family(self.instructions[(len(self.instructions) - 1)].op1)
        pop_target = Instruction.get_operand_register_family(first_instr.op1)
        return (gpi_target != pop_target)
    return False