 cnop 0,4
DoCollision:
  lea -$44(A7),A7
  movem.l D2-D7/A2-A6,-(A7)
  move.l A1,$68(A7)
  movea.l $14(A1),A0
  tst.l A0
   beq.w .L3
  movea.l $2(A0),A0
  movea.l (A0),A5
  moveq.l #$04,D0
  move.l D0,$64(A7)
  btst #$0,$15(A5)
   beq.b .L4
  moveq.l #$01,D1
  move.l D1,$64(A7)
.L4:
  tst.l (A5)
   beq.w .L3
  clr.l $42(A7)
.L8:
  movea.l (A5),A4
  tst.l A4
   beq.w .L10
  movea.w $16(A5),A0
  movea.w $1A(A5),A1
  lea -$1(A1,A0.L),A2
  move.l A0,D4
  move.l A1,D6
  movea.w $16(A4),A6
  cmpa.l A2,A6
   bgt.w .L10
  clr.l $46(A7)
  clr.l $36(A7)
.L11:
  move.w $14(A4),D0
  moveq.l #$04,D1
  move.w D0,D2
  btst #$0,D2
   beq.b .L13
  moveq.l #$01,D1
.L13:
  movea.w $18(A4),A0
  move.w $1C(A4),D0
  ext.l D0
  lsl.l D1,D0
  lea -$1(A0,D0.L),A1
  movea.w $18(A5),A2
  move.l A0,D3
  cmpa.l A2,A1
   blt.w .L15
  move.w $1C(A5),D0
  ext.l D0
  move.l $64(A7),D1
  lsl.l D1,D0
  lea -$1(A2,D0.L),A0
  cmp.l A0,D3
   bgt.w .L15
  clr.l $60(A7)
  move.l A6,D0
  sub.l D4,D0
  move.l $2C(A5),$5C(A7)
  move.l $2C(A4),$58(A7)
  clr.l $52(A7)
  clr.l $4E(A7)
  clr.l $4A(A7)
  btst #$0,$15(A5)
   beq.b .L16
  move.w $1C(A5),D1
  asr.w #4,D1
  move.w D1,$56(A7)
 bra.b .L17
 
.L16:
  move.w $1C(A5),$56(A7)
.L17:
  btst #$0,D2
   beq.b .L18
  movea.w $1C(A4),A1
  move.w A1,D2
  asr.w #4,D2
  movea.w D2,A1
 bra.b .L19
 
.L18:
  movea.w $1C(A4),A1
.L19:
  tst.l D0
   ble.b .L20
  move.w $56(A7),$48(A7)
  move.l $46(A7),$52(A7)
  muls.l $52(A7),d0
  move.l D0,$52(A7)
  move.l A6,D1
 bra.b .L21
 
.L20:
  move.w A1,$44(A7)
  move.l $42(A7),$4E(A7)
  muls.l $4E(A7),d0
  move.l D0,$4E(A7)
  move.l D4,D1
.L21:
  move.l D3,D7
  sub.l A2,D7
   bpl.b .L22
  move.l D7,D0
  neg.l D0
  move.l D0,$4A(A7)
  move.l D0,D3
  asr.l #4,D3
  move.l D3,$4A(A7)
  moveq.l #$0F,D5
  and.l D0,D5
  moveq.l #$00,D7
 bra.b .L23
 
.L22:
  move.l D7,D5
  moveq.l #$0F,D0
  and.l D0,D5
  neg.l D5
  asr.l #4,D7
.L23:
  move.l D6,D2
  add.l D4,D2
  cmp.l D1,D2
   ble.w .L25
  movea.w $1A(A4),A0
  move.l A0,D0
  add.l A6,D0
  cmp.l D1,D0
   ble.w .L25
  lea $0.W,A2 ; Points to Page 0
  movea.l D5,A0
  move.l A0,D3
  neg.l D3
  movea.l D3,A0
  moveq.l #$10,D3
  add.l D5,D3
  move.l D3,$32(A7)
  move.l D2,$3E(A7)
  move.l D0,$3A(A7)
.L26:
  move.l D7,D3
  movea.l $4A(A7),A3
  addq.l #1,D1
  move.l D1,$2E(A7)
 bra.w .L28
 
.L34:
  move.l $52(A7),D0
  add.l D3,D0
  move.l A2,D1
  movea.l $5C(A7),A6
  move.w (A6,D0.L*2),D1
  movea.l D1,A2
  moveq.l #$10,D0
  sub.l D5,D0
  lsl.l D0,D2
  move.l A2,D0
  and.l D2,D0
   bne.w .L55
  addq.l #1,A3
 bra.w .L28
 
.L32:
  tst.l D5
   bne.b .L37
  move.l $52(A7),D0
  add.l D3,D0
  move.l $4E(A7),D1
  add.l A3,D1
  movea.l $5C(A7),A6
  move.w (A6,D0.L*2),D0
  movea.l $58(A7),A6
  and.w (A6,D1.L*2),D0
   bne.w .L55
  addq.l #1,A3
 bra.b .L42
 
.L37:
  move.l $52(A7),D0
  add.l D3,D0
  movea.l $5C(A7),A6
  moveq.l #$00,D2
  move.w (A6,D0.L*2),D2
  move.l $4E(A7),D0
  add.l A3,D0
  movea.l $58(A7),A6
  move.w (A6,D0.L*2),$38(A7)
  move.l $36(A7),D1
  move.l A0,D0
  lsl.l D0,D1
  move.l D2,D0
  and.l D1,D0
   beq.b .L40
  moveq.l #$01,D1
  move.l D1,$60(A7)
 bra.b .L29
 
.L40:
  addq.l #1,A3
  cmp.l A3,D4
   blt.b .L29
  move.l $4E(A7),D0
  add.l A3,D0
  movea.l $58(A7),A6
  move.w (A6,D0.L*2),D0
  and.l #MaxWord,D0
  move.l $32(A7),D1
  asr.l D1,D0
  and.l D0,D2
   beq.b .L42
  moveq.l #$01,D2
  move.l D2,$60(A7)
 bra.b .L29
 
.L42:
  addq.l #1,D3
.L28:
  moveq.l #$00,D6
  move.w $56(A7),D6
  cmp.l D3,D6
   ble.b .L29
  moveq.l #$00,D4
  move.w A1,D4
  cmp.l A3,D4
   ble.b .L29
  tst.l D5
   ble.w .L32
  move.l $52(A7),D0
  add.l D3,D0
  movea.l $5C(A7),A6
  moveq.l #$00,D1
  move.w (A6,D0.L*2),D1
  move.l $4E(A7),D0
  add.l A3,D0
  movea.l $58(A7),A6
  moveq.l #$00,D2
  move.w (A6,D0.L*2),D2
  move.l D2,D0
  asr.l D5,D0
  and.l D0,D1
   beq.b .L33
.L55:
  moveq.l #$01,D0
  move.l D0,$60(A7)
 bra.b .L29
 
.L33:
  addq.l #1,D3
  cmp.l D3,D6
   bge.w .L34
.L29:
  moveq.l #$00,D0
  move.w $56(A7),D0
  add.l D0,$52(A7)
  moveq.l #$00,D0
  move.w A1,D0
  add.l D0,$4E(A7)
  move.l $2E(A7),D1
  cmp.l $3E(A7),D1
   bge.b .L25
  cmp.l $3A(A7),D1
   blt.w .L26
.L25:
  moveq.l #$01,D1
  cmp.l $60(A7),D1
   bne.b .L15
  move.w $20(A5),D0
  and.w $22(A4),D0
  moveq.l #$00,D1
 bra.b .L46
 
.L50:
  addq.l #1,D1
  lsr.w #1,D0
.L46:
  moveq.l #$0F,D2
  cmp.l D1,D2
   blt.b .L15
  tst.w D0
   beq.b .L15
  btst #$0,D0
   beq.b .L50
  movea.l $68(A7),A1
  movea.l $14(A1),A0
  movea.l $12(A0),A0
  tst.l A0
   beq.b .L15
  move.l D1,D0
  lsl.l #2,D0
  tst.l $0(A0,D0.L)
   beq.b .L15
  move.l A4,-(A7)
  move.l A5,-(A7)
  movea.l $0(A0,D0.L),A0
27$:
   jsr (A0)
  addq.l #8,A7
.L15:
  movea.l (A4),A4
  tst.l A4
   beq.b .L10
  movea.w $16(A5),A0
  movea.w $1A(A5),A1
  lea -$1(A1,A0.L),A3
  movea.w $16(A4),A2
  move.l A0,D4
  move.l A1,D6
  movea.l A2,A6
  cmpa.l A3,A6
   ble.w .L11
.L10:
  movea.l (A5),A5
  tst.l (A5)
   bne.w .L8
.L3:
  movem.l (A7)+,D2-D7/A2-A6
  lea $44(A7),A7
 rtS 

 cnop 0,4
