@@ -427,7 +427,7 @@ bool rustsimplicity_0_7_output_null_datum(frameItem* dst, frameItem src, const t
427427 if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
428428 uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
429429 if (writeBit (dst , j < env -> tx -> output [i ].pnd .len )) {
430- if (writeBit (dst , OP_PUSHDATA4 < env -> tx -> output [i ].pnd .op [j ].code )) {
430+ if (writeBit (dst , OP_PUSHBYTES_64 < env -> tx -> output [i ].pnd .op [j ].code )) {
431431 skipBits (dst , 2 + 256 - 5 );
432432 if (writeBit (dst , OP_1 <= env -> tx -> output [i ].pnd .op [j ].code )) {
433433 switch (env -> tx -> output [i ].pnd .op [j ].code ) {
@@ -457,10 +457,19 @@ bool rustsimplicity_0_7_output_null_datum(frameItem* dst, frameItem src, const t
457457 }
458458 } else {
459459 switch (env -> tx -> output [i ].pnd .op [j ].code ) {
460- case OP_IMMEDIATE : writeBit (dst , 0 ); writeBit (dst , 0 ); break ;
461- case OP_PUSHDATA : writeBit (dst , 0 ); writeBit (dst , 1 ); break ;
462- case OP_PUSHDATA2 : writeBit (dst , 1 ); writeBit (dst , 0 ); break ;
463- case OP_PUSHDATA4 : writeBit (dst , 1 ); writeBit (dst , 1 ); break ;
460+ case OP_IMMEDIATE : writeBit (dst , 0 ); writeBit (dst , 0 ); break ;
461+ case OP_PUSHDATA : writeBit (dst , 0 ); writeBit (dst , 1 ); break ;
462+ case OP_PUSHDATA2 : writeBit (dst , 1 ); writeBit (dst , 0 ); break ;
463+ case OP_PUSHDATA4 : writeBit (dst , 1 ); writeBit (dst , 1 ); break ;
464+ case OP_PUSHBYTES_1 :
465+ case OP_PUSHBYTES_2 :
466+ case OP_PUSHBYTES_4 :
467+ case OP_PUSHBYTES_8 :
468+ case OP_PUSHBYTES_16 :
469+ case OP_PUSHBYTES_32 :
470+ case OP_PUSHBYTES_64 :
471+ /* These were historically part of OP_IMMEDIATE*/
472+ writeBit (dst , 0 ); writeBit (dst , 0 ); break ;
464473 default : SIMPLICITY_UNREACHABLE ;
465474 }
466475 writeHash (dst , & env -> tx -> output [i ].pnd .op [j ].dataHash );
@@ -474,6 +483,125 @@ bool rustsimplicity_0_7_output_null_datum(frameItem* dst, frameItem src, const t
474483 return true;
475484}
476485
486+ /* output_null_get_8 : TWO^32 * TWO^32 |- S (S TWO^64) */
487+ bool rustsimplicity_0_7_output_null_get_bytes_8 (frameItem * dst , frameItem src , const txEnv * env ) {
488+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
489+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
490+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
491+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
492+ OP_PUSHBYTES_8 == env -> tx -> output [i ].pnd .op [j ].code )) {
493+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 8 );
494+ } else {
495+ skipBits (dst , 64 );
496+ }
497+ } else {
498+ skipBits (dst , 1 + 64 );
499+ }
500+ return true;
501+ }
502+
503+ /* output_null_get_1 : TWO^32 * TWO^32 |- S (S TWO^8) */
504+ bool rustsimplicity_0_7_output_null_get_bytes_1 (frameItem * dst , frameItem src , const txEnv * env ) {
505+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
506+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
507+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
508+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
509+ OP_PUSHBYTES_1 == env -> tx -> output [i ].pnd .op [j ].code )) {
510+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 1 );
511+ } else {
512+ skipBits (dst , 8 );
513+ }
514+ } else {
515+ skipBits (dst , 1 + 8 );
516+ }
517+ return true;
518+ }
519+
520+ /* output_null_get_2 : TWO^32 * TWO^32 |- S (S TWO^16) */
521+ bool rustsimplicity_0_7_output_null_get_bytes_2 (frameItem * dst , frameItem src , const txEnv * env ) {
522+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
523+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
524+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
525+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
526+ OP_PUSHBYTES_2 == env -> tx -> output [i ].pnd .op [j ].code )) {
527+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 2 );
528+ } else {
529+ skipBits (dst , 16 );
530+ }
531+ } else {
532+ skipBits (dst , 1 + 16 );
533+ }
534+ return true;
535+ }
536+
537+ /* output_null_get_4 : TWO^32 * TWO^32 |- S (S TWO^32) */
538+ bool rustsimplicity_0_7_output_null_get_bytes_4 (frameItem * dst , frameItem src , const txEnv * env ) {
539+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
540+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
541+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
542+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
543+ OP_PUSHBYTES_4 == env -> tx -> output [i ].pnd .op [j ].code )) {
544+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 4 );
545+ } else {
546+ skipBits (dst , 32 );
547+ }
548+ } else {
549+ skipBits (dst , 1 + 32 );
550+ }
551+ return true;
552+ }
553+
554+ /* output_null_get_16 : TWO^32 * TWO^32 |- S (S TWO^128) */
555+ bool rustsimplicity_0_7_output_null_get_bytes_16 (frameItem * dst , frameItem src , const txEnv * env ) {
556+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
557+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
558+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
559+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
560+ OP_PUSHBYTES_16 == env -> tx -> output [i ].pnd .op [j ].code )) {
561+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 16 );
562+ } else {
563+ skipBits (dst , 128 );
564+ }
565+ } else {
566+ skipBits (dst , 1 + 128 );
567+ }
568+ return true;
569+ }
570+
571+ /* output_null_get_32 : TWO^32 * TWO^32 |- S (S TWO^256) */
572+ bool rustsimplicity_0_7_output_null_get_bytes_32 (frameItem * dst , frameItem src , const txEnv * env ) {
573+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
574+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
575+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
576+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
577+ OP_PUSHBYTES_32 == env -> tx -> output [i ].pnd .op [j ].code )) {
578+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 32 );
579+ } else {
580+ skipBits (dst , 256 );
581+ }
582+ } else {
583+ skipBits (dst , 1 + 256 );
584+ }
585+ return true;
586+ }
587+
588+ /* output_null_get_64 : TWO^32 * TWO^32 |- S (S TWO^512) */
589+ bool rustsimplicity_0_7_output_null_get_bytes_64 (frameItem * dst , frameItem src , const txEnv * env ) {
590+ uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
591+ if (writeBit (dst , i < env -> tx -> numOutputs && env -> tx -> output [i ].isNullData )) {
592+ uint_fast32_t j = rustsimplicity_0_7_read32 (& src );
593+ if (writeBit (dst , j < env -> tx -> output [i ].pnd .len &&
594+ OP_PUSHBYTES_64 == env -> tx -> output [i ].pnd .op [j ].code )) {
595+ write8s (dst , env -> tx -> output [i ].pnd .op [j ].data , 64 );
596+ } else {
597+ skipBits (dst , 512 );
598+ }
599+ } else {
600+ skipBits (dst , 1 + 512 );
601+ }
602+ return true;
603+ }
604+
477605/* output_is_fee : TWO^32 |- S TWO */
478606bool rustsimplicity_0_7_output_is_fee (frameItem * dst , frameItem src , const txEnv * env ) {
479607 uint_fast32_t i = rustsimplicity_0_7_read32 (& src );
0 commit comments