def METHOD_NAME(ql: Qiling, address: int, params):
    # this case is an anomaly from other interrupts (from what i learned, can be wrong)
    def exec_into_0x2d(ql: Qiling, intno: int, start):
        # we read where this hook is supposed to return
        ret = ql.stack_pop()
        # https://github.com/LordNoteworthy/al-khaser/wiki/Anti-Debugging-Tricks#interrupt-0x2d
        pointer = ql.os.heap.alloc(0x4)
        # the value has just to be different from 0x80000003
        ql.mem.write_ptr(pointer, 0, 4)
        double_pointer = ql.os.heap.alloc(0x4)
        ql.mem.write_ptr(double_pointer, pointer, 4)
        # arg
        ql.stack_push(double_pointer)
        # ret
        ql.stack_push(ret)
        # func
        ql.stack_push(start)
    def exec_standard_into(ql: Qiling, intno: int, user_data):
        # FIXME: probably this works only with al-khaser.
        pointer = ql.os.heap.alloc(0x4)
        # the value has just to be different from 0x80000003
        ql.mem.write_ptr(pointer, 0, 4)
        double_pointer = ql.os.heap.alloc(0x4)
        ql.mem.write_ptr(double_pointer, pointer, 4)
        ql.arch.regs.eax = double_pointer
        ql.arch.regs.esi = user_data
    addr = params["Handler"]
    # the interrupts 0x2d, 0x3 must be hooked
    hook = ql.hook_intno(exec_standard_into, 0x3, user_data=addr)
    hook = ql.hook_intno(exec_into_0x2d, 0x2d, user_data=addr)
    handle = Handle(obj=hook)
    ql.os.handle_manager.append(handle)
    return handle.id