--- md5-586.pl-original	2011-06-28 17:03:59.000000000 -0700
+++ md5-586.pl	2011-06-28 17:32:14.000000000 -0700
@@ -11,7 +11,7 @@
 push(@INC,"${dir}","${dir}../../perlasm");
 require "x86asm.pl";
 
-&asm_init($ARGV[0],$0);
+&asm_init($ARGV[0],"md5_block_asm_data_order");
 
 $A="eax";
 $B="ebx";
@@ -30,6 +30,7 @@
  0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9,	# R3
  );
 
+&cfi_section(".debug_frame");
 &md5_block("md5_block_asm_data_order");
 &asm_finish();
 
@@ -178,18 +179,29 @@
 	# C	8
 	# D 	12
 
+	&cfi_start();
+	&fpo("(10, 6, 0, 5, 1, 0)");
 	&push("esi");
+	&cfi_def_offset("8");
+	&cfi_offset("-8", "esi");
 	 &push("edi");
+	&cfi_def_offset("12");
+	&cfi_offset("-12", "edi");
 	&mov($tmp1,	&wparam(0)); # edi
 	 &mov($X,	&wparam(1)); # esi
 	&mov($C,	&wparam(2));
 	 &push("ebp");
+	&cfi_def_offset("16");
+	&cfi_offset("-16", "ebp");
 	&shl($C,	6);
 	&push("ebx");
+	&cfi_def_offset("20");
+	&cfi_offset("-20", "ebx");
 	 &add($C,	$X); # offset we end at
 	&sub($C,	64);
 	 &mov($A,	&DWP( 0,$tmp1,"",0));
 	&push($C);	# Put on the TOS
+	&cfi_def_offset("24");
 	 &mov($B,	&DWP( 4,$tmp1,"",0));
 	&mov($C,	&DWP( 8,$tmp1,"",0));
 	 &mov($D,	&DWP(12,$tmp1,"",0));
@@ -297,10 +309,20 @@
 	 &jae(&label("start")) unless $normal;
 
 	&pop("eax"); # pop the temp variable off the stack
+	&cfi_def_offset("20");
 	 &pop("ebx");
+	&cfi_def_offset("16");
+	&cfi_restore("ebx");
 	&pop("ebp");
+	&cfi_def_offset("12");
+	&cfi_restore("ebp");
 	 &pop("edi");
+	&cfi_def_offset("8");
+	&cfi_restore("edi");
 	&pop("esi");
+	&cfi_def_offset("4");
+	&cfi_restore("esi");
+	&cfi_end();
 	 &ret();
 	&function_end_B($name);
 	}
