+foreach my $i (@cipher) {
+ my $I = uc($i);
+ print OUT <<EOF;
+
+static void init_$i(void *ctx, const void *k, size_t ksz) {
+ ${i}_init(ctx, k, ksz);
+}
+static void eblk_$i(const void *ctx, const void *in, void *out) {
+ uint32 w[${I}_BLKSZ / 4];
+ BLKC_LOAD(${I}, w, in);
+ ${i}_eblk(ctx, w, w);
+ BLKC_STORE(${I}, out, w);
+}
+static void dblk_$i(const void *ctx, const void *in, void *out) {
+ uint32 w[${I}_BLKSZ / 4];
+ BLKC_LOAD(${I}, w, in);
+ ${i}_dblk(ctx, w, w);
+ BLKC_STORE(${I}, out, w);
+}
+static PRPClass prp_$i = {
+ "$i",
+ ${i}_keysz, sizeof(${i}_ctx), ${I}_BLKSZ,
+ init_$i, eblk_$i, dblk_$i
+};
+EOF
+}
+
+print OUT <<EOF;
+
+PRPClass *const prptab[] = {
+EOF
+foreach my $i (@cipher) {
+ print OUT " &prp_$i,\n";
+}
+print OUT " 0\n};\n";
+