| A newly accepted, live keeper-outlet request gets at most four native ticks
| to reach the existing keeper decision before its possession timeout wins.
| Called ONLY when publishing a previously empty ASK, including adapter IRQ.
| A0=validated AI keeper. Preserve all registers/CCR; only +48 may change.
    .text
    .globl _start
_start:
    move.w %sr,-(%sp)
    move.l %d0,-(%sp)
    tst.w 0x34(%a0)
    bne.s done
    btst #3,0x62(%a0)
    bne.s done
    move.b 0xFFFFC2EA,%d0
    andi.b #0x11,%d0
    bne.s done
    tst.w 0xFFFFD412
    bne.s done
    btst #0,0xFFFFC2FA
    bne.s done
    btst #2,0xFFFFC2F2
    bne.s done
    tst.w 0xFFFFF064
    beq.s done
    move.w 0x52(%a0),%d0
    cmp.w 0xFFFFB7AA,%d0
    bne.s done
    cmp.w 0xFFFFF066,%d0
    bne.s done
    | Negative means the native timeout event is already queued, even if its
    | visible whistle flag is not set yet. Preserve that committed timeout.
    tst.w 0x48(%a0)
    bmi.s done
    cmpi.w #4,0x48(%a0)
    bge.s done
    move.w #4,0x48(%a0)
done:
    move.l (%sp)+,%d0
    move.w (%sp)+,%sr
    rts
