.file "920501-2.c" .globl __umoddi3 .text .align 2 .globl gcd_ll .type gcd_ll, @function gcd_ll: link.w %a6,#0 movm.l #0x3c20,-(%sp) move.l 8(%a6),%d4 move.l 12(%a6),%d5 move.l 16(%a6),%d2 move.l 20(%a6),%d3 .align 2 .L2: move.l %d5,%d0 move.l %d2,%d1 or.l %d3,%d1 jbeq .L1 lea __umoddi3,%a2 move.l %d3,-(%sp) move.l %d2,-(%sp) move.l %d5,-(%sp) move.l %d4,-(%sp) jbsr (%a2) lea (16,%sp),%sp move.l %d0,%d4 move.l %d1,%d5 move.l %d3,%d0 move.l %d4,%d1 or.l %d5,%d1 jbeq .L1 move.l %d5,-(%sp) move.l %d4,-(%sp) move.l %d3,-(%sp) move.l %d2,-(%sp) jbsr (%a2) lea (16,%sp),%sp move.l %d0,%d2 move.l %d1,%d3 jbra .L2 .align 2 .L1: movm.l -20(%a6),#0x43c unlk %a6 rts .size gcd_ll, .-gcd_ll .align 2 .globl powmod_ll .type powmod_ll, @function powmod_ll: link.w %a6,#0 movm.l #0x3f3c,-(%sp) move.l 8(%a6),%a2 move.l 12(%a6),%a3 move.l 20(%a6),%a4 move.l 24(%a6),%a5 clr.l %d0 moveq.l #1,%d1 tst.l 16(%a6) jbeq .L7 move.l 16(%a6),%d0 clr.l %d5 .align 2 .L13: lsr.l #1,%d0 addq.l #1,%d5 tst.l %d0 jbne .L13 move.l %a2,%d1 move.l %a3,%d2 subq.l #2,%d5 jbmi .L23 .align 2 .L19: move.l %d2,%d4 mulu.l %d2,%d3:%d4 move.l %d2,%d0 muls.l %d1,%d0 move.l %d3,%a0 lea (%a0,%d0.l*2),%a0 move.l %a0,%d3 move.l %a5,-(%sp) move.l %a4,-(%sp) move.l %d4,-(%sp) move.l %d3,-(%sp) jbsr __umoddi3 lea (16,%sp),%sp move.l %d1,%d2 move.l %d0,%d1 moveq.l #1,%d0 lsl.l %d5,%d0 and.l 16(%a6),%d0 jbeq .L16 move.l %a3,%d7 mulu.l %d2,%d6:%d7 move.l %a2,%d0 muls.l %d2,%d0 move.l %d0,%a0 add.l %d6,%a0 move.l %a3,%d0 muls.l %d0,%d1 move.l %a0,%d6 add.l %d1,%d6 move.l %a5,-(%sp) move.l %a4,-(%sp) move.l %d7,-(%sp) move.l %d6,-(%sp) jbsr __umoddi3 lea (16,%sp),%sp move.l %d1,%d2 move.l %d0,%d1 .L16: subq.l #1,%d5 jbpl .L19 .L23: move.l %d1,%d0 move.l %d2,%d1 .L7: movm.l -40(%a6),#0x3cfc unlk %a6 rts .size powmod_ll, .-powmod_ll .globl __udivdi3 .align 2 .globl facts .type facts, @function facts: link.w %a6,#-32 movm.l #0x3f3c,-(%sp) clr.l -24(%a6) clr.l -20(%a6) move.l 8(%a6),%a2 move.l 12(%a6),%a3 move.l #factab,-4(%a6) moveq.l #1,%d0 move.l %d0,-8(%a6) move.l 16(%a6),%d2 smi %d1 extb.l %d1 move.l %d1,%a4 move.l %d2,%a5 move.l %d0,-12(%a6) clr.l -16(%a6) move.l 20(%a6),%d6 smi %d5 extb.l %d5 move.l %d5,-32(%a6) move.l %d6,-28(%a6) move.l %d5,%d3 move.l %d6,%d4 moveq.l #1,%d7 .align 2 .L34: move.l %a3,-(%sp) move.l %a2,-(%sp) move.l 24(%a6),-(%sp) move.l -28(%a6),-(%sp) move.l -32(%a6),-(%sp) jbsr powmod_ll move.l %d0,-32(%a6) move.l %d1,-28(%a6) move.l %a4,%d0 move.l %a5,%d1 add.l %d1,-28(%a6) move.l -32(%a6),%d2 addx.l %d0,%d2 move.l %d2,-32(%a6) move.l %a3,-(%sp) move.l %a2,-(%sp) move.l 24(%a6),-(%sp) move.l %d4,-(%sp) move.l %d3,-(%sp) jbsr powmod_ll lea (40,%sp),%sp move.l %a3,-(%sp) move.l %a2,-(%sp) move.l 24(%a6),-(%sp) move.l %a4,%d5 add.l %a5,%d1 addx.l %d5,%d0 move.l %d1,-(%sp) move.l %d0,-(%sp) jbsr powmod_ll move.l %d0,%d3 move.l %d1,%d4 move.l %a4,%d6 add.l %a5,%d4 addx.l %d6,%d3 lea (20,%sp),%sp move.l -28(%a6),%d2 sub.l %d4,%d2 move.l -32(%a6),%d0 move.l -28(%a6),%d1 sub.l %d4,%d1 subx.l %d3,%d0 jbhi .L30 move.l %d4,%d2 sub.l -28(%a6),%d2 .L30: mulu.l -8(%a6),%d0:%d2 move.l %d0,-24(%a6) move.l %d2,-20(%a6) move.l %a3,-(%sp) move.l %a2,-(%sp) move.l -20(%a6),-(%sp) move.l -24(%a6),-(%sp) jbsr __umoddi3 lea (16,%sp),%sp move.l %d1,-8(%a6) cmp.l -12(%a6),%d7 jbeq .L36 .L27: addq.l #1,%d7 cmp.l #9999,%d7 jble .L34 jbra .L24 .align 2 .L36: addq.l #1,-16(%a6) move.l -16(%a6),%d1 add.l %d7,%d1 move.l %d1,-12(%a6) move.l %a3,-(%sp) move.l %a2,-(%sp) move.l -8(%a6),-(%sp) clr.l -(%sp) jbsr gcd_ll lea (16,%sp),%sp moveq.l #1,%d2 cmp.l %d0,%d2 jbeq .L27 move.l -4(%a6),%a0 addq.l #4,-4(%a6) move.l %d0,(%a0)+ move.l %d0,-(%sp) clr.l -(%sp) move.l %a3,-(%sp) move.l %a2,-(%sp) jbsr __udivdi3 lea (16,%sp),%sp move.l %d0,%a2 move.l %d1,%a3 clr.l %d5 moveq.l #1,%d6 sub.l %d6,%d1 subx.l %d5,%d0 jbne .L27 .L24: movm.l -72(%a6),#0x3cfc unlk %a6 rts .size facts, .-facts .globl __ashldi3 .align 2 .globl main .type main, @function main: link.w %a6,#0 pea 27.w pea 3.w pea -1.w move.l #134217727,-(%sp) clr.l -(%sp) jbsr facts lea (20,%sp),%sp moveq.l #7,%d0 cmp.l factab,%d0 jbne .L39 moveq.l #73,%d0 cmp.l factab+4,%d0 jbeq .L40 .L39: jbsr abort .align 2 .L40: cmp.l #262657,factab+8 jbne .L39 clr.l -(%sp) jbsr exit nop .size main, .-main .comm factab,40,2 .ident "GCC: (GNU) 3.3.2"