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"