Remove more unused assembly generation scripts.
authorjsing <jsing@openbsd.org>
Thu, 19 Jan 2023 04:51:31 +0000 (04:51 +0000)
committerjsing <jsing@openbsd.org>
Thu, 19 Jan 2023 04:51:31 +0000 (04:51 +0000)
lib/libcrypto/bn/asm/x86.pl [deleted file]
lib/libcrypto/bn/asm/x86/add.pl [deleted file]
lib/libcrypto/bn/asm/x86/comba.pl [deleted file]
lib/libcrypto/bn/asm/x86/div.pl [deleted file]
lib/libcrypto/bn/asm/x86/mul.pl [deleted file]
lib/libcrypto/bn/asm/x86/mul_add.pl [deleted file]
lib/libcrypto/bn/asm/x86/sqr.pl [deleted file]
lib/libcrypto/bn/asm/x86/sub.pl [deleted file]

diff --git a/lib/libcrypto/bn/asm/x86.pl b/lib/libcrypto/bn/asm/x86.pl
deleted file mode 100644 (file)
index 1bc4f1b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/local/bin/perl
-
-push(@INC,"perlasm","../../perlasm");
-require "x86asm.pl";
-
-require("x86/mul_add.pl");
-require("x86/mul.pl");
-require("x86/sqr.pl");
-require("x86/div.pl");
-require("x86/add.pl");
-require("x86/sub.pl");
-require("x86/comba.pl");
-
-&asm_init($ARGV[0],$0);
-
-&bn_mul_add_words("bn_mul_add_words");
-&bn_mul_words("bn_mul_words");
-&bn_sqr_words("bn_sqr_words");
-&bn_div_words("bn_div_words");
-&bn_add_words("bn_add_words");
-&bn_sub_words("bn_sub_words");
-&bn_mul_comba("bn_mul_comba8",8);
-&bn_mul_comba("bn_mul_comba4",4);
-&bn_sqr_comba("bn_sqr_comba8",8);
-&bn_sqr_comba("bn_sqr_comba4",4);
-
-&asm_finish();
-
diff --git a/lib/libcrypto/bn/asm/x86/add.pl b/lib/libcrypto/bn/asm/x86/add.pl
deleted file mode 100644 (file)
index 3bb0080..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub bn_add_words
-       {
-       local($name)=@_;
-
-       &function_begin($name,"");
-
-       &comment("");
-       $a="esi";
-       $b="edi";
-       $c="eax";
-       $r="ebx";
-       $tmp1="ecx";
-       $tmp2="edx";
-       $num="ebp";
-
-       &mov($r,&wparam(0));    # get r
-        &mov($a,&wparam(1));   # get a
-       &mov($b,&wparam(2));    # get b
-        &mov($num,&wparam(3)); # get num
-       &xor($c,$c);            # clear carry
-        &and($num,0xfffffff8); # num / 8
-
-       &jz(&label("aw_finish"));
-
-       &set_label("aw_loop",0);
-       for ($i=0; $i<8; $i++)
-               {
-               &comment("Round $i");
-
-               &mov($tmp1,&DWP($i*4,$a,"",0));         # *a
-                &mov($tmp2,&DWP($i*4,$b,"",0));        # *b
-               &add($tmp1,$c);
-                &mov($c,0);
-               &adc($c,$c);
-                &add($tmp1,$tmp2);
-               &adc($c,0);
-                &mov(&DWP($i*4,$r,"",0),$tmp1);        # *r
-               }
-
-       &comment("");
-       &add($a,32);
-        &add($b,32);
-       &add($r,32);
-        &sub($num,8);
-       &jnz(&label("aw_loop"));
-
-       &set_label("aw_finish",0);
-       &mov($num,&wparam(3));  # get num
-       &and($num,7);
-        &jz(&label("aw_end"));
-
-       for ($i=0; $i<7; $i++)
-               {
-               &comment("Tail Round $i");
-               &mov($tmp1,&DWP($i*4,$a,"",0)); # *a
-                &mov($tmp2,&DWP($i*4,$b,"",0));# *b
-               &add($tmp1,$c);
-                &mov($c,0);
-               &adc($c,$c);
-                &add($tmp1,$tmp2);
-               &adc($c,0);
-                &dec($num) if ($i != 6);
-               &mov(&DWP($i*4,$r,"",0),$tmp1); # *a
-                &jz(&label("aw_end")) if ($i != 6);
-               }
-       &set_label("aw_end",0);
-
-#      &mov("eax",$c);         # $c is "eax"
-
-       &function_end($name);
-       }
-
-1;
diff --git a/lib/libcrypto/bn/asm/x86/comba.pl b/lib/libcrypto/bn/asm/x86/comba.pl
deleted file mode 100644 (file)
index 7624129..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub mul_add_c
-       {
-       local($a,$ai,$b,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_;
-
-       # pos == -1 if eax and edx are pre-loaded, 0 to load from next
-       # words, and 1 if load return value
-
-       &comment("mul a[$ai]*b[$bi]");
-
-       # "eax" and "edx" will always be pre-loaded.
-       # &mov("eax",&DWP($ai*4,$a,"",0)) ;
-       # &mov("edx",&DWP($bi*4,$b,"",0));
-
-       &mul("edx");
-       &add($c0,"eax");
-        &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0;        # load next a
-        &mov("eax",&wparam(0)) if $pos > 0;                    # load r[]
-        ###
-       &adc($c1,"edx");
-        &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0;        # load next b
-        &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1;        # load next b
-        ###
-       &adc($c2,0);
-        # is pos > 1, it means it is the last loop 
-        &mov(&DWP($i*4,"eax","",0),$c0) if $pos > 0;           # save r[];
-       &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1;         # load next a
-       }
-
-sub sqr_add_c
-       {
-       local($r,$a,$ai,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_;
-
-       # pos == -1 if eax and edx are pre-loaded, 0 to load from next
-       # words, and 1 if load return value
-
-       &comment("sqr a[$ai]*a[$bi]");
-
-       # "eax" and "edx" will always be pre-loaded.
-       # &mov("eax",&DWP($ai*4,$a,"",0)) ;
-       # &mov("edx",&DWP($bi*4,$b,"",0));
-
-       if ($ai == $bi)
-               { &mul("eax");}
-       else
-               { &mul("edx");}
-       &add($c0,"eax");
-        &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0;        # load next a
-        ###
-       &adc($c1,"edx");
-        &mov("edx",&DWP(($nb)*4,$a,"",0)) if ($pos == 1) && ($na != $nb);
-        ###
-       &adc($c2,0);
-        # is pos > 1, it means it is the last loop 
-        &mov(&DWP($i*4,$r,"",0),$c0) if $pos > 0;              # save r[];
-       &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1;         # load next b
-       }
-
-sub sqr_add_c2
-       {
-       local($r,$a,$ai,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_;
-
-       # pos == -1 if eax and edx are pre-loaded, 0 to load from next
-       # words, and 1 if load return value
-
-       &comment("sqr a[$ai]*a[$bi]");
-
-       # "eax" and "edx" will always be pre-loaded.
-       # &mov("eax",&DWP($ai*4,$a,"",0)) ;
-       # &mov("edx",&DWP($bi*4,$a,"",0));
-
-       if ($ai == $bi)
-               { &mul("eax");}
-       else
-               { &mul("edx");}
-       &add("eax","eax");
-        ###
-       &adc("edx","edx");
-        ###
-       &adc($c2,0);
-        &add($c0,"eax");
-       &adc($c1,"edx");
-        &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0;        # load next a
-        &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1;        # load next b
-       &adc($c2,0);
-       &mov(&DWP($i*4,$r,"",0),$c0) if $pos > 0;               # save r[];
-        &mov("edx",&DWP(($nb)*4,$a,"",0)) if ($pos <= 1) && ($na != $nb);
-        ###
-       }
-
-sub bn_mul_comba
-       {
-       local($name,$num)=@_;
-       local($a,$b,$c0,$c1,$c2);
-       local($i,$as,$ae,$bs,$be,$ai,$bi);
-       local($tot,$end);
-
-       &function_begin_B($name,"");
-
-       $c0="ebx";
-       $c1="ecx";
-       $c2="ebp";
-       $a="esi";
-       $b="edi";
-       
-       $as=0;
-       $ae=0;
-       $bs=0;
-       $be=0;
-       $tot=$num+$num-1;
-
-       &push("esi");
-        &mov($a,&wparam(1));
-       &push("edi");
-        &mov($b,&wparam(2));
-       &push("ebp");
-        &push("ebx");
-
-       &xor($c0,$c0);
-        &mov("eax",&DWP(0,$a,"",0));   # load the first word 
-       &xor($c1,$c1);
-        &mov("edx",&DWP(0,$b,"",0));   # load the first second 
-
-       for ($i=0; $i<$tot; $i++)
-               {
-               $ai=$as;
-               $bi=$bs;
-               $end=$be+1;
-
-               &comment("################## Calculate word $i"); 
-
-               for ($j=$bs; $j<$end; $j++)
-                       {
-                       &xor($c2,$c2) if ($j == $bs);
-                       if (($j+1) == $end)
-                               {
-                               $v=1;
-                               $v=2 if (($i+1) == $tot);
-                               }
-                       else
-                               { $v=0; }
-                       if (($j+1) != $end)
-                               {
-                               $na=($ai-1);
-                               $nb=($bi+1);
-                               }
-                       else
-                               {
-                               $na=$as+($i < ($num-1));
-                               $nb=$bs+($i >= ($num-1));
-                               }
-#printf STDERR "[$ai,$bi] -> [$na,$nb]\n";
-                       &mul_add_c($a,$ai,$b,$bi,$c0,$c1,$c2,$v,$i,$na,$nb);
-                       if ($v)
-                               {
-                               &comment("saved r[$i]");
-                               # &mov("eax",&wparam(0));
-                               # &mov(&DWP($i*4,"eax","",0),$c0);
-                               ($c0,$c1,$c2)=($c1,$c2,$c0);
-                               }
-                       $ai--;
-                       $bi++;
-                       }
-               $as++ if ($i < ($num-1));
-               $ae++ if ($i >= ($num-1));
-
-               $bs++ if ($i >= ($num-1));
-               $be++ if ($i < ($num-1));
-               }
-       &comment("save r[$i]");
-       # &mov("eax",&wparam(0));
-       &mov(&DWP($i*4,"eax","",0),$c0);
-
-       &pop("ebx");
-       &pop("ebp");
-       &pop("edi");
-       &pop("esi");
-       &ret();
-       &function_end_B($name);
-       }
-
-sub bn_sqr_comba
-       {
-       local($name,$num)=@_;
-       local($r,$a,$c0,$c1,$c2)=@_;
-       local($i,$as,$ae,$bs,$be,$ai,$bi);
-       local($b,$tot,$end,$half);
-
-       &function_begin_B($name,"");
-
-       $c0="ebx";
-       $c1="ecx";
-       $c2="ebp";
-       $a="esi";
-       $r="edi";
-
-       &push("esi");
-        &push("edi");
-       &push("ebp");
-        &push("ebx");
-       &mov($r,&wparam(0));
-        &mov($a,&wparam(1));
-       &xor($c0,$c0);
-        &xor($c1,$c1);
-       &mov("eax",&DWP(0,$a,"",0)); # load the first word
-
-       $as=0;
-       $ae=0;
-       $bs=0;
-       $be=0;
-       $tot=$num+$num-1;
-
-       for ($i=0; $i<$tot; $i++)
-               {
-               $ai=$as;
-               $bi=$bs;
-               $end=$be+1;
-
-               &comment("############### Calculate word $i");
-               for ($j=$bs; $j<$end; $j++)
-                       {
-                       &xor($c2,$c2) if ($j == $bs);
-                       if (($ai-1) < ($bi+1))
-                               {
-                               $v=1;
-                               $v=2 if ($i+1) == $tot;
-                               }
-                       else
-                               { $v=0; }
-                       if (!$v)
-                               {
-                               $na=$ai-1;
-                               $nb=$bi+1;
-                               }
-                       else
-                               {
-                               $na=$as+($i < ($num-1));
-                               $nb=$bs+($i >= ($num-1));
-                               }
-                       if ($ai == $bi)
-                               {
-                               &sqr_add_c($r,$a,$ai,$bi,
-                                       $c0,$c1,$c2,$v,$i,$na,$nb);
-                               }
-                       else
-                               {
-                               &sqr_add_c2($r,$a,$ai,$bi,
-                                       $c0,$c1,$c2,$v,$i,$na,$nb);
-                               }
-                       if ($v)
-                               {
-                               &comment("saved r[$i]");
-                               #&mov(&DWP($i*4,$r,"",0),$c0);
-                               ($c0,$c1,$c2)=($c1,$c2,$c0);
-                               last;
-                               }
-                       $ai--;
-                       $bi++;
-                       }
-               $as++ if ($i < ($num-1));
-               $ae++ if ($i >= ($num-1));
-
-               $bs++ if ($i >= ($num-1));
-               $be++ if ($i < ($num-1));
-               }
-       &mov(&DWP($i*4,$r,"",0),$c0);
-       &pop("ebx");
-       &pop("ebp");
-       &pop("edi");
-       &pop("esi");
-       &ret();
-       &function_end_B($name);
-       }
-
-1;
diff --git a/lib/libcrypto/bn/asm/x86/div.pl b/lib/libcrypto/bn/asm/x86/div.pl
deleted file mode 100644 (file)
index e771eda..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub bn_div_words
-       {
-       local($name)=@_;
-
-       &function_begin($name,"");
-       &mov("edx",&wparam(0)); #
-       &mov("eax",&wparam(1)); #
-       &mov("ebx",&wparam(2)); #
-       &div("ebx");
-       &function_end($name);
-       }
-1;
diff --git a/lib/libcrypto/bn/asm/x86/mul.pl b/lib/libcrypto/bn/asm/x86/mul.pl
deleted file mode 100644 (file)
index 92b5542..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub bn_mul_words
-       {
-       local($name)=@_;
-
-       &function_begin($name,"");
-
-       &comment("");
-       $Low="eax";
-       $High="edx";
-       $a="ebx";
-       $w="ecx";
-       $r="edi";
-       $c="esi";
-       $num="ebp";
-
-       &xor($c,$c);            # clear carry
-       &mov($r,&wparam(0));    #
-       &mov($a,&wparam(1));    #
-       &mov($num,&wparam(2));  #
-       &mov($w,&wparam(3));    #
-
-       &and($num,0xfffffff8);  # num / 8
-       &jz(&label("mw_finish"));
-
-       &set_label("mw_loop",0);
-       for ($i=0; $i<32; $i+=4)
-               {
-               &comment("Round $i");
-
-                &mov("eax",&DWP($i,$a,"",0));  # *a
-               &mul($w);                       # *a * w
-               &add("eax",$c);                 # L(t)+=c
-                # XXX
-
-               &adc("edx",0);                  # H(t)+=carry
-                &mov(&DWP($i,$r,"",0),"eax");  # *r= L(t);
-
-               &mov($c,"edx");                 # c=  H(t);
-               }
-
-       &comment("");
-       &add($a,32);
-       &add($r,32);
-       &sub($num,8);
-       &jz(&label("mw_finish"));
-       &jmp(&label("mw_loop"));
-
-       &set_label("mw_finish",0);
-       &mov($num,&wparam(2));  # get num
-       &and($num,7);
-       &jnz(&label("mw_finish2"));
-       &jmp(&label("mw_end"));
-
-       &set_label("mw_finish2",1);
-       for ($i=0; $i<7; $i++)
-               {
-               &comment("Tail Round $i");
-                &mov("eax",&DWP($i*4,$a,"",0));# *a
-               &mul($w);                       # *a * w
-               &add("eax",$c);                 # L(t)+=c
-                # XXX
-               &adc("edx",0);                  # H(t)+=carry
-                &mov(&DWP($i*4,$r,"",0),"eax");# *r= L(t);
-               &mov($c,"edx");                 # c=  H(t);
-                &dec($num) if ($i != 7-1);
-               &jz(&label("mw_end")) if ($i != 7-1);
-               }
-       &set_label("mw_end",0);
-       &mov("eax",$c);
-
-       &function_end($name);
-       }
-
-1;
diff --git a/lib/libcrypto/bn/asm/x86/mul_add.pl b/lib/libcrypto/bn/asm/x86/mul_add.pl
deleted file mode 100644 (file)
index 9803dbd..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub bn_mul_add_words
-       {
-       local($name)=@_;
-
-       &function_begin($name,"");
-
-       &comment("");
-       $Low="eax";
-       $High="edx";
-       $a="ebx";
-       $w="ebp";
-       $r="edi";
-       $c="esi";
-
-       &xor($c,$c);            # clear carry
-       &mov($r,&wparam(0));    #
-
-       &mov("ecx",&wparam(2)); #
-       &mov($a,&wparam(1));    #
-
-       &and("ecx",0xfffffff8); # num / 8
-       &mov($w,&wparam(3));    #
-
-       &push("ecx");           # Up the stack for a tmp variable
-
-       &jz(&label("maw_finish"));
-
-       &set_label("maw_loop",0);
-
-       &mov(&swtmp(0),"ecx");  #
-
-       for ($i=0; $i<32; $i+=4)
-               {
-               &comment("Round $i");
-
-                &mov("eax",&DWP($i,$a,"",0));  # *a
-               &mul($w);                       # *a * w
-               &add("eax",$c);         # L(t)+= *r
-                &mov($c,&DWP($i,$r,"",0));     # L(t)+= *r
-               &adc("edx",0);                  # H(t)+=carry
-                &add("eax",$c);                # L(t)+=c
-               &adc("edx",0);                  # H(t)+=carry
-                &mov(&DWP($i,$r,"",0),"eax");  # *r= L(t);
-               &mov($c,"edx");                 # c=  H(t);
-               }
-
-       &comment("");
-       &mov("ecx",&swtmp(0));  #
-       &add($a,32);
-       &add($r,32);
-       &sub("ecx",8);
-       &jnz(&label("maw_loop"));
-
-       &set_label("maw_finish",0);
-       &mov("ecx",&wparam(2)); # get num
-       &and("ecx",7);
-       &jnz(&label("maw_finish2"));    # helps branch prediction
-       &jmp(&label("maw_end"));
-
-       &set_label("maw_finish2",1);
-       for ($i=0; $i<7; $i++)
-               {
-               &comment("Tail Round $i");
-                &mov("eax",&DWP($i*4,$a,"",0));# *a
-               &mul($w);                       # *a * w
-               &add("eax",$c);                 # L(t)+=c
-                &mov($c,&DWP($i*4,$r,"",0));   # L(t)+= *r
-               &adc("edx",0);                  # H(t)+=carry
-                &add("eax",$c);
-               &adc("edx",0);                  # H(t)+=carry
-                &dec("ecx") if ($i != 7-1);
-               &mov(&DWP($i*4,$r,"",0),"eax"); # *r= L(t);
-                &mov($c,"edx");                        # c=  H(t);
-               &jz(&label("maw_end")) if ($i != 7-1);
-               }
-       &set_label("maw_end",0);
-       &mov("eax",$c);
-
-       &pop("ecx");    # clear variable from
-
-       &function_end($name);
-       }
-
-1;
diff --git a/lib/libcrypto/bn/asm/x86/sqr.pl b/lib/libcrypto/bn/asm/x86/sqr.pl
deleted file mode 100644 (file)
index 6cf75a7..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub bn_sqr_words
-       {
-       local($name)=@_;
-
-       &function_begin($name,"");
-
-       &comment("");
-       $r="esi";
-       $a="edi";
-       $num="ebx";
-
-       &mov($r,&wparam(0));    #
-       &mov($a,&wparam(1));    #
-       &mov($num,&wparam(2));  #
-
-       &and($num,0xfffffff8);  # num / 8
-       &jz(&label("sw_finish"));
-
-       &set_label("sw_loop",0);
-       for ($i=0; $i<32; $i+=4)
-               {
-               &comment("Round $i");
-               &mov("eax",&DWP($i,$a,"",0));   # *a
-                # XXX
-               &mul("eax");                    # *a * *a
-               &mov(&DWP($i*2,$r,"",0),"eax"); #
-                &mov(&DWP($i*2+4,$r,"",0),"edx");#
-               }
-
-       &comment("");
-       &add($a,32);
-       &add($r,64);
-       &sub($num,8);
-       &jnz(&label("sw_loop"));
-
-       &set_label("sw_finish",0);
-       &mov($num,&wparam(2));  # get num
-       &and($num,7);
-       &jz(&label("sw_end"));
-
-       for ($i=0; $i<7; $i++)
-               {
-               &comment("Tail Round $i");
-               &mov("eax",&DWP($i*4,$a,"",0)); # *a
-                # XXX
-               &mul("eax");                    # *a * *a
-               &mov(&DWP($i*8,$r,"",0),"eax"); #
-                &dec($num) if ($i != 7-1);
-               &mov(&DWP($i*8+4,$r,"",0),"edx");
-                &jz(&label("sw_end")) if ($i != 7-1);
-               }
-       &set_label("sw_end",0);
-
-       &function_end($name);
-       }
-
-1;
diff --git a/lib/libcrypto/bn/asm/x86/sub.pl b/lib/libcrypto/bn/asm/x86/sub.pl
deleted file mode 100644 (file)
index 0c5364c..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/local/bin/perl
-# x86 assembler
-
-sub bn_sub_words
-       {
-       local($name)=@_;
-
-       &function_begin($name,"");
-
-       &comment("");
-       $a="esi";
-       $b="edi";
-       $c="eax";
-       $r="ebx";
-       $tmp1="ecx";
-       $tmp2="edx";
-       $num="ebp";
-
-       &mov($r,&wparam(0));    # get r
-        &mov($a,&wparam(1));   # get a
-       &mov($b,&wparam(2));    # get b
-        &mov($num,&wparam(3)); # get num
-       &xor($c,$c);            # clear carry
-        &and($num,0xfffffff8); # num / 8
-
-       &jz(&label("aw_finish"));
-
-       &set_label("aw_loop",0);
-       for ($i=0; $i<8; $i++)
-               {
-               &comment("Round $i");
-
-               &mov($tmp1,&DWP($i*4,$a,"",0));         # *a
-                &mov($tmp2,&DWP($i*4,$b,"",0));        # *b
-               &sub($tmp1,$c);
-                &mov($c,0);
-               &adc($c,$c);
-                &sub($tmp1,$tmp2);
-               &adc($c,0);
-                &mov(&DWP($i*4,$r,"",0),$tmp1);        # *r
-               }
-
-       &comment("");
-       &add($a,32);
-        &add($b,32);
-       &add($r,32);
-        &sub($num,8);
-       &jnz(&label("aw_loop"));
-
-       &set_label("aw_finish",0);
-       &mov($num,&wparam(3));  # get num
-       &and($num,7);
-        &jz(&label("aw_end"));
-
-       for ($i=0; $i<7; $i++)
-               {
-               &comment("Tail Round $i");
-               &mov($tmp1,&DWP($i*4,$a,"",0)); # *a
-                &mov($tmp2,&DWP($i*4,$b,"",0));# *b
-               &sub($tmp1,$c);
-                &mov($c,0);
-               &adc($c,$c);
-                &sub($tmp1,$tmp2);
-               &adc($c,0);
-                &dec($num) if ($i != 6);
-               &mov(&DWP($i*4,$r,"",0),$tmp1); # *a
-                &jz(&label("aw_end")) if ($i != 6);
-               }
-       &set_label("aw_end",0);
-
-#      &mov("eax",$c);         # $c is "eax"
-
-       &function_end($name);
-       }
-
-1;