#!/usr/bin/env perl $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC, "${dir}.", "${dir}../crypto/perlasm"); require "x86asm.pl"; require "uplink-common.pl"; &asm_init($ARGV[0],"uplink-x86"); &external_label("OPENSSL_Uplink"); &public_label("OPENSSL_UplinkTable"); for ($i=1;$i<=$N;$i++) { &function_begin_B("_\$lazy${i}"); &lea ("eax",&DWP(&label("OPENSSL_UplinkTable"))); &push ("eax"); &push ($i); &call (&label("OPENSSL_Uplink")); &add ("esp",8); &pop ("eax"); &jmp_ptr(&DWP(4*$i,"eax")); &function_end_B("_\$lazy${i}"); } &dataseg(); &align(4); &set_label("OPENSSL_UplinkTable"); &data_word($N); for ($i=1;$i<=$N;$i++) { &data_word(&label("_\$lazy${i}")); } &asm_finish();