8 &function_begin($name,"");
19 &mov($r,&wparam(0)); # get r
20 &mov($a,&wparam(1)); # get a
21 &mov($b,&wparam(2)); # get b
22 &mov($num,&wparam(3)); # get num
23 &xor($c,$c); # clear carry
24 &and($num,0xfffffff8); # num / 8
26 &jz(&label("aw_finish"));
28 &set_label("aw_loop",0);
29 for ($i=0; $i<8; $i++)
33 &mov($tmp1,&DWP($i*4,$a,"",0)); # *a
34 &mov($tmp2,&DWP($i*4,$b,"",0)); # *b
40 &mov(&DWP($i*4,$r,"",0),$tmp1); # *r
48 &jnz(&label("aw_loop"));
50 &set_label("aw_finish",0);
51 &mov($num,&wparam(3)); # get num
53 &jz(&label("aw_end"));
55 for ($i=0; $i<7; $i++)
57 &comment("Tail Round $i");
58 &mov($tmp1,&DWP($i*4,$a,"",0)); # *a
59 &mov($tmp2,&DWP($i*4,$b,"",0));# *b
65 &dec($num) if ($i != 6);
66 &mov(&DWP($i*4,$r,"",0),$tmp1); # *a
67 &jz(&label("aw_end")) if ($i != 6);
69 &set_label("aw_end",0);
71 # &mov("eax",$c); # $c is "eax"