Submission 78a88b53...

ChallengeBrainFuck interpreter
Submitterzac.creditmint.eth
Submitted at2018-54-30
Gas used68798
/**
 * This file is part of the 1st Solidity Gas Golfing Contest.
 *
 * This work is licensed under Creative Commons Attribution ShareAlike 3.0.
 * https://creativecommons.org/licenses/by-sa/3.0/
 */

pragma solidity ^0.4.23;

contract BrainFuck {
    /**
     * @dev Executes a BrainFuck program, as described at https://en.wikipedia.org/wiki/Brainfuck.
     *
     * Memory cells, input, and output values are all expected to be 8 bit
     * integers. Incrementing past 255 should overflow to 0, and decrementing
     * below 0 should overflow to 255.
     *
     * Programs and input streams may be of any length. The memory tape starts
     * at cell 0, and will never be moved below 0 or above 1023. No program will
     * output more than 1024 values.
     *
     * @return The program's output stream. Should be exactly the length of the
     *          number of outputs produced by the program.
     */
    function execute(bytes, bytes) external view returns(bytes) {
        // Here's a funny thing. One of the interesting idiosyncrasies of the EVM is how
        // it handles jump instructions. It takes the jump destination from the stack, as opposed to
        // most languages, where jump destinations are hardcoded defined at compile time instead of runtime.
        // This allows for interesting shenanigans! Like, for example, using a lookup table to alter the program flow :)
        // All things considered, I think this turned out rather well.
        // The program runs in two phases. The first is compiles the Brianfuck into an intermediate-level
        // language I like to call interprative Brainfuck, wich associated optimizations. The second phase
        // runs the program.
        // Well, that's about it. I feel like annotating the code with any more comments would be against the
        // spirit of this category. It is, after all, called BrainFuck for a reason.
        assembly {
                0x24 calldataload has_data jumpi
                mstore(0x00, 0x20)
                mstore(0x20, 0x00)
                mstore(0x40, 0x00)
                return(0x00, 0x60)
                has_data:

                mstore(0x40, 0x60)
                mstore(0x00, 0x140)
                mstore(0x7c0, 0x20)
                mstore(0x780, 0x40)
                mstore(0x560, 0x60)
                mstore(0x5a0, 0x80)
                mstore(0x5c0, 0xa0)
                mstore(0x580, 0xc0)
                mstore(0xb60, 0xe0)
                mstore(0xba0, 0x100)

                mstore(0x1000, prevaricate)
                mstore(0x1020, prepare_to_be_consumed_by_hubris)
                mstore(0x1040, prepare_to_observe_a_fleeting_moment_of_self_reflection)
                mstore(0x1060, prepare_to_live_vicariously_through_the_deeds_of_others)
                mstore(0x1080, prepare_to_deflect_accountability)
                mstore(0x10a0, prepare_to_fulminate_on_twitter)
                mstore(0x10c0, prepare_to_consult_the_runes)
                mstore(0x10e0, prepare_to_cut_corners_and_overextend)
                mstore(0x1100, prepare_to_backpeddle_and_blather_incoherently)
                mstore(0x1120, prepare_to_strike_slightly_more_sensible_faustian_bargain)
                mstore(0x1140, prepare_to_prepare_for_act_two)

                mstore(0x1160, prepare_to_be_consumed_by_hubris_then_prevaricate)
                mstore(0x1180, prepare_to_be_consumed_by_hubris_twice)
                mstore(0x11c0, prepare_to_be_consumed_by_hubris_then_live_vicariously_through_the_deeds_of_others)
                mstore(0x11e0, prepare_to_be_consumed_by_hubris_then_deflect_accountability)
                mstore(0x1200, prepare_to_be_consumed_by_hubris_then_fulminate_on_twitter)
                mstore(0x1220, prepare_to_be_consumed_by_hubris_then_consult_the_runes)
                mstore(0x1240, prepare_to_be_consumed_by_hubris_then_cut_corners_and_overextend)
                mstore(0x1260, prepare_to_be_consumed_by_hubris_then_backpeddle_and_blather_incoherently)
                mstore(0x1280, prepare_to_be_consumed_by_hubris_then_strike_faustian_bargain)
                mstore(0x12a0, prepare_to_be_consumed_by_hubris_then_prepare_for_act_two)

                mstore(0x12c0, prepare_to_be_consumed_by_hubris_many_then_prevaricate)
                mstore(0x12e0, prepare_to_be_consumed_by_hubris_many_again)
                mstore(0x1320, prepare_to_be_consumed_by_hubris_many_then_live_vicariously_through_the_deeds_of_others)
                mstore(0x1340, prepare_to_be_consumed_by_hubris_many_then_deflect_accountability)
                mstore(0x1360, prepare_to_be_consumed_by_hubris_many_then_fulminate_on_twitter)
                mstore(0x1380, prepare_to_be_consumed_by_hubris_many_then_consult_the_runes)
                mstore(0x13a0, prepare_to_be_consumed_by_hubris_many_then_cut_corners_and_overextend)
                mstore(0x13c0, prepare_to_be_consumed_by_hubris_many_then_backpeddle_and_blather_incoherently)
                mstore(0x13e0, prepare_to_be_consumed_by_hubris_many_then_strike_faustian_bargain)
                mstore(0x1400, prepare_to_be_consumed_by_hubris_many_then_prepare_for_act_two)

                mstore(0x1420, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_prevaricate)
                mstore(0x1460, prepare_to_observe_a_fleeting_moment_of_self_reflection_twice)
                mstore(0x1480, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_live_vicariously_through_the_deeds_of_others)
                mstore(0x14a0, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_deflect_accountability)
                mstore(0x14c0, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_fulminate_on_twitter)
                mstore(0x14e0, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_consult_the_runes)
                mstore(0x1500, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_cut_corners_and_overextend)
                mstore(0x1520, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_backpeddle_and_blather_incoherently)
                mstore(0x1540, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_strike_faustian_bargain)
                mstore(0x1560, prepare_to_observe_a_fleeting_moment_of_self_reflection_then_prepare_for_act_two)

                mstore(0x1580, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_prevaricate)
                mstore(0x15c0, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_again)
                mstore(0x15e0, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_live_vicariously_through_the_deeds_of_others)
                mstore(0x1600, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_deflect_accountability)
                mstore(0x1620, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_fulminate_on_twitter)
                mstore(0x1640, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_consult_the_runes)
                mstore(0x1660, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_cut_corners_and_overextend)
                mstore(0x1680, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_backpeddle_and_blather_incoherently)
                mstore(0x16a0, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_strike_faustian_bargain)
                mstore(0x16c0, prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_prepare_for_act_two)

                mstore(0x16e0, prepare_to_live_vicariously_through_the_deeds_of_others_then_prevaricate)
                mstore(0x1700, prepare_to_live_vicariously_through_the_deeds_of_others_then_be_consumed_by_hubris)
                mstore(0x1720, prepare_to_live_vicariously_through_the_deeds_of_others_then_observe_a_fleeting_moment_of_self_reflection)
                mstore(0x1740, prepare_to_live_vicariously_through_the_deeds_of_others_twice)
                mstore(0x1780, prepare_to_live_vicariously_through_the_deeds_of_others_then_fulminate_on_twitter)
                mstore(0x17a0, prepare_to_live_vicariously_through_the_deeds_of_others_then_consult_the_runes)
                mstore(0x17c0, prepare_to_live_vicariously_through_the_deeds_of_others_then_cut_corners_and_overextend)
                mstore(0x17e0, prepare_to_live_vicariously_through_the_deeds_of_others_then_backpeddle_and_blather_incoherently)
                mstore(0x1800, prepare_to_live_vicariously_through_the_deeds_of_others_then_strike_faustian_bargain)
                mstore(0x1820, prepare_to_live_vicariously_through_the_deeds_of_others_then_prepare_for_act_two)

                mstore(0x1840, prepare_to_deflect_accountability_then_prevaricate)
                mstore(0x1860, prepare_to_deflect_accountability_then_be_consumed_by_hubris)
                mstore(0x1880, prepare_to_deflect_accountability_then_observe_a_fleeting_moment_of_self_reflection)
                mstore(0x18c0, prepare_to_deflect_accountability_twice)
                mstore(0x18e0, prepare_to_deflect_accountability_then_fulminate_on_twitter)
                mstore(0x1900, prepare_to_deflect_accountability_then_consult_the_runes)
                mstore(0x1920, prepare_to_deflect_accountability_then_cut_corners_and_overextend)
                mstore(0x1940, prepare_to_deflect_accountability_then_backpeddle_and_blather_incoherently)
                mstore(0x1960, prepare_to_deflect_accountability_then_strike_faustian_bargain)
                mstore(0x1980, prepare_to_deflect_accountability_then_prepare_for_act_two)

                mstore(0x19a0, prepare_to_fulminate_on_twitter_then_prevaricate)
                mstore(0x19c0, prepare_to_fulminate_on_twitter_then_be_consumed_by_hubris)
                mstore(0x19e0, prepare_to_fulminate_on_twitter_then_observe_a_fleeting_moment_of_self_reflection)
                mstore(0x1a00, prepare_to_fulminate_on_twitter_then_live_vicariously_through_the_deeds_of_others)
                mstore(0x1a20, prepare_to_fulminate_on_twitter_then_deflect_accountability)
                mstore(0x1a40, prepare_to_fulminate_on_twitter_twice)
                mstore(0x1a60, prepare_to_fulminate_on_twitter_then_consult_the_runes)
                mstore(0x1a80, prepare_to_fulminate_on_twitter_then_cut_corners_and_overextend)
                mstore(0x1aa0, prepare_to_fulminate_on_twitter_then_backpeddle_and_blather_incoherently)
                mstore(0x1ac0, prepare_to_fulminate_on_twitter_then_strike_faustian_bargain)
                mstore(0x1ae0, prepare_to_fulminate_on_twitter_then_prepare_for_act_two)

                mstore(0x1b00, prepare_to_consult_the_runes_then_prevaricate)
                mstore(0x1b20, prepare_to_consult_the_runes_then_be_consumed_by_hubris)
                mstore(0x1b40, prepare_to_consult_the_runes_then_observe_a_fleeting_moment_of_self_reflection)
                mstore(0x1b60, prepare_to_consult_the_runes_then_live_vicariously_through_the_deeds_of_others)
                mstore(0x1b80, prepare_to_consult_the_runes_then_deflect_accountability)
                mstore(0x1ba0, prepare_to_consult_the_runes_then_fulminate_on_twitter)
                mstore(0x1bc0, prepare_to_consult_the_runes_twice)
                mstore(0x1be0, prepare_to_consult_the_runes_then_cut_corners_and_overextend)
                mstore(0x1c00, prepare_to_consult_the_runes_then_backpeddle_and_blather_incoherently)
                mstore(0x1c20, prepare_to_consult_the_runes_then_strike_faustian_bargain)
                mstore(0x1c40, prepare_to_consult_the_runes_then_prepare_for_act_two)

                mstore(0x1c80, 0x120)

                // general stack state: list of variables that represent indices in lookup table that
                // maps to jump endpoints

                // each subroutine pushes a status flag onto the stack before jumping
                // the status flag is combined with the lookup table index to create a final lookup index
                0x44
                prepare_to_strike_slightly_more_sensible_faustian_bargain: // uh oh...
                0x1000
                strike_faustian_bargain:    // I have come to bargain...
                    0x1c60 mstore           // store status flag
                    0x20 add                // increase program counter
                    0x1c80                   // add strike_faustian_bargain index
                    dup2 calldataload
                    dup1 0 byte 0x20 mul 0xfc0 mstore
                    0x20 mul dup1 0xfe0 mstore
                    0x1fff and
                    0xfdf mload
                    0xfde mload
                    0xfdd mload
                    0xfdc mload
                    0xfdb mload
                    0xfda mload
                    0xfd9 mload
                    0xfd8 mload
                    0xfd7 mload
                    0xfd6 mload
                    0xfd5 mload
                    0xfd4 mload
                    0xfd3 mload
                    0xfd2 mload
                    0xfd1 mload
                    0xfd0 mload
                    0xfcf mload
                    0xfce mload
                    0xfcd mload
                    0xfcc mload
                    0xfcb mload
                    0xfca mload
                    0xfc9 mload
                    0xfc8 mload
                    0xfc7 mload
                    0xfc6 mload
                    0xfc5 mload
                    0xfc4 mload
                    0xfc3 mload
                    0xfc2 mload
                    0xfc0 mload
                    0x1c60 mload
                    swap1 0x1fe0 and mload add mload jump
                prevaricate:
                    0x1fe0 and mload 0x1000 add mload jump
                    
                // move along nothing to see here
                0 1 2 3 4 5 8 9 1 2 3 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

                prepare_to_be_consumed_by_hubris:
                    0x1fe0 and mload 0x1160 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection:
                    0x1fe0 and mload 0x1420 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others:
                    0x1fe0 and mload 0x16e0 add mload jump
                prepare_to_deflect_accountability:
                    0x1fe0 and mload 0x1840 add mload jump
                prepare_to_fulminate_on_twitter:
                    0x1fe0 and mload 0x19a0 add mload jump
                prepare_to_consult_the_runes:
                    0x1fe0 and mload 0x1b00 add mload jump
                prepare_to_cut_corners_and_overextend:
                    cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add                           // next startpoint
                    
                    dup1 0x20 msize sub                     // current next next startpoint
                    sub                                     // delta next startpoint
                    0x60 gt optimize_jump_shenanigans jumpi // next startpoint
                    msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 

                    optimize_jump_shenanigans:              // next startpoint
                    dup1 mload                              // (jump index) next startpoint
                    // wish I had time for this one..
                    // dup1 be_consumed_by_hubris_many_then_consult_the_runes eq prepare_to_be_consumed_by_hubris_via_input jumpi
                    dup1 fulminate_on_twitter_then_deflect_accountability eq prepare_to_fulminate_on_twitter_multiple jumpi
                    pop
                    msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump

                prepare_to_fulminate_on_twitter_multiple:    // next startpoint
                    // ooooh yeah, we're not just compiling, we're optimizing! Bwahahaha
                    fulminate_on_twitter_until_cell_is_empty 0x40 msize sub mstore
                    pop
                    msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_then_prevaricate:
                    0x1fe0 and mload 0x1160 add mload jump
                prepare_to_be_consumed_by_hubris_then_live_vicariously_through_the_deeds_of_others:
                    be_consumed_by_hubris_then_live_vicariously_through_the_deeds_of_others msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_then_deflect_accountability:
                    be_consumed_by_hubris_then_deflect_accountability msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_twice:
                    0x2 msize 0x20 add mstore
                    0x1fe0 and mload 0x12c0 add mload jump
                prepare_to_be_consumed_by_hubris_then_fulminate_on_twitter:
                    be_consumed_by_hubris_then_fulminate_on_twitter msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_then_consult_the_runes:
                    be_consumed_by_hubris_then_consult_the_runes msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_then_cut_corners_and_overextend:
                    be_consumed_by_hubris_then_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    be_consumed_by_hubris_then_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_be_consumed_by_hubris_then_strike_faustian_bargain:
                    0x1160 strike_faustian_bargain jump

                prepare_to_be_consumed_by_hubris_many_then_prevaricate:
                    0x1fe0 and mload 0x12c0 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_live_vicariously_through_the_deeds_of_others:
                    be_consumed_by_hubris_many_then_live_vicariously_through_the_deeds_of_others 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_deflect_accountability:
                    be_consumed_by_hubris_many_then_deflect_accountability 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_many_again:
                    0x20 msize sub dup1 mload 0x1 add swap1 mstore
                    0x1fe0 and mload 0x12c0 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_observe_a_fleeting_moment_of_self_reflection:
                    be_consumed_by_hubris_many_then_observe_a_fleeting_moment_of_self_reflection 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_fulminate_on_twitter:
                    be_consumed_by_hubris_many_then_fulminate_on_twitter 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_consult_the_runes:
                    be_consumed_by_hubris_many_then_consult_the_runes 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_cut_corners_and_overextend:
                    be_consumed_by_hubris_many_then_cut_corners_and_overextend 0x40 msize sub mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_be_consumed_by_hubris_many_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    be_consumed_by_hubris_many_then_backpeddle_and_blather_incoherently 0x40 msize sub mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_be_consumed_by_hubris_many_then_strike_faustian_bargain:
                    0x12c0 strike_faustian_bargain jump

///////
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_prevaricate:
                    0x1fe0 and mload 0x1420 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_live_vicariously_through_the_deeds_of_others:
                    observe_a_fleeting_moment_of_self_reflection_then_live_vicariously_through_the_deeds_of_others msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_deflect_accountability:
                    observe_a_fleeting_moment_of_self_reflection_then_deflect_accountability msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_twice:
                    0x2 msize 0x20 add mstore
                    0x1fe0 and mload 0x1580 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_fulminate_on_twitter:
                    observe_a_fleeting_moment_of_self_reflection_then_fulminate_on_twitter msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_consult_the_runes:
                    observe_a_fleeting_moment_of_self_reflection_then_consult_the_runes msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_cut_corners_and_overextend:
                    observe_a_fleeting_moment_of_self_reflection_then_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    observe_a_fleeting_moment_of_self_reflection_then_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_strike_faustian_bargain:
                    0x1420 strike_faustian_bargain jump

                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_prevaricate:
                    0x1fe0 and mload 0x1580 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_be_consumed_by_hubris:
                    observe_a_fleeting_moment_of_self_reflection_many_then_be_consumed_by_hubris 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_live_vicariously_through_the_deeds_of_others:
                    observe_a_fleeting_moment_of_self_reflection_many_then_live_vicariously_through_the_deeds_of_others 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_deflect_accountability:
                    observe_a_fleeting_moment_of_self_reflection_many_then_deflect_accountability 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_again:
                    0x20 msize sub dup1 mload 0x1 add swap1 mstore
                    0x1fe0 and mload 0x1580 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_fulminate_on_twitter:
                    observe_a_fleeting_moment_of_self_reflection_many_then_fulminate_on_twitter 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_consult_the_runes:
                    observe_a_fleeting_moment_of_self_reflection_many_then_consult_the_runes 0x40 msize sub mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_cut_corners_and_overextend:
                    observe_a_fleeting_moment_of_self_reflection_many_then_cut_corners_and_overextend 0x40 msize sub mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    observe_a_fleeting_moment_of_self_reflection_many_then_backpeddle_and_blather_incoherently 0x40 msize sub mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_strike_faustian_bargain:
                    0x1580 strike_faustian_bargain jump

                prepare_to_live_vicariously_through_the_deeds_of_others_then_prevaricate:
                    0x1fe0 and mload 0x16e0 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_then_be_consumed_by_hubris:
                    live_vicariously_through_the_deeds_of_others_then_be_consumed_by_hubris msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_then_observe_a_fleeting_moment_of_self_reflection:
                    live_vicariously_through_the_deeds_of_others_then_observe_a_fleeting_moment_of_self_reflection msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_twice:
                    live_vicariously_through_the_deeds_of_others_twice msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_then_fulminate_on_twitter:
                    live_vicariously_through_the_deeds_of_others_then_fulminate_on_twitter msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_then_consult_the_runes:
                    live_vicariously_through_the_deeds_of_others_then_consult_the_runes msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_then_cut_corners_and_overextend:
                    live_vicariously_through_the_deeds_of_others_then_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_live_vicariously_through_the_deeds_of_others_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    live_vicariously_through_the_deeds_of_others_then_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_live_vicariously_through_the_deeds_of_others_then_strike_faustian_bargain:
                    0x16e0 strike_faustian_bargain jump

                prepare_to_deflect_accountability_then_prevaricate:
                    0x1fe0 and mload 0x1840 add mload jump
                prepare_to_deflect_accountability_then_be_consumed_by_hubris:
                    deflect_accountability_then_be_consumed_by_hubris msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_deflect_accountability_then_observe_a_fleeting_moment_of_self_reflection:
                    deflect_accountability_then_observe_a_fleeting_moment_of_self_reflection msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_deflect_accountability_twice:
                    deflect_accountability_twice msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_deflect_accountability_then_fulminate_on_twitter:
                    deflect_accountability_then_fulminate_on_twitter msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_deflect_accountability_then_consult_the_runes:
                    deflect_accountability_then_consult_the_runes msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_deflect_accountability_then_cut_corners_and_overextend:
                    deflect_accountability_then_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_deflect_accountability_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    deflect_accountability_then_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_deflect_accountability_then_strike_faustian_bargain:
                    0x1840 strike_faustian_bargain jump

                prepare_to_fulminate_on_twitter_then_prevaricate:
                    0x1fe0 and mload 0x19a0 add mload jump
                prepare_to_fulminate_on_twitter_then_be_consumed_by_hubris:
                    fulminate_on_twitter_then_be_consumed_by_hubris msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_then_observe_a_fleeting_moment_of_self_reflection:
                    fulminate_on_twitter_then_observe_a_fleeting_moment_of_self_reflection msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_then_live_vicariously_through_the_deeds_of_others:
                    fulminate_on_twitter_then_live_vicariously_through_the_deeds_of_others msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_then_deflect_accountability:
                    fulminate_on_twitter_then_deflect_accountability msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_twice:
                    fulminate_on_twitter_twice msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_then_consult_the_runes:
                    fulminate_on_twitter_then_consult_the_runes msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_then_cut_corners_and_overextend:
                    fulminate_on_twitter_then_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_fulminate_on_twitter_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    fulminate_on_twitter_then_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 
                prepare_to_fulminate_on_twitter_then_strike_faustian_bargain:
                    0x19a0 strike_faustian_bargain jump

                prepare_to_consult_the_runes_then_prevaricate:
                    0x1fe0 and mload 0x1b00 add mload jump
                prepare_to_consult_the_runes_then_be_consumed_by_hubris:
                    consult_the_runes_then_be_consumed_by_hubris msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_then_observe_a_fleeting_moment_of_self_reflection:
                    consult_the_runes_then_observe_a_fleeting_moment_of_self_reflection msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_then_live_vicariously_through_the_deeds_of_others:
                    consult_the_runes_then_live_vicariously_through_the_deeds_of_others msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_then_deflect_accountability:
                    consult_the_runes_then_deflect_accountability msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_twice:
                    consult_the_runes_twice msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_then_fulminate_on_twitter:
                    consult_the_runes_then_fulminate_on_twitter msize mstore
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_then_cut_corners_and_overextend:
                    consult_the_runes_then_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload 0x1000 add mload jump
                prepare_to_consult_the_runes_then_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    consult_the_runes_then_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload 0x1000 add mload jump 

                prepare_to_consult_the_runes_then_strike_faustian_bargain:
                    0x1b00 strike_faustian_bargain jump

                prepare_to_prepare_for_act_two:
                    finish_execution msize mstore
                    act_II jump

                prepare_to_be_consumed_by_hubris_then_prepare_for_act_two:
                    finish_execution msize mstore
                    act_II jump

                prepare_to_be_consumed_by_hubris_many_then_prepare_for_act_two:
                    finish_execution 0x40 msize sub mstore
                    act_II jump
    
                prepare_to_observe_a_fleeting_moment_of_self_reflection_then_prepare_for_act_two:
                    finish_execution msize mstore
                    act_II jump

                prepare_to_observe_a_fleeting_moment_of_self_reflection_many_then_prepare_for_act_two:
                    finish_execution 0x40 msize sub mstore
                    act_II jump
    
                prepare_to_live_vicariously_through_the_deeds_of_others_then_prepare_for_act_two:
                    finish_execution msize mstore
                    act_II jump
                prepare_to_deflect_accountability_then_prepare_for_act_two:
                    finish_execution msize mstore
                    act_II jump

                prepare_to_consult_the_runes_then_prepare_for_act_two:
                    finish_execution msize mstore
                    act_II jump

                prepare_to_fulminate_on_twitter_then_prepare_for_act_two:
                    fulminate_on_twitter_then_finish_execution msize mstore
                    act_II jump

            /*        0x1b00 strike_faustian_bargain jump

                // > (0x3e * 0x20)
                compile_increment_data_pointer:
                    dup1 0x1fe0 and 0x7c0 eq compile_increment_data_pointer_many jumpi
                    increment_data_pointer msize mstore
                    0x1fe0 and mload prevaricate add jump
                compile_increment_data_pointer_many:
                    0x01
                compile_increment_data_pointer_many_loop:
                    swap1 pop 0x01 add
                    dup2 0x1fe0 and 0x7c0 eq compile_increment_data_pointer_many_loop jumpi
                    increment_data_pointer_many msize mstore
                    msize mstore
                    0x1fe0 and mload prevaricate add jump
                
                // <
                compile_decrement_data_pointer:
                    decrement_data_pointer msize mstore
                    0x1fe0 and mload prevaricate add jump

                // +
                compile_increment_data_cell:
                    increment_data_cell msize mstore
                    0x1fe0 and mload prevaricate add jump
                // -
                compile_decrement_data_cell:
                    decrement_data_cell msize mstore
                    0x1fe0 and mload prevaricate add jump

                // .
                compile_fulminate_on_twitter:
                    fulminate_on_twitter msize mstore
                    0x1fe0 and mload prevaricate add jump

                // ,
                compile_input_to_data_cell:
                    input_to_data_cell msize mstore
                    0x1fe0 and mload prevaricate add jump

                // [
                compile_conditional_cut_corners_and_overextend:
                    conditional_cut_corners_and_overextend msize mstore
                    0x40 mload msize dup2 mstore
                    0x20 add 0x40 mstore
                    gas msize mstore // hmmmmmmm
                    0x1fe0 and mload prevaricate add jump

                // ]
                compile_conditional_backpeddle_and_blather_incoherently:
                    0x20 0x40 mload sub dup1 0x40 mstore mload
                    conditional_backpeddle_and_blather_incoherently msize mstore
                    0x20 dup2 add msize mstore
                    msize swap1 mstore
                    0x1fe0 and mload prevaricate add jump    */


        act_II:
                // My old manager once told me that most programmers work hard but good
                // programmers are lazy, a quote I have often used when I feel like mixing
                // confirmation bias with questionable life choices.
                // Back to the point, I am so very lazy. Calculating a byte-offset that maps
                // the data pointer to the least significant byte in a word of memory every time
                // we operate on program memory, for example, is far too much work.
                // We can operate on the most significant byte instead, most of the time, and
                // scorn trifling concepts like static typing.
                // However there's a problem! Addition/subtraction requires adding/subtracting
                // 2^224. Now, I was merrily shoving these literals onto the stack like it's no big
                // thing but the 'optimizer' was replacing these with 'exp' opcodes! Exp! That thing
                // is outrageously expensive. Luckily this is one of the few places in the program
                // where I actually know the state of the stack, so throw the 'literals' on here and
                // duplicate them instead. So we don't pay that exp cost every time we execute
                // a brianfuck opcode -.-
                0x0100000000000000000000000000000000000000000000000000000000000000  // 1-ish
                0xff00000000000000000000000000000000000000000000000000000000000000  // ff-ish 1-ish
                dup2 dup1 add swap2                                                 // 1-ish ff-ish 2-ish
                // this one too... gets replaced with '0 NOT' :/
                0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
                0x05 0x24 calldataload add      // -1 1-ish ff-ish
                0x400
                0x120
                0x1ca0
                dup1 mload jump

/*
                increment_data_pointer:
                    swap1 0x01 add swap1
                    0x20 add dup1
                    mload jump

                increment_data_pointer_many:
                    swap1 dup2 0x20 add mload add swap1
                    0x40 add dup1
                    mload jump

                decrement_data_pointer:
                    0x01 dup3 sub swap2 pop
                    0x20 add dup1
                    mload jump

                increment_data_cell:
                    0x0100000000000000000000000000000000000000000000000000000000000000
                    dup3 mload add dup3 mstore
                    0x20 add dup1
                    mload jump

                decrement_data_cell:
                    0x0100000000000000000000000000000000000000000000000000000000000000
                    dup3 mload sub dup3 mstore
                    0x20 add dup1
                    mload jump

                fulminate_on_twitter:
                    dup2 mload dup4 0x01 add swap4 mstore
                    0x20 add dup1
                    mload jump

                input_to_data_cell:
                    dup4 0x01 add swap4 calldataload dup3 mstore8
                    0x20 add dup1
                    mload jump
    
                ternary_operator_rejects_explicit_politeness:
                    dup1 "please" eq finish_execution jumpi

                conditional_cut_corners_and_overextend:
                    0xff00000000000000000000000000000000000000000000000000000000000000
                    dup3 mload and skip_cut_corners_and_overextend jumpi
                    0x20 add mload dup1
                    mload jump
                skip_cut_corners_and_overextend:
                    0x40 add dup1
                    mload jump

                conditional_backpeddle_and_blather_incoherently:
                    0xff00000000000000000000000000000000000000000000000000000000000000
                    dup3 mload and backpeddle_and_blather_incoherently jumpi
                    0x40 add dup1
                    mload jump
                backpeddle_and_blather_incoherently:
                    0x20 add mload dup1
                    mload jump
*/

            be_consumed_by_hubris_then_live_vicariously_through_the_deeds_of_others:      // pc dp op ip -1
                swap1 0x01 add swap1
                dup6
                dup3 mload add dup3 mstore
                0x20 add dup1
                mload jump

            be_consumed_by_hubris_then_deflect_accountability:
                swap1 0x01 add swap1
                dup6
                dup3 mload sub dup3 mstore
                0x20 add dup1
                mload jump
            be_consumed_by_hubris_then_fulminate_on_twitter:
                swap1 0x01 add swap1
                dup2 mload dup4 0x01 add swap4 mstore
                0x20 add dup1
                mload jump
            be_consumed_by_hubris_then_consult_the_runes:
                swap1 0x01 add swap1
                dup4 0x01 add swap4 calldataload dup3 mstore8
                0x20 add dup1
                mload jump
            be_consumed_by_hubris_then_cut_corners_and_overextend:
                swap1 0x01 add swap1
                dup7
                dup3 mload and skip_idp_cut_corners_and_overextend jumpi
                0x20 add mload dup1
                mload jump
                skip_idp_cut_corners_and_overextend:
                    0x40 add dup1
                    mload jump
            be_consumed_by_hubris_then_backpeddle_and_blather_incoherently:
                swap1 0x01 add swap1
                dup7
                dup3 mload and skip_idp_backpeddle_and_blather_incoherently jumpi
                0x40 add dup1
                mload jump
                skip_idp_backpeddle_and_blather_incoherently:
                    0x20 add mload dup1
                    mload jump

            observe_a_fleeting_moment_of_self_reflection_then_live_vicariously_through_the_deeds_of_others:
                swap1 dup5 add swap1
                dup6
                dup3 mload add dup3 mstore
                0x20 add dup1
                mload jump

            observe_a_fleeting_moment_of_self_reflection_then_deflect_accountability:
                swap1 dup5 add swap1
                dup6
                dup3 mload sub dup3 mstore
                0x20 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_then_fulminate_on_twitter:
                swap1 dup5 add swap1
                dup2 mload dup4 0x01 add swap4 mstore
                0x20 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_then_consult_the_runes:
                swap1 dup5 add swap1
                dup4 0x01 add swap4 calldataload dup3 mstore8
                0x20 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_then_cut_corners_and_overextend:
                swap1 dup5 add swap1
                dup7
                dup3 mload and skip_ddp_cut_corners_and_overextend jumpi
                0x20 add mload dup1
                mload jump
                skip_ddp_cut_corners_and_overextend:
                    0x40 add dup1
                    mload jump
            observe_a_fleeting_moment_of_self_reflection_then_backpeddle_and_blather_incoherently:
                swap1 dup5 add swap1
                dup7
                dup3 mload and skip_ddp_backpeddle_and_blather_incoherently jumpi
                0x40 add dup1
                mload jump
                skip_ddp_backpeddle_and_blather_incoherently:
                    0x20 add mload dup1
                    mload jump
            be_consumed_by_hubris_many_then_observe_a_fleeting_moment_of_self_reflection:
                swap1 0x01 dup3 0x20 add mload add sub swap1
                0x40 add dup1
                mload jump
            be_consumed_by_hubris_many_then_live_vicariously_through_the_deeds_of_others:      // pc dp op ip -1
                swap1 dup2 0x20 add mload add swap1
                dup6
                dup3 mload add dup3 mstore
                0x40 add dup1
                mload jump
            be_consumed_by_hubris_many_then_deflect_accountability:
                swap1 dup2 0x20 add mload add swap1
                dup6
                dup3 mload sub dup3 mstore
                0x40 add dup1
                mload jump
            be_consumed_by_hubris_many_then_fulminate_on_twitter:
                swap1 dup2 0x20 add mload add swap1
                dup2 mload dup4 0x01 add swap4 mstore
                0x40 add dup1
                mload jump
            be_consumed_by_hubris_many_then_consult_the_runes: // pc dp i o
                swap1 dup2 0x20 add mload               // <x> dp pc i o 
                add swap1                               // pc dp' i o
                dup4 0x01 add swap4 calldataload dup3 mstore8   // dp' <y> pc dp' i o
                0x40 add dup1
                mload jump
            be_consumed_by_hubris_many_then_cut_corners_and_overextend:
                swap1 dup2 0x20 add mload add swap1
                dup7
                dup3 mload and skip_idpm_cut_corners_and_overextend jumpi
                0x40 add mload dup1
                mload jump
                skip_idpm_cut_corners_and_overextend:
                    0x60 add dup1
                    mload jump
            be_consumed_by_hubris_many_then_backpeddle_and_blather_incoherently:
                swap1 dup2 0x20 add mload add swap1
                dup7
                dup3 mload and skip_idpm_backpeddle_and_blather_incoherently jumpi
                0x60 add dup1
                mload jump
                skip_idpm_backpeddle_and_blather_incoherently:
                    0x40 add mload dup1
                    mload jump

            observe_a_fleeting_moment_of_self_reflection_many_then_be_consumed_by_hubris:
                swap1 dup2 0x20 add mload swap1 sub 0x01 add swap1 // todo: optimize>
                0x40 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_many_then_live_vicariously_through_the_deeds_of_others:      // pc dp op ip -1
                swap1 dup2 0x20 add mload swap1 sub swap1 // todo: optimize>
                dup6
                dup3 mload add dup3 mstore
                0x40 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_many_then_deflect_accountability:
                swap1 dup2 0x20 add mload swap1 sub swap1 // todo: optimize>
                dup6
                dup3 mload sub dup3 mstore
                0x40 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_many_then_fulminate_on_twitter:
                swap1 dup2 0x20 add mload swap1 sub swap1 // todo: optimize>
                dup2 mload dup4 0x01 add swap4 mstore
                0x40 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_many_then_consult_the_runes:     // pc dp op ip -1
                swap1 dup2 0x20 add                         // pc' dp pc op ip -1
                mload swap1                                 // dp <x> pc op ip -1
                sub swap1                                   // pc dp' op ip -1
                dup4 0x01 add swap4 calldataload dup3 mstore8
                0x40 add dup1
                mload jump
            observe_a_fleeting_moment_of_self_reflection_many_then_cut_corners_and_overextend:
                swap1 dup2 0x20 add mload swap1 sub swap1 // todo: optimize>
                dup7
                dup3 mload and skip_ddpm_cut_corners_and_overextend jumpi
                0x40 add mload dup1
                mload jump
                skip_ddpm_cut_corners_and_overextend:
                    0x60 add dup1
                    mload jump
            observe_a_fleeting_moment_of_self_reflection_many_then_backpeddle_and_blather_incoherently: // pc dp op ip -1 1-ish ff-ish
                swap1 dup2 0x20 add mload swap1 sub swap1 // todo: optimize>
                dup7
                dup3 mload and skip_ddpm_backpeddle_and_blather_incoherently jumpi
                0x60 add dup1
                mload jump
                skip_ddpm_backpeddle_and_blather_incoherently:
                    0x40 add mload dup1
                    mload jump

            live_vicariously_through_the_deeds_of_others_then_be_consumed_by_hubris: // pc dp op ip -1
                dup2 0x01 add swap2 dup1 mload             // x dp pc dp' op ip -1
                dup8 add  // x' dp pc dp' op ip -1
                swap1 mstore
                0x20 add dup1
                mload jump
            live_vicariously_through_the_deeds_of_others_then_observe_a_fleeting_moment_of_self_reflection: // pc dp op ip -1
                0x01 dup3 sub swap2             // dp pc dp' op ip -1 1-ish
                dup7  // 1 dp pc dp' op ip -1
                dup2 mload add  // x' dp pc dp' op ip -1
                swap1 mstore
                0x20 add dup1
                mload jump
            live_vicariously_through_the_deeds_of_others_twice:
                dup2 mload // x pc dp op ip -1
                0x0200000000000000000000000000000000000000000000000000000000000000 add  // x' dp pc dp' op ip -1
                dup3 mstore
                0x20 add dup1
                mload jump
            live_vicariously_through_the_deeds_of_others_then_consult_the_runes: // ?
                dup4 0x01 add swap4 calldataload // x pc dp op ip -1
                0x20 add dup1
                mload jump
            live_vicariously_through_the_deeds_of_others_then_fulminate_on_twitter:
                dup6
                dup3 mload add      // x pc dp op ip -1
                dup1                // x x pc dp op ip -1
                dup5 0x01 add swap5 mstore
                                    // x pc dp op ip -1
                dup3 mstore
                0x20 add dup1
                mload jump
            live_vicariously_through_the_deeds_of_others_then_cut_corners_and_overextend:
                dup6
                dup3 mload add      // x pc dp op ip -1
                dup8 dup2 and // x? x pc dp op ip -1
                idprepare_to_skip_cut_corners_and_overextend jumpi  // x pc dp op ip -1
                    dup3 mstore
                    0x20 add mload dup1
                    mload jump
                idprepare_to_skip_cut_corners_and_overextend:
                    dup3 mstore
                    0x40 add dup1
                    mload jump
            live_vicariously_through_the_deeds_of_others_then_backpeddle_and_blather_incoherently: // pc dp op ip -1 1-ish ff-ish 2-ish
                dup6
                dup3 mload add      // x pc dp op ip -1
                dup8 dup2 and
                idprepare_to_backpeddle_and_blather_incoherently jumpi
                    dup3 mstore
                    0x40 add dup1
                    mload jump
                idprepare_to_backpeddle_and_blather_incoherently:
                    dup3 mstore
                    0x20 add mload dup1
                    mload jump


            deflect_accountability_then_be_consumed_by_hubris: // pc dp op ip -1 1-ish ff-ish 2-ish
                dup2 0x01 add swap2 dup7 dup2 mload             // x dp pc dp' op ip -1
                sub  // x' dp pc dp' op ip -1
                swap1 mstore
                0x20 add dup1
                mload jump
            deflect_accountability_then_observe_a_fleeting_moment_of_self_reflection: // pc dp op ip -1
                dup2 dup6 add swap2             // dp pc dp' op ip -1 1-ish ff-ish 2-ish
                dup7  // 1 dp pc dp' op ip -1
                dup2 mload sub  // x' dp pc dp' op ip -1
                swap1 mstore
                0x20 add dup1
                mload jump
            deflect_accountability_twice:   // pc dp op ip -1 1-ish ff-ish 2-ish
                dup8
                dup3 mload sub
                dup3 mstore
                0x20 add dup1
                mload jump
            deflect_accountability_then_consult_the_runes: // ?
                dup4 0x01 add swap4 calldataload // x pc dp op ip -1
                0x20 add dup1
                mload jump
            deflect_accountability_then_fulminate_on_twitter:  // pc dp op ip -1 1-ish ff-ish 2-ish
                dup6
                dup3 mload sub      // x pc dp op ip -1
                dup1                // x x pc dp op ip -1
                dup5 0x01 add swap5 mstore
                                    // x pc dp op ip -1
                dup3 mstore
                0x20 add dup1
                mload jump
            deflect_accountability_then_cut_corners_and_overextend:
                dup6
                dup3 mload sub      // x pc dp op ip -1
                dup8 dup2 and // x? x pc dp op ip -1
                ddprepare_to_skip_cut_corners_and_overextend jumpi  // x pc dp op ip -1
                    dup3 mstore
                    0x20 add mload dup1
                    mload jump
                ddprepare_to_skip_cut_corners_and_overextend:
                    dup3 mstore
                    0x40 add dup1
                    mload jump
            deflect_accountability_then_backpeddle_and_blather_incoherently:   // pc dp op ip -1 1-ish ff-ish
                dup6
                dup3 mload sub      // x pc dp op ip -1 1-ish ff-ish
                dup8 dup2 and
                ddprepare_to_backpeddle_and_blather_incoherently jumpi
                    dup3 mstore
                    0x40 add dup1
                    mload jump
                ddprepare_to_backpeddle_and_blather_incoherently:
                    dup3 mstore
                    0x20 add mload dup1
                    mload jump

            fulminate_on_twitter_then_be_consumed_by_hubris:
                dup2 0x01 add swap2 mload             // x pc dp' op ip -1
                dup4 0x01 add swap4 mstore
                0x20 add dup1
                mload jump
            fulminate_on_twitter_then_observe_a_fleeting_moment_of_self_reflection:
                dup2 dup6 add swap2 mload             // x pc dp' op ip -1
                dup4 0x01 add swap4 mstore
                0x20 add dup1
                mload jump
            fulminate_on_twitter_then_live_vicariously_through_the_deeds_of_others:
                dup2 mload dup4 0x01 add swap4      // op x pc dp op' ip -1 1-ish ff-ish
                dup2 dup9 add // x' op x pc dp op' ip -1
                dup5 mstore // op x pc dp op' ip -1
                mstore
                // dup3 mload add
                0x20 add dup1
                mload jump

            fulminate_on_twitter_then_deflect_accountability:    
                dup2 mload dup4 0x01 add swap4      // op x pc dp op' ip -1 1-ish ff-ish
                dup8 dup3 sub // x' op x pc dp op' ip -1
                dup5 mstore // op x pc dp op' ip -1
                mstore
                // dup3 mload add
                0x20 add dup1
                mload jump

            fulminate_on_twitter_twice:
                dup2 mload dup4 0x02 add swap4    // op x pc dp op' ip -1
                dup2 dup2                       // op' x op x pc dp op' ip -1
                mstore 0x01 add mstore
                0x20 add dup1
                mload jump

            fulminate_on_twitter_until_cell_is_empty:   // pc dp op ip -1 1-sh ff-ish 2-ish
                // we actually need this one as a byte...
                0x1f dup3 sub mload 0xff and        // d pc dp op ip -1 1-ish ff-ish 2-ish
                0x1f dup2 gt harvest_a_word jumpi
                0x1 add
                harvest_residual jump
                harvest_a_word:
                    0x1 add
                harvest_word_loop:
                    0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
                    0x1 dup3 sub 0x0101010101010101010101010101010101010101010101010101010101010101 mul // x d pc dp op' ip -1 1-ish ff-ish
                    sub                             // w d pc dp op ip -1 1-ish ff-ish 2-ish
                    dup5 0x20 add swap5             // op' w d pc dp op' ip -1 1-ish ff-ish 2-ish
                    mstore                          // d pc dp op' ip -1 1-ish ff-ish
                    0x20 swap1 sub                  // d' pc dp op' ip -1 1-ish ff-ish
                    dup1 0x1f lt harvest_word_loop jumpi
                    dup1 iszero finished_harvesting jumpi  // d' pc dp op' ip -1 1-ish ff-ish
                harvest_residual:
                    dup6 add
                    dup1
                    dup5 0x1 add swap5              // op d' d' pc dp op'
                    mstore8                         // 
                    dup1 iszero finished_harvesting jumpi
                harvest_residual_loop:
                    dup6 add                        // d'' pc dp op' ...
                    dup1 dup5 0x1 add swap5 mstore8
                    dup1 harvest_residual_loop jumpi

                finished_harvesting:                // d' pc dp op' ip -1 1-ish ff-ish
                dup3 mstore                         // pc dp op' ip -1 1-ish ff-ish
                0x01 dup4 sub swap3 pop
                // skip the jump index
                0x60 add dup1 mload jump
                return(0,0)
            
            fulminate_on_twitter_then_consult_the_runes:
                dup2 mload dup4 0x01 add swap4 mstore
                dup4 0x01 add swap4 calldataload dup3 mstore8
                0x20 add dup1
                mload jump
            fulminate_on_twitter_then_cut_corners_and_overextend:
                dup2 mload dup1 dup5 0x01 add swap5 mstore     // x pc dp op' ip -1 1-ish ff-ish
                dup8 and // x? pc dp op ip -1
                odprepare_to_skip_cut_corners_and_overextend jumpi  // x pc dp op ip -1
                    0x20 add mload dup1
                    mload jump
                odprepare_to_skip_cut_corners_and_overextend:
                    0x40 add dup1
                    mload jump
    
            fulminate_on_twitter_then_backpeddle_and_blather_incoherently:  // pc dp op ip -1 1-ish ff-ish
                dup2 mload dup1 dup5 0x01 add swap5 mstore      // x pc dp op' ip -1 1-ish ff-ish
                dup8 and
                odprepare_to_backpeddle_and_blather_incoherently jumpi
                    0x40 add dup1
                    mload jump
                odprepare_to_backpeddle_and_blather_incoherently:
                    0x20 add mload dup1
                    mload jump
            fulminate_on_twitter_then_finish_execution:
                dup2 mload dup4 0x01 add swap4 mstore   // op x pc dp op' ip -1
                finish_execution jump

            consult_the_runes_then_be_consumed_by_hubris:
                dup4 0x01 add swap4 calldataload dup3 0x01 add swap3 mstore8
                0x20 add dup1
                mload jump

            consult_the_runes_then_observe_a_fleeting_moment_of_self_reflection:
                dup4 0x01 add swap4 calldataload 0x01 dup4 sub swap3 mstore8
                0x20 add dup1
                mload jump

            consult_the_runes_then_live_vicariously_through_the_deeds_of_others:
                dup4 0x01 add swap4 calldataload 0x01 add dup3 mstore8
                0x20 add dup1
                mload jump

            consult_the_runes_then_deflect_accountability:
                0x01 dup5 0x01 add swap5 calldataload sub dup3 mstore8
                0x20 add dup1
                mload jump

            consult_the_runes_twice:           // pc dp op ip -1
                swap3 0x02 add swap3 dup4 calldataload dup3 mstore8
                0x20 add dup1
                mload jump

            consult_the_runes_then_fulminate_on_twitter:
                dup4 0x01 add swap4 calldataload dup3 mstore8
                dup2 mload dup4 0x01 add swap4 mstore
                0x20 add dup1
                mload jump

            consult_the_runes_then_cut_corners_and_overextend:
                dup4 0x01 add swap4 calldataload // x pc dp op ip -1
                dup1 0xff and li_skip_cut_corners_and_overextend jumpi
                dup3 mstore8
                0x20 add mload dup1
                mload jump
                li_skip_cut_corners_and_overextend:
                    dup3 mstore8
                    0x40 add dup1
                    mload jump

            consult_the_runes_then_backpeddle_and_blather_incoherently:
                dup4 0x01 add swap4 calldataload // x pc dp op ip -1
                dup1 0xff and li_backpeddle_and_blather_incoherently jumpi
                    dup3 mstore8
                    0x40 add dup1
                    mload jump
                li_backpeddle_and_blather_incoherently:
                    dup3 mstore8
                    0x20 add mload dup1
                    mload jump
                
            cut_corners_and_overextend:  // pc dp op ip -1 1-ish ff-ish
                dup7
                dup3 mload and skip_cut_corners_and_overextend jumpi
                0x20 add mload dup1
                mload jump
            skip_cut_corners_and_overextend:
                0x40 add dup1
                mload jump

            backpeddle_and_blather_incoherently:  // pc dp op ip -1 1-ish ff-ish
                dup7
                dup3 mload and skip_backpeddle_and_blather_incoherently jumpi
                0x40 add dup1
                mload jump
            skip_backpeddle_and_blather_incoherently:
                0x20 add mload dup1
                mload jump

                finish_execution:
                0x00 dup4 mstore
                0x400 dup4 sub 0x3e0 mstore
                mstore(0x3c0, 0x20)
                0x60 0x20 0x20 0x401 dup7 sub div mul add 0x3c0 return // there's probably a more efficient way of calculating
                // this, but that would probably require some knowledge of the stack state at this point. Hah.
        // "this just looks like a load of gibberish!" - Joe
        }
    }
}