.file "20020406-1.c" .text .align 2 .globl FFmul .type FFmul, @function FFmul: link.w %a6,#0 move.l 8(%a6),%d0 unlk %a6 rts .size FFmul, .-FFmul .align 2 .globl DUPFFdeg .type DUPFFdeg, @function DUPFFdeg: link.w %a6,#0 move.l 8(%a6),%a0 move.l 4(%a0),%d0 unlk %a6 rts .size DUPFFdeg, .-DUPFFdeg .align 2 .globl DUPFFnew .type DUPFFnew, @function DUPFFnew: link.w %a6,#0 move.l %a3,-(%sp) move.l %a2,-(%sp) move.l 8(%a6),%a3 pea 12.w jbsr malloc move.l %a0,%a2 clr.l 8(%a0) addq.l #4,%sp tst.l %a3 jblt .L4 pea 4.w pea 1(%a3) jbsr calloc move.l %a0,8(%a2) addq.l #8,%sp .L4: move.l %a3,(%a2) moveq.l #-1,%d0 move.l %d0,4(%a2) move.l %a2,%a0 move.l %a0,%d0 move.l -8(%a6),%a2 move.l -4(%a6),%a3 unlk %a6 rts .size DUPFFnew, .-DUPFFnew .align 2 .globl DUPFFfree .type DUPFFfree, @function DUPFFfree: link.w %a6,#0 unlk %a6 rts .size DUPFFfree, .-DUPFFfree .align 2 .globl DUPFFswap .type DUPFFswap, @function DUPFFswap: link.w %a6,#0 unlk %a6 rts .size DUPFFswap, .-DUPFFswap .align 2 .globl DUPFFcopy .type DUPFFcopy, @function DUPFFcopy: link.w %a6,#0 move.l 8(%a6),%a0 move.l %a0,%d0 unlk %a6 rts .size DUPFFcopy, .-DUPFFcopy .align 2 .globl DUPFFshift_add .type DUPFFshift_add, @function DUPFFshift_add: link.w %a6,#0 unlk %a6 rts .size DUPFFshift_add, .-DUPFFshift_add .section .rodata.str1.1,"aMS",@progbits,1 .LC0: .string "DUPFFexgcd called on degrees %d and %d\n" .text .align 2 .globl DUPFFexgcd .type DUPFFexgcd, @function DUPFFexgcd: link.w %a6,#-16 movm.l #0x3f3c,-(%sp) move.l 8(%a6),%a5 move.l 12(%a6),%d4 move.l 16(%a6),%a3 move.l 20(%a6),%d3 lea DUPFFdeg,%a4 lea printf,%a2 .align 2 .L11: move.l %d3,-(%sp) jbsr (%a4) move.l %d0,(%sp) move.l %a3,-(%sp) jbsr (%a4) move.l %d0,(%sp) pea .LC0 jbsr (%a2) move.l %a3,-(%sp) jbsr (%a4) move.l %d0,%d2 move.l %d3,(%sp) jbsr (%a4) lea (16,%sp),%sp cmp.l %d2,%d0 jble .L10 move.l %a5,%d0 move.l %a3,%d1 move.l %d4,%a5 move.l %d0,%d4 move.l %d3,%a3 move.l %d1,%d3 jbra .L11 .align 2 .L10: moveq.l #2,%d1 cmp.l %d2,%d1 jbne .L13 moveq.l #1,%d1 cmp.l %d0,%d1 jbeq .L12 .L13: jbsr abort .align 2 .L12: move.l 8(%a3),%a0 tst.l (%a0) jbne .L14 move.l %a3,%d1 jbra .L9 .align 2 .L14: lea DUPFFcopy,%a2 move.l %a3,-(%sp) jbsr (%a2) move.l %a0,%d5 move.l %d3,(%sp) jbsr (%a2) addq.l #4,%sp move.l %a0,-4(%a6) pea 1.w lea DUPFFnew,%a2 jbsr (%a2) move.l %a0,-8(%a6) move.l %a0,%a1 move.l 8(%a0),%a0 moveq.l #1,%d0 move.l %d0,(%a0) clr.l 4(%a1) pea 2.w jbsr (%a2) move.l %a0,-12(%a6) pea 1.w jbsr (%a2) move.l %a0,-16(%a6) pea 2.w jbsr (%a2) move.l %a0,%d7 move.l %a0,%a1 move.l 8(%a0),%a0 moveq.l #1,%d0 move.l %d0,(%a0) clr.l 4(%a1) lea (16,%sp),%sp .L17: move.l -4(%a6),-(%sp) jbsr (%a4) addq.l #4,%sp move.l %d0,%a2 tst.l %d0 jble .L26 move.l -4(%a6),%a1 move.l 8(%a1),%a0 move.l (%a0,%a2.l*4),-(%sp) pea 1.w jbsr FFmul addq.l #8,%sp move.l %d0,%d6 lea DUPFFshift_add,%a3 .align 2 .L20: move.l %d5,-(%sp) jbsr (%a4) addq.l #4,%sp move.l %d0,%d3 cmp.l %d0,%a2 jbgt .L27 move.l %d5,%a1 move.l 8(%a1),%a0 move.l %d6,-(%sp) move.l (%a0,%d3.l*4),-(%sp) jbsr FFmul addq.l #8,%sp moveq.l #2,%d2 sub.l %d0,%d2 sub.l %a2,%d3 move.l %d2,-(%sp) move.l %d3,-(%sp) move.l -4(%a6),-(%sp) move.l %d5,-(%sp) jbsr (%a3) lea (12,%sp),%sp move.l %d2,(%sp) move.l %d3,-(%sp) move.l -16(%a6),-(%sp) move.l -8(%a6),-(%sp) jbsr (%a3) lea (12,%sp),%sp move.l %d2,(%sp) move.l %d3,-(%sp) move.l %d7,-(%sp) move.l -12(%a6),-(%sp) jbsr (%a3) lea (16,%sp),%sp jbra .L20 .align 2 .L27: move.l -4(%a6),-(%sp) move.l %d5,-(%sp) jbsr DUPFFswap addq.w #4,%sp move.l -16(%a6),(%sp) move.l -8(%a6),-(%sp) jbsr DUPFFswap addq.w #4,%sp move.l %d7,(%sp) move.l -12(%a6),-(%sp) jbsr DUPFFswap addq.l #8,%sp jbra .L17 .align 2 .L26: tst.l %d0 jbne .L25 move.l -4(%a6),-(%sp) move.l %d5,-(%sp) lea DUPFFswap,%a2 jbsr (%a2) addq.w #4,%sp move.l -16(%a6),(%sp) move.l -8(%a6),-(%sp) jbsr (%a2) addq.w #4,%sp move.l %d7,(%sp) move.l -12(%a6),-(%sp) jbsr (%a2) addq.l #8,%sp .L25: move.l -16(%a6),-(%sp) lea DUPFFfree,%a2 jbsr (%a2) move.l %d7,(%sp) jbsr (%a2) move.l -4(%a6),(%sp) jbsr (%a2) addq.l #4,%sp move.l -8(%a6),(%a5) move.l %d4,%a0 move.l -12(%a6),(%a0) move.l %d5,%d1 .L9: move.l %d1,%a0 move.l %a0,%d0 movm.l -56(%a6),#0x3cfc unlk %a6 rts .size DUPFFexgcd, .-DUPFFexgcd .section .rodata.str1.1 .LC1: .string "calling DUPFFexgcd on degrees %d and %d\n" .text .align 2 .globl main .type main, @function main: link.w %a6,#-8 movm.l #0x38,-(%sp) pea 1.w lea DUPFFnew,%a2 jbsr (%a2) move.l %a0,%a4 move.l 8(%a0),%a0 moveq.l #1,%d0 move.l %d0,4(%a0) move.l %d0,4(%a4) pea 2.w jbsr (%a2) move.l %a0,%a2 move.l 8(%a0),%a0 moveq.l #1,%d0 move.l %d0,8(%a0) moveq.l #2,%d0 move.l %d0,4(%a2) lea DUPFFdeg,%a3 move.l %a2,-(%sp) jbsr (%a3) move.l %d0,(%sp) move.l %a4,-(%sp) jbsr (%a3) move.l %d0,(%sp) pea .LC1 jbsr printf move.l %a2,-(%sp) move.l %a4,-(%sp) pea -4(%a6) pea -8(%a6) jbsr DUPFFexgcd clr.l %d0 movm.l -20(%a6),#0x1c00 unlk %a6 rts .size main, .-main .ident "GCC: (GNU) 3.3.2"