.file "arith-rand.c" .data .align 2 .type seed.0, @object .size seed.0, 4 seed.0: .long 47114711 .text .align 2 .globl simple_rand .type simple_rand, @function simple_rand: link.w %a6,#0 move.l (seed.0),%d0 muls.l #1103515245,%d0 add.l #12345,%d0 move.l %d0,(seed.0) lsr.l #8,%d0 unlk %a6 rts .size simple_rand, .-simple_rand .align 2 .globl random_bitstring .type random_bitstring, @function random_bitstring: link.w %a6,#0 movm.l #0x3e20,-(%sp) clr.l %d3 clr.l %d4 lea simple_rand,%a2 moveq.l #1,%d5 .align 2 .L3: jbsr (%a2) move.l %d0,%d2 move.l %d0,%d1 asr.l #1,%d1 move.l %d1,%d0 jblt .L11 .L6: moveq.l #-16,%d6 and.l %d6,%d0 sub.l %d0,%d1 add.l %d1,%d3 tst.l %d1 jbeq .L2 lsl.l %d1,%d4 moveq.l #1,%d0 and.l %d0,%d2 jbeq .L9 move.l %d5,%d0 lsl.l %d1,%d0 subq.l #1,%d0 or.l %d0,%d4 .L9: moveq.l #38,%d6 cmp.l %d3,%d6 jbcc .L3 jbra .L2 .align 2 .L11: moveq.l #15,%d0 add.l %d1,%d0 jbra .L6 .align 2 .L2: move.l %d4,%d0 movm.l -24(%a6),#0x47c unlk %a6 rts .size random_bitstring, .-random_bitstring .align 2 .globl main .type main, @function main: link.w %a6,#-4 movm.l #0x3f3c,-(%sp) lea random_bitstring,%a3 sub.l %a5,%a5 clr.w -2(%a6) move.w #999,%a2 sub.l %a4,%a4 clr.w -4(%a6) .align 2 .L49: jbsr (%a3) move.l %d0,%d3 jbsr (%a3) move.l %d0,%d2 .L18: jbne .L52 .L15: subq.l #1,%a2 tst.l %a2 jbge .L49 jbra .L53 .align 2 .L52: move.l %d3,%d0 divul.l %d2,%d1:%d0 cmp.l %d1,%d2 jbls .L46 muls.l %d2,%d0 add.l %d1,%d0 cmp.l %d0,%d3 jbne .L46 move.l %d3,%d0 add.l %d0,%d0 jbne .L30 moveq.l #-1,%d0 cmp.l %d2,%d0 jbeq .L15 .L30: move.l %d3,%d4 divsl.l %d2,%d0:%d4 move.l %d0,%d5 jblt .L54 .L33: move.l %d2,%d1 jblt .L55 .L34: cmp.l %d5,%d1 jbls .L46 muls.l %d2,%d4 add.l %d4,%d0 cmp.l %d0,%d3 jbne .L46 move.w %d3,%d7 move.w %d2,%d5 jbeq .L15 move.w %d3,%d0 and.l #0xFFFF,%d0 divu.w %d2,%d0 move.l %d0,%d1 swap %d1 cmp.w %d1,%d2 jbls .L46 mulu.w %d2,%d0 move.l %a5,%d4 move.w %d1,%d4 move.l %d4,%a5 add.l %a5,%d0 move.l %a4,%d1 move.w %d3,%d1 move.l %d1,%a4 cmp.l %d0,%a4 jbne .L46 move.w %d3,%d0 ext.l %d0 move.w %d2,%d4 ext.l %d4 divsl.l %d4,%d1:%d0 move.w %d0,%d6 move.w %d1,%a0 tst.l %a0 jblt .L56 .L40: move.l %d4,%d0 jblt .L57 .L41: and.l #0xFFFF,%d0 cmp.l %a0,%d0 jble .L46 muls.w %d5,%d6 add.w %d1,%d6 cmp.w %d6,%d7 jbne .L46 move.b %d3,%d6 move.b %d2,%d5 jbeq .L15 move.b %d3,-1(%a6) move.b %d2,-3(%a6) move.w -2(%a6),%d1 and.l #0xFFFF,%d1 divu.w -4(%a6),%d1 move.l %d1,%d4 swap %d4 cmp.b %d2,%d4 jbcc .L46 and.l #0xFF,%d1 clr.l %d0 move.b %d2,%d0 muls.l %d0,%d1 clr.l %d0 move.b %d4,%d0 add.l %d0,%d1 clr.l %d0 move.b %d3,%d0 cmp.l %d1,%d0 jbne .L46 move.b %d3,%d0 extb.l %d0 extb.l %d2 divsl.l %d2,%d1:%d0 move.b %d0,%d4 move.b %d1,%d3 extb.l %d3 jblt .L58 .L47: move.l %d2,%d0 jblt .L59 .L48: and.l #0xFF,%d0 cmp.l %d3,%d0 jble .L46 move.w %d4,%d0 muls.w %d5,%d0 add.b %d0,%d1 cmp.b %d1,%d6 jbeq .L15 jbra .L46 .align 2 .L59: neg.l %d0 jbra .L48 .align 2 .L58: neg.l %d3 jbra .L47 .align 2 .L57: neg.l %d0 jbra .L41 .align 2 .L56: move.l %a0,%d0 neg.l %d0 move.l %d0,%a0 jbra .L40 .align 2 .L55: neg.l %d1 jbra .L34 .align 2 .L54: neg.l %d5 jbra .L33 .align 2 .L46: jbsr abort .align 2 .L53: clr.l -(%sp) jbsr exit nop .size main, .-main .ident "GCC: (GNU) 3.3.2"