import {AssemblyInstructionInfo} from '../base.js'; export function getAsmOpcode(opcode: string | undefined): AssemblyInstructionInfo | undefined { if (!opcode) return; switch (opcode.toUpperCase()) { case "STOP": return { "html": "Halts execution\nInput: -\nOutput: -", "tooltip": "Halts execution", "url": "https://www.evm.codes/#00" }; case "ADD": return { "html": "Addition operation\nInput: a | b\nOutput: a + b", "tooltip": "Addition operation", "url": "https://www.evm.codes/#01" }; case "MUL": return { "html": "Multiplication operation\nInput: a | b\nOutput: a * b", "tooltip": "Multiplication operation", "url": "https://www.evm.codes/#02" }; case "SUB": return { "html": "Subtraction operation\nInput: a | b\nOutput: a - b", "tooltip": "Subtraction operation", "url": "https://www.evm.codes/#03" }; case "DIV": return { "html": "Integer division operation\nInput: a | b\nOutput: a // b", "tooltip": "Integer division operation", "url": "https://www.evm.codes/#04" }; case "SDIV": return { "html": "Signed integer division operation (truncated)\nInput: a | b\nOutput: a // b", "tooltip": "Signed integer division operation (truncated)", "url": "https://www.evm.codes/#05" }; case "MOD": return { "html": "Modulo remainder operation\nInput: a | b\nOutput: a % b", "tooltip": "Modulo remainder operation", "url": "https://www.evm.codes/#06" }; case "SMOD": return { "html": "Signed modulo remainder operation\nInput: a | b\nOutput: a % b", "tooltip": "Signed modulo remainder operation", "url": "https://www.evm.codes/#07" }; case "ADDMOD": return { "html": "Modulo addition operation\nInput: a | b | N\nOutput: (a + b) % N", "tooltip": "Modulo addition operation", "url": "https://www.evm.codes/#08" }; case "MULMOD": return { "html": "Modulo multiplication operation\nInput: a | b | N\nOutput: (a * b) % N", "tooltip": "Modulo multiplication operation", "url": "https://www.evm.codes/#09" }; case "EXP": return { "html": "Exponential operation\nInput: a | exponent\nOutput: a ** exponent", "tooltip": "Exponential operation", "url": "https://www.evm.codes/#0a" }; case "SIGNEXTEND": return { "html": "Extend length of two\u2019s complement signed integer\nInput: b | x\nOutput: y", "tooltip": "Extend length of two\u2019s complement signed integer", "url": "https://www.evm.codes/#0b" }; case "LT": return { "html": "Less-than comparison\nInput: a | b\nOutput: a < b", "tooltip": "Less-than comparison", "url": "https://www.evm.codes/#10" }; case "GT": return { "html": "Greater-than comparison\nInput: a | b\nOutput: a > b", "tooltip": "Greater-than comparison", "url": "https://www.evm.codes/#11" }; case "SLT": return { "html": "Signed less-than comparison\nInput: a | b\nOutput: a < b", "tooltip": "Signed less-than comparison", "url": "https://www.evm.codes/#12" }; case "SGT": return { "html": "Signed greater-than comparison\nInput: a | b\nOutput: a > b", "tooltip": "Signed greater-than comparison", "url": "https://www.evm.codes/#13" }; case "EQ": return { "html": "Equality comparison\nInput: a | b\nOutput: a == b", "tooltip": "Equality comparison", "url": "https://www.evm.codes/#14" }; case "ISZERO": return { "html": "Simple not operator\nInput: a\nOutput: a == 0", "tooltip": "Simple not operator", "url": "https://www.evm.codes/#15" }; case "AND": return { "html": "Bitwise AND operation\nInput: a | b\nOutput: a & b", "tooltip": "Bitwise AND operation", "url": "https://www.evm.codes/#16" }; case "OR": return { "html": "Bitwise OR operation\nInput: a | b\nOutput: a \\| b", "tooltip": "Bitwise OR operation", "url": "https://www.evm.codes/#17" }; case "XOR": return { "html": "Bitwise XOR operation\nInput: a | b\nOutput: a ^ b", "tooltip": "Bitwise XOR operation", "url": "https://www.evm.codes/#18" }; case "NOT": return { "html": "Bitwise NOT operation\nInput: a\nOutput: ~a", "tooltip": "Bitwise NOT operation", "url": "https://www.evm.codes/#19" }; case "BYTE": return { "html": "Retrieve single byte from word\nInput: i | x\nOutput: y", "tooltip": "Retrieve single byte from word", "url": "https://www.evm.codes/#1a" }; case "SHL": return { "html": "Left shift operation\nInput: shift | value\nOutput: value << shift", "tooltip": "Left shift operation", "url": "https://www.evm.codes/#1b" }; case "SHR": return { "html": "Logical right shift operation\nInput: shift | value\nOutput: value >> shift", "tooltip": "Logical right shift operation", "url": "https://www.evm.codes/#1c" }; case "SAR": return { "html": "Arithmetic (signed) right shift operation\nInput: shift | value\nOutput: value >> shift", "tooltip": "Arithmetic (signed) right shift operation", "url": "https://www.evm.codes/#1d" }; case "KECCAK256": return { "html": "Compute Keccak-256 hash\nInput: offset | size\nOutput: hash", "tooltip": "Compute Keccak-256 hash", "url": "https://www.evm.codes/#20" }; case "ADDRESS": return { "html": "Get address of currently executing account\nInput: -\nOutput: address", "tooltip": "Get address of currently executing account", "url": "https://www.evm.codes/#30" }; case "BALANCE": return { "html": "Get balance of the given account\nInput: address\nOutput: balance", "tooltip": "Get balance of the given account", "url": "https://www.evm.codes/#31" }; case "ORIGIN": return { "html": "Get execution origination address\nInput: -\nOutput: address", "tooltip": "Get execution origination address", "url": "https://www.evm.codes/#32" }; case "CALLER": return { "html": "Get caller address\nInput: -\nOutput: address", "tooltip": "Get caller address", "url": "https://www.evm.codes/#33" }; case "CALLVALUE": return { "html": "Get deposited value by the instruction/transaction responsible for this execution\nInput: -\nOutput: value", "tooltip": "Get deposited value by the instruction/transaction responsible for this execution", "url": "https://www.evm.codes/#34" }; case "CALLDATALOAD": return { "html": "Get input data of current environment\nInput: i\nOutput: data[i]", "tooltip": "Get input data of current environment", "url": "https://www.evm.codes/#35" }; case "CALLDATASIZE": return { "html": "Get size of input data in current environment\nInput: -\nOutput: size", "tooltip": "Get size of input data in current environment", "url": "https://www.evm.codes/#36" }; case "CALLDATACOPY": return { "html": "Copy input data in current environment to memory\nInput: destOffset | offset | size\nOutput: -", "tooltip": "Copy input data in current environment to memory", "url": "https://www.evm.codes/#37" }; case "CODESIZE": return { "html": "Get size of code running in current environment\nInput: -\nOutput: size", "tooltip": "Get size of code running in current environment", "url": "https://www.evm.codes/#38" }; case "CODECOPY": return { "html": "Copy code running in current environment to memory\nInput: destOffset | offset | size\nOutput: -", "tooltip": "Copy code running in current environment to memory", "url": "https://www.evm.codes/#39" }; case "GASPRICE": return { "html": "Get price of gas in current environment\nInput: -\nOutput: price", "tooltip": "Get price of gas in current environment", "url": "https://www.evm.codes/#3a" }; case "EXTCODESIZE": return { "html": "Get size of an account\u2019s code\nInput: address\nOutput: size", "tooltip": "Get size of an account\u2019s code", "url": "https://www.evm.codes/#3b" }; case "EXTCODECOPY": return { "html": "Copy an account\u2019s code to memory\nInput: address | destOffset | offset | size\nOutput: -", "tooltip": "Copy an account\u2019s code to memory", "url": "https://www.evm.codes/#3c" }; case "RETURNDATASIZE": return { "html": "Get size of output data from the previous call from the current environment\nInput: -\nOutput: size", "tooltip": "Get size of output data from the previous call from the current environment", "url": "https://www.evm.codes/#3d" }; case "RETURNDATACOPY": return { "html": "Copy output data from the previous call to memory\nInput: destOffset | offset | size\nOutput: -", "tooltip": "Copy output data from the previous call to memory", "url": "https://www.evm.codes/#3e" }; case "EXTCODEHASH": return { "html": "Get hash of an account\u2019s code\nInput: address\nOutput: hash", "tooltip": "Get hash of an account\u2019s code", "url": "https://www.evm.codes/#3f" }; case "BLOCKHASH": return { "html": "Get the hash of one of the 256 most recent complete blocks\nInput: blockNumber\nOutput: hash", "tooltip": "Get the hash of one of the 256 most recent complete blocks", "url": "https://www.evm.codes/#40" }; case "COINBASE": return { "html": "Get the block\u2019s beneficiary address\nInput: -\nOutput: address", "tooltip": "Get the block\u2019s beneficiary address", "url": "https://www.evm.codes/#41" }; case "TIMESTAMP": return { "html": "Get the block\u2019s timestamp\nInput: -\nOutput: timestamp", "tooltip": "Get the block\u2019s timestamp", "url": "https://www.evm.codes/#42" }; case "NUMBER": return { "html": "Get the block\u2019s number\nInput: -\nOutput: blockNumber", "tooltip": "Get the block\u2019s number", "url": "https://www.evm.codes/#43" }; case "DIFFICULTY": return { "html": "Get the block\u2019s difficulty\nInput: -\nOutput: difficulty", "tooltip": "Get the block\u2019s difficulty", "url": "https://www.evm.codes/#44" }; case "GASLIMIT": return { "html": "Get the block\u2019s gas limit\nInput: -\nOutput: gasLimit", "tooltip": "Get the block\u2019s gas limit", "url": "https://www.evm.codes/#45" }; case "CHAINID": return { "html": "Get the chain ID\nInput: -\nOutput: chainId", "tooltip": "Get the chain ID", "url": "https://www.evm.codes/#46" }; case "BASEFEE": return { "html": "Get the base fee\nInput: -\nOutput: baseFee", "tooltip": "Get the base fee", "url": "https://www.evm.codes/#48" }; case "POP": return { "html": "Remove item from stack\nInput: y\nOutput: -", "tooltip": "Remove item from stack", "url": "https://www.evm.codes/#50" }; case "MLOAD": return { "html": "Load word from memory\nInput: offset\nOutput: value", "tooltip": "Load word from memory", "url": "https://www.evm.codes/#51" }; case "MSTORE": return { "html": "Save word to memory\nInput: offset | value\nOutput: -", "tooltip": "Save word to memory", "url": "https://www.evm.codes/#52" }; case "MSTORE8": return { "html": "Save byte to memory\nInput: offset | value\nOutput: -", "tooltip": "Save byte to memory", "url": "https://www.evm.codes/#53" }; case "SLOAD": return { "html": "Load word from storage\nInput: key\nOutput: value", "tooltip": "Load word from storage", "url": "https://www.evm.codes/#54" }; case "SSTORE": return { "html": "Save word to storage\nInput: key | value\nOutput: -", "tooltip": "Save word to storage", "url": "https://www.evm.codes/#55" }; case "JUMP": return { "html": "Alter the program counter\nInput: counter\nOutput: -", "tooltip": "Alter the program counter", "url": "https://www.evm.codes/#56" }; case "JUMPI": return { "html": "Conditionally alter the program counter\nInput: counter | b\nOutput: -", "tooltip": "Conditionally alter the program counter", "url": "https://www.evm.codes/#57" }; case "GETPC": return { "html": "Get the value of the program counter prior to the increment corresponding to this instruction\nInput: -\nOutput: counter", "tooltip": "Get the value of the program counter prior to the increment corresponding to this instruction", "url": "https://www.evm.codes/#58" }; case "MSIZE": return { "html": "Get the size of active memory in bytes\nInput: -\nOutput: size", "tooltip": "Get the size of active memory in bytes", "url": "https://www.evm.codes/#59" }; case "GAS": return { "html": "Get the amount of available gas, including the corresponding reduction for the cost of this instruction\nInput: -\nOutput: gas", "tooltip": "Get the amount of available gas, including the corresponding reduction for the cost of this instruction", "url": "https://www.evm.codes/#5a" }; case "JUMPDEST": return { "html": "Mark a valid destination for jumps\nInput: -\nOutput: -", "tooltip": "Mark a valid destination for jumps", "url": "https://www.evm.codes/#5b" }; case "PUSH1": return { "html": "Place 1 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 1 byte item on stack", "url": "https://www.evm.codes/#60" }; case "PUSH2": return { "html": "Place 2 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 2 byte item on stack", "url": "https://www.evm.codes/#61" }; case "PUSH3": return { "html": "Place 3 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 3 byte item on stack", "url": "https://www.evm.codes/#62" }; case "PUSH4": return { "html": "Place 4 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 4 byte item on stack", "url": "https://www.evm.codes/#63" }; case "PUSH5": return { "html": "Place 5 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 5 byte item on stack", "url": "https://www.evm.codes/#64" }; case "PUSH6": return { "html": "Place 6 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 6 byte item on stack", "url": "https://www.evm.codes/#65" }; case "PUSH7": return { "html": "Place 7 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 7 byte item on stack", "url": "https://www.evm.codes/#66" }; case "PUSH8": return { "html": "Place 8 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 8 byte item on stack", "url": "https://www.evm.codes/#67" }; case "PUSH9": return { "html": "Place 9 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 9 byte item on stack", "url": "https://www.evm.codes/#68" }; case "PUSH10": return { "html": "Place 10 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 10 byte item on stack", "url": "https://www.evm.codes/#69" }; case "PUSH11": return { "html": "Place 11 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 11 byte item on stack", "url": "https://www.evm.codes/#6a" }; case "PUSH12": return { "html": "Place 12 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 12 byte item on stack", "url": "https://www.evm.codes/#6b" }; case "PUSH13": return { "html": "Place 13 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 13 byte item on stack", "url": "https://www.evm.codes/#6c" }; case "PUSH14": return { "html": "Place 14 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 14 byte item on stack", "url": "https://www.evm.codes/#6d" }; case "PUSH15": return { "html": "Place 15 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 15 byte item on stack", "url": "https://www.evm.codes/#6e" }; case "PUSH16": return { "html": "Place 16 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 16 byte item on stack", "url": "https://www.evm.codes/#6f" }; case "PUSH17": return { "html": "Place 17 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 17 byte item on stack", "url": "https://www.evm.codes/#70" }; case "PUSH18": return { "html": "Place 18 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 18 byte item on stack", "url": "https://www.evm.codes/#71" }; case "PUSH19": return { "html": "Place 19 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 19 byte item on stack", "url": "https://www.evm.codes/#72" }; case "PUSH20": return { "html": "Place 20 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 20 byte item on stack", "url": "https://www.evm.codes/#73" }; case "PUSH21": return { "html": "Place 21 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 21 byte item on stack", "url": "https://www.evm.codes/#74" }; case "PUSH22": return { "html": "Place 22 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 22 byte item on stack", "url": "https://www.evm.codes/#75" }; case "PUSH23": return { "html": "Place 23 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 23 byte item on stack", "url": "https://www.evm.codes/#76" }; case "PUSH24": return { "html": "Place 24 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 24 byte item on stack", "url": "https://www.evm.codes/#77" }; case "PUSH25": return { "html": "Place 25 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 25 byte item on stack", "url": "https://www.evm.codes/#78" }; case "PUSH26": return { "html": "Place 26 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 26 byte item on stack", "url": "https://www.evm.codes/#79" }; case "PUSH27": return { "html": "Place 27 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 27 byte item on stack", "url": "https://www.evm.codes/#7a" }; case "PUSH28": return { "html": "Place 28 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 28 byte item on stack", "url": "https://www.evm.codes/#7b" }; case "PUSH29": return { "html": "Place 29 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 29 byte item on stack", "url": "https://www.evm.codes/#7c" }; case "PUSH30": return { "html": "Place 30 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 30 byte item on stack", "url": "https://www.evm.codes/#7d" }; case "PUSH31": return { "html": "Place 31 byte item on stack\nInput: -\nOutput: value", "tooltip": "Place 31 byte item on stack", "url": "https://www.evm.codes/#7e" }; case "PUSH32": return { "html": "Place 32 byte (full word) item on stack\nInput: -\nOutput: value", "tooltip": "Place 32 byte (full word) item on stack", "url": "https://www.evm.codes/#7f" }; case "DUP1": return { "html": "Duplicate 1st stack item\nInput: value\nOutput: value | value", "tooltip": "Duplicate 1st stack item", "url": "https://www.evm.codes/#80" }; case "DUP2": return { "html": "Duplicate 2nd stack item\nInput: a | b\nOutput: b | a | b", "tooltip": "Duplicate 2nd stack item", "url": "https://www.evm.codes/#81" }; case "DUP3": return { "html": "Duplicate 3rd stack item\nInput: a | b | c\nOutput: c | a | b | c", "tooltip": "Duplicate 3rd stack item", "url": "https://www.evm.codes/#82" }; case "DUP4": return { "html": "Duplicate 4th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 4th stack item", "url": "https://www.evm.codes/#83" }; case "DUP5": return { "html": "Duplicate 5th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 5th stack item", "url": "https://www.evm.codes/#84" }; case "DUP6": return { "html": "Duplicate 6th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 6th stack item", "url": "https://www.evm.codes/#85" }; case "DUP7": return { "html": "Duplicate 7th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 7th stack item", "url": "https://www.evm.codes/#86" }; case "DUP8": return { "html": "Duplicate 8th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 8th stack item", "url": "https://www.evm.codes/#87" }; case "DUP9": return { "html": "Duplicate 9th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 9th stack item", "url": "https://www.evm.codes/#88" }; case "DUP10": return { "html": "Duplicate 10th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 10th stack item", "url": "https://www.evm.codes/#89" }; case "DUP11": return { "html": "Duplicate 11th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 11th stack item", "url": "https://www.evm.codes/#8a" }; case "DUP12": return { "html": "Duplicate 12th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 12th stack item", "url": "https://www.evm.codes/#8b" }; case "DUP13": return { "html": "Duplicate 13th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 13th stack item", "url": "https://www.evm.codes/#8c" }; case "DUP14": return { "html": "Duplicate 14th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 14th stack item", "url": "https://www.evm.codes/#8d" }; case "DUP15": return { "html": "Duplicate 15th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 15th stack item", "url": "https://www.evm.codes/#8e" }; case "DUP16": return { "html": "Duplicate 16th stack item\nInput: ... | value\nOutput: value | ... | value", "tooltip": "Duplicate 16th stack item", "url": "https://www.evm.codes/#8f" }; case "SWAP1": return { "html": "Exchange 1st and 2nd stack items\nInput: a | b\nOutput: b | a", "tooltip": "Exchange 1st and 2nd stack items", "url": "https://www.evm.codes/#90" }; case "SWAP2": return { "html": "Exchange 1st and 3rd stack items\nInput: a | b | c\nOutput: c | b | a", "tooltip": "Exchange 1st and 3rd stack items", "url": "https://www.evm.codes/#91" }; case "SWAP3": return { "html": "Exchange 1st and 4th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 4th stack items", "url": "https://www.evm.codes/#92" }; case "SWAP4": return { "html": "Exchange 1st and 5th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 5th stack items", "url": "https://www.evm.codes/#93" }; case "SWAP5": return { "html": "Exchange 1st and 6th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 6th stack items", "url": "https://www.evm.codes/#94" }; case "SWAP6": return { "html": "Exchange 1st and 7th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 7th stack items", "url": "https://www.evm.codes/#95" }; case "SWAP7": return { "html": "Exchange 1st and 8th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 8th stack items", "url": "https://www.evm.codes/#96" }; case "SWAP8": return { "html": "Exchange 1st and 9th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 9th stack items", "url": "https://www.evm.codes/#97" }; case "SWAP9": return { "html": "Exchange 1st and 10th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 10th stack items", "url": "https://www.evm.codes/#98" }; case "SWAP10": return { "html": "Exchange 1st and 11th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 11th stack items", "url": "https://www.evm.codes/#99" }; case "SWAP11": return { "html": "Exchange 1st and 12th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 12th stack items", "url": "https://www.evm.codes/#9a" }; case "SWAP12": return { "html": "Exchange 1st and 13th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 13th stack items", "url": "https://www.evm.codes/#9b" }; case "SWAP13": return { "html": "Exchange 1st and 14th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 14th stack items", "url": "https://www.evm.codes/#9c" }; case "SWAP14": return { "html": "Exchange 1st and 15th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 15th stack items", "url": "https://www.evm.codes/#9d" }; case "SWAP15": return { "html": "Exchange 1st and 16th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 16th stack items", "url": "https://www.evm.codes/#9e" }; case "SWAP16": return { "html": "Exchange 1st and 17th stack items\nInput: a | ... | b\nOutput: b | ... | a", "tooltip": "Exchange 1st and 17th stack items", "url": "https://www.evm.codes/#9f" }; case "LOG0": return { "html": "Append log record with no topics\nInput: offset | size\nOutput: -", "tooltip": "Append log record with no topics", "url": "https://www.evm.codes/#a0" }; case "LOG1": return { "html": "Append log record with one topic\nInput: offset | size | topic\nOutput: -", "tooltip": "Append log record with one topic", "url": "https://www.evm.codes/#a1" }; case "LOG2": return { "html": "Append log record with two topics\nInput: offset | size | topic1 | topic2\nOutput: -", "tooltip": "Append log record with two topics", "url": "https://www.evm.codes/#a2" }; case "LOG3": return { "html": "Append log record with three topics\nInput: offset | size | topic1 | topic2 | topic3\nOutput: -", "tooltip": "Append log record with three topics", "url": "https://www.evm.codes/#a3" }; case "LOG4": return { "html": "Append log record with four topics\nInput: offset | size | topic1 | topic2 | topic3 | topic4\nOutput: -", "tooltip": "Append log record with four topics", "url": "https://www.evm.codes/#a4" }; case "SLOADBYTES": return { "html": "\nInput: -\nOutput: -", "tooltip": "", "url": "https://www.evm.codes/#e1" }; case "SSTOREBYTES": return { "html": "\nInput: -\nOutput: -", "tooltip": "", "url": "https://www.evm.codes/#e2" }; case "SSIZE": return { "html": "\nInput: -\nOutput: -", "tooltip": "", "url": "https://www.evm.codes/#e3" }; case "CREATE": return { "html": "Create a new account with associated code\nInput: value | offset | size\nOutput: address", "tooltip": "Create a new account with associated code", "url": "https://www.evm.codes/#f0" }; case "CALL": return { "html": "Message-call into an account\nInput: gas | address | value | argsOffset | argsSize | retOffset | retSize\nOutput: success", "tooltip": "Message-call into an account", "url": "https://www.evm.codes/#f1" }; case "CALLCODE": return { "html": "Message-call into this account with alternative account\u2019s code\nInput: gas | address | value | argsOffset | argsSize | retOffset | retSize\nOutput: success", "tooltip": "Message-call into this account with alternative account\u2019s code", "url": "https://www.evm.codes/#f2" }; case "RETURN": return { "html": "Halt execution returning output data\nInput: offset | size\nOutput: -", "tooltip": "Halt execution returning output data", "url": "https://www.evm.codes/#f3" }; case "DELEGATECALL": return { "html": "Message-call into this account with an alternative account\u2019s code, but persisting the current values for sender and value\nInput: gas | address | argsOffset | argsSize | retOffset | retSize\nOutput: success", "tooltip": "Message-call into this account with an alternative account\u2019s code, but persisting the current values for sender and value", "url": "https://www.evm.codes/#f4" }; case "STATICCALL": return { "html": "Static message-call into an account\nInput: gas | address | argsOffset | argsSize | retOffset | retSize\nOutput: success", "tooltip": "Static message-call into an account", "url": "https://www.evm.codes/#fa" }; case "TXEXECGAS": return { "html": "\nInput: -\nOutput: -", "tooltip": "", "url": "https://www.evm.codes/#fc" }; case "REVERT": return { "html": "Halt execution reverting state changes but returning data and remaining gas\nInput: offset | size\nOutput: -", "tooltip": "Halt execution reverting state changes but returning data and remaining gas", "url": "https://www.evm.codes/#fd" }; case "INVALID": return { "html": "Designated invalid instruction\nInput: -\nOutput: -", "tooltip": "Designated invalid instruction", "url": "https://www.evm.codes/#fe" }; } }