| An explicit manual-Y request must reach native keeper selection even when
| the currently controlled skater is down. Original B244 down/action gates
| remain exact without a valid request. No actors are healed/moved and no
| physics, attributes, score or SRAM are changed. Native C0BC/C0DA assign.
 .text
 .globl _start
_start:
 move.w %sr,-(%sp)
 movem.l %d0-%d7/%a0-%a6,-(%sp)
 ori.w #0x700,%sr
 btst #5,0x62(%a3)
 beq.w original
 btst #3,0x62(%a3)
 beq.w original
 btst #3,0x63(%a3)
 bne.w original
 btst #0,0x63(%a3)
 bne.w original
 tst.w 0xFFFFD412
 bne.w original
 btst #0,0xFFFFC2FA
 bne.w original
 btst #2,0xFFFFC2F2
 bne.w original
 cmpi.w #11,%d6
 bhi.w original
 move.w %d4,%d5
 cmpi.w #2,%d5
 bhi.w original
 moveq #0,%d7
 lea 0xFFFFF0E0,%a4
 tst.w 0xFFFFD046
 beq.s request
 tst.w 0xFFFFF84C
 bne.s adapter
 jsr 0x2EA610
 bne.s request
adapter:
 moveq #1,%d7
 lea 0xFFFFF0B2,%a4
 tst.w 0xFFFFC318
 bmi.s request
 addq.w #4,%d5
request:
 tst.b (%a4,%d5.w)
 beq.w original
 moveq #0,%d2
 cmpi.w #5,%d6
 ble.s side
 moveq #2,%d2
side:
 lea 0xFFFFD05A,%a0
 tst.w (%a0,%d2.w)
 bne.w original
 move.w 0xFFFFB7AA,%d0
 bmi.s keeper
 tst.w %d7
 beq.s legacy_owner
 cmp.w %d6,%d0
 beq.w original
 cmpi.w #5,%d0
 beq.s legacy_owner
 cmpi.w #11,%d0
 bne.s keeper
legacy_owner:
 subq.w #6,%d0
 move.w %d6,%d1
 subq.w #6,%d1
 eor.w %d1,%d0
 bpl.w original
keeper:
 moveq #5,%d0
 tst.w %d2
 beq.s find_keeper
 moveq #11,%d0
find_keeper:
 jsr 0xB86A
 tst.w %d0
 bmi.w original
 move.w %d0,%d1
 lsl.w #7,%d1
 lea 0xFFFFB04A,%a0
 btst #3,0x62(%a0,%d1.w)
 bne.w original
 clr.b (%a4,%d5.w)
 tst.w %d7
 beq.s assign
 clr.l 0xFFFFF064
 lea 0xFFFFF0C2,%a0
 clr.w (%a0,%d5.w)
assign:
 tst.w %d4
 bne.s assign_second
 jsr 0xC0BC
 bra.s assigned
assign_second:
 jsr 0xC0DA
assigned:
 move.l %d0,(%sp)
 movem.l (%sp)+,%d0-%d7/%a0-%a6
 move.w (%sp)+,%sr
 rts
original:
 movem.l (%sp)+,%d0-%d7/%a0-%a6
 move.w (%sp)+,%sr
 btst #3,0x64(%a3)
 jmp 0xB24A

 .ascii "YD01"
