1#!/usr/bin/env perl 2 3$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; 4push(@INC, "${dir}.", "${dir}../crypto/perlasm"); 5require "x86asm.pl"; 6 7require "uplink-common.pl"; 8 9&asm_init($ARGV[0],"uplink-x86"); 10 11&external_label("OPENSSL_Uplink"); 12&public_label("OPENSSL_UplinkTable"); 13 14for ($i=1;$i<=$N;$i++) { 15&function_begin_B("_\$lazy${i}"); 16 &lea ("eax",&DWP(&label("OPENSSL_UplinkTable"))); 17 &push ($i); 18 &push ("eax"); 19 &call (&label("OPENSSL_Uplink")); 20 &pop ("eax"); 21 &add ("esp",4); 22 &jmp_ptr(&DWP(4*$i,"eax")); 23&function_end_B("_\$lazy${i}"); 24} 25 26&dataseg(); 27&align(4); 28&set_label("OPENSSL_UplinkTable"); 29&data_word($N); 30for ($i=1;$i<=$N;$i++) { 31&data_word(&label("_\$lazy${i}")); 32} 33&asm_finish(); 34