%%%------------------------------------------------------------------- %%% @copyright (C) 2019, Aeternity Anstalt %%% %%% === === N O T E : This file is generated do not edit. === === %%% %%% Source is in aeb_fate_generate_ops.erl %%% @doc %%% Provides opcode primitives. %%% @end %%%------------------------------------------------------------------- -module(aeb_fate_opcodes). -export([ args/1 , end_bb/1 , in_auth/1 , allowed_offchain/1 , mnemonic/1 , m_to_op/1 , gas_cost/1 ]). -include_lib("aebytecode/include/aeb_fate_opcodes.hrl"). %%==================================================================== %% API %%==================================================================== %% FATE mnemonics mnemonic( ?RETURN) -> 'RETURN' ; mnemonic( ?RETURNR) -> 'RETURNR' ; mnemonic( ?CALL) -> 'CALL' ; mnemonic( ?CALL_R) -> 'CALL_R' ; mnemonic( ?CALL_T) -> 'CALL_T' ; mnemonic( ?CALL_GR) -> 'CALL_GR' ; mnemonic( ?JUMP) -> 'JUMP' ; mnemonic( ?JUMPIF) -> 'JUMPIF' ; mnemonic( ?SWITCH_V2) -> 'SWITCH_V2' ; mnemonic( ?SWITCH_V3) -> 'SWITCH_V3' ; mnemonic( ?SWITCH_VN) -> 'SWITCH_VN' ; mnemonic( ?CALL_VALUE) -> 'CALL_VALUE' ; mnemonic( ?PUSH) -> 'PUSH' ; mnemonic( ?DUPA) -> 'DUPA' ; mnemonic( ?DUP) -> 'DUP' ; mnemonic( ?POP) -> 'POP' ; mnemonic( ?INCA) -> 'INCA' ; mnemonic( ?INC) -> 'INC' ; mnemonic( ?DECA) -> 'DECA' ; mnemonic( ?DEC) -> 'DEC' ; mnemonic( ?ADD) -> 'ADD' ; mnemonic( ?SUB) -> 'SUB' ; mnemonic( ?MUL) -> 'MUL' ; mnemonic( ?DIV) -> 'DIV' ; mnemonic( ?MOD) -> 'MOD' ; mnemonic( ?POW) -> 'POW' ; mnemonic( ?STORE) -> 'STORE' ; mnemonic( ?SHA3) -> 'SHA3' ; mnemonic( ?SHA256) -> 'SHA256' ; mnemonic( ?BLAKE2B) -> 'BLAKE2B' ; mnemonic( ?LT) -> 'LT' ; mnemonic( ?GT) -> 'GT' ; mnemonic( ?EQ) -> 'EQ' ; mnemonic( ?ELT) -> 'ELT' ; mnemonic( ?EGT) -> 'EGT' ; mnemonic( ?NEQ) -> 'NEQ' ; mnemonic( ?AND) -> 'AND' ; mnemonic( ?OR) -> 'OR' ; mnemonic( ?NOT) -> 'NOT' ; mnemonic( ?TUPLE) -> 'TUPLE' ; mnemonic( ?ELEMENT) -> 'ELEMENT' ; mnemonic( ?SETELEMENT) -> 'SETELEMENT' ; mnemonic( ?MAP_EMPTY) -> 'MAP_EMPTY' ; mnemonic( ?MAP_LOOKUP) -> 'MAP_LOOKUP' ; mnemonic( ?MAP_LOOKUPD) -> 'MAP_LOOKUPD' ; mnemonic( ?MAP_UPDATE) -> 'MAP_UPDATE' ; mnemonic( ?MAP_DELETE) -> 'MAP_DELETE' ; mnemonic( ?MAP_MEMBER) -> 'MAP_MEMBER' ; mnemonic( ?MAP_FROM_LIST) -> 'MAP_FROM_LIST' ; mnemonic( ?MAP_SIZE) -> 'MAP_SIZE' ; mnemonic( ?MAP_TO_LIST) -> 'MAP_TO_LIST' ; mnemonic( ?IS_NIL) -> 'IS_NIL' ; mnemonic( ?CONS) -> 'CONS' ; mnemonic( ?HD) -> 'HD' ; mnemonic( ?TL) -> 'TL' ; mnemonic( ?LENGTH) -> 'LENGTH' ; mnemonic( ?NIL) -> 'NIL' ; mnemonic( ?APPEND) -> 'APPEND' ; mnemonic( ?STR_JOIN) -> 'STR_JOIN' ; mnemonic( ?INT_TO_STR) -> 'INT_TO_STR' ; mnemonic( ?ADDR_TO_STR) -> 'ADDR_TO_STR' ; mnemonic( ?STR_REVERSE) -> 'STR_REVERSE' ; mnemonic( ?STR_LENGTH) -> 'STR_LENGTH' ; mnemonic( ?BYTES_TO_INT) -> 'BYTES_TO_INT' ; mnemonic( ?BYTES_TO_STR) -> 'BYTES_TO_STR' ; mnemonic( ?BYTES_CONCAT) -> 'BYTES_CONCAT' ; mnemonic( ?BYTES_SPLIT) -> 'BYTES_SPLIT' ; mnemonic( ?INT_TO_ADDR) -> 'INT_TO_ADDR' ; mnemonic( ?VARIANT) -> 'VARIANT' ; mnemonic( ?VARIANT_TEST) -> 'VARIANT_TEST' ; mnemonic( ?VARIANT_ELEMENT) -> 'VARIANT_ELEMENT' ; mnemonic( ?BITS_NONEA) -> 'BITS_NONEA' ; mnemonic( ?BITS_NONE) -> 'BITS_NONE' ; mnemonic( ?BITS_ALLA) -> 'BITS_ALLA' ; mnemonic( ?BITS_ALL) -> 'BITS_ALL' ; mnemonic( ?BITS_ALL_N) -> 'BITS_ALL_N' ; mnemonic( ?BITS_SET) -> 'BITS_SET' ; mnemonic( ?BITS_CLEAR) -> 'BITS_CLEAR' ; mnemonic( ?BITS_TEST) -> 'BITS_TEST' ; mnemonic( ?BITS_SUM) -> 'BITS_SUM' ; mnemonic( ?BITS_OR) -> 'BITS_OR' ; mnemonic( ?BITS_AND) -> 'BITS_AND' ; mnemonic( ?BITS_DIFF) -> 'BITS_DIFF' ; mnemonic( ?BALANCE) -> 'BALANCE' ; mnemonic( ?ORIGIN) -> 'ORIGIN' ; mnemonic( ?CALLER) -> 'CALLER' ; mnemonic( ?BLOCKHASH) -> 'BLOCKHASH' ; mnemonic( ?BENEFICIARY) -> 'BENEFICIARY' ; mnemonic( ?TIMESTAMP) -> 'TIMESTAMP' ; mnemonic( ?GENERATION) -> 'GENERATION' ; mnemonic( ?MICROBLOCK) -> 'MICROBLOCK' ; mnemonic( ?DIFFICULTY) -> 'DIFFICULTY' ; mnemonic( ?GASLIMIT) -> 'GASLIMIT' ; mnemonic( ?GAS) -> 'GAS' ; mnemonic( ?ADDRESS) -> 'ADDRESS' ; mnemonic( ?GASPRICE) -> 'GASPRICE' ; mnemonic( ?LOG0) -> 'LOG0' ; mnemonic( ?LOG1) -> 'LOG1' ; mnemonic( ?LOG2) -> 'LOG2' ; mnemonic( ?LOG3) -> 'LOG3' ; mnemonic( ?LOG4) -> 'LOG4' ; mnemonic( ?SPEND) -> 'SPEND' ; mnemonic( ?ORACLE_REGISTER) -> 'ORACLE_REGISTER' ; mnemonic( ?ORACLE_QUERY) -> 'ORACLE_QUERY' ; mnemonic( ?ORACLE_RESPOND) -> 'ORACLE_RESPOND' ; mnemonic( ?ORACLE_EXTEND) -> 'ORACLE_EXTEND' ; mnemonic( ?ORACLE_GET_ANSWER) -> 'ORACLE_GET_ANSWER' ; mnemonic( ?ORACLE_GET_QUESTION) -> 'ORACLE_GET_QUESTION' ; mnemonic( ?ORACLE_QUERY_FEE) -> 'ORACLE_QUERY_FEE' ; mnemonic( ?AENS_RESOLVE) -> 'AENS_RESOLVE' ; mnemonic( ?AENS_PRECLAIM) -> 'AENS_PRECLAIM' ; mnemonic( ?AENS_CLAIM) -> 'AENS_CLAIM' ; mnemonic( ?AENS_UPDATE) -> 'AENS_UPDATE' ; mnemonic( ?AENS_TRANSFER) -> 'AENS_TRANSFER' ; mnemonic( ?AENS_REVOKE) -> 'AENS_REVOKE' ; mnemonic( ?BALANCE_OTHER) -> 'BALANCE_OTHER' ; mnemonic( ?VERIFY_SIG) -> 'VERIFY_SIG' ; mnemonic( ?VERIFY_SIG_SECP256K1) -> 'VERIFY_SIG_SECP256K1' ; mnemonic( ?CONTRACT_TO_ADDRESS) -> 'CONTRACT_TO_ADDRESS' ; mnemonic( ?AUTH_TX_HASH) -> 'AUTH_TX_HASH' ; mnemonic( ?ORACLE_CHECK) -> 'ORACLE_CHECK' ; mnemonic( ?ORACLE_CHECK_QUERY) -> 'ORACLE_CHECK_QUERY' ; mnemonic( ?IS_ORACLE) -> 'IS_ORACLE' ; mnemonic( ?IS_CONTRACT) -> 'IS_CONTRACT' ; mnemonic( ?IS_PAYABLE) -> 'IS_PAYABLE' ; mnemonic( ?CREATOR) -> 'CREATOR' ; mnemonic( ?ECVERIFY_SECP256K1) -> 'ECVERIFY_SECP256K1' ; mnemonic( ?ECRECOVER_SECP256K1) -> 'ECRECOVER_SECP256K1' ; mnemonic( ?DEACTIVATE) -> 'DEACTIVATE' ; mnemonic( ?ABORT) -> 'ABORT' ; mnemonic( ?EXIT) -> 'EXIT' ; mnemonic( ?NOP) -> 'NOP' ; mnemonic(Op) -> exit({bad_opcode, Op}). %% FATE opcodes m_to_op( 'RETURN') -> ?RETURN ; m_to_op( 'RETURNR') -> ?RETURNR ; m_to_op( 'CALL') -> ?CALL ; m_to_op( 'CALL_R') -> ?CALL_R ; m_to_op( 'CALL_T') -> ?CALL_T ; m_to_op( 'CALL_GR') -> ?CALL_GR ; m_to_op( 'JUMP') -> ?JUMP ; m_to_op( 'JUMPIF') -> ?JUMPIF ; m_to_op( 'SWITCH_V2') -> ?SWITCH_V2 ; m_to_op( 'SWITCH_V3') -> ?SWITCH_V3 ; m_to_op( 'SWITCH_VN') -> ?SWITCH_VN ; m_to_op( 'CALL_VALUE') -> ?CALL_VALUE ; m_to_op( 'PUSH') -> ?PUSH ; m_to_op( 'DUPA') -> ?DUPA ; m_to_op( 'DUP') -> ?DUP ; m_to_op( 'POP') -> ?POP ; m_to_op( 'INCA') -> ?INCA ; m_to_op( 'INC') -> ?INC ; m_to_op( 'DECA') -> ?DECA ; m_to_op( 'DEC') -> ?DEC ; m_to_op( 'ADD') -> ?ADD ; m_to_op( 'SUB') -> ?SUB ; m_to_op( 'MUL') -> ?MUL ; m_to_op( 'DIV') -> ?DIV ; m_to_op( 'MOD') -> ?MOD ; m_to_op( 'POW') -> ?POW ; m_to_op( 'STORE') -> ?STORE ; m_to_op( 'SHA3') -> ?SHA3 ; m_to_op( 'SHA256') -> ?SHA256 ; m_to_op( 'BLAKE2B') -> ?BLAKE2B ; m_to_op( 'LT') -> ?LT ; m_to_op( 'GT') -> ?GT ; m_to_op( 'EQ') -> ?EQ ; m_to_op( 'ELT') -> ?ELT ; m_to_op( 'EGT') -> ?EGT ; m_to_op( 'NEQ') -> ?NEQ ; m_to_op( 'AND') -> ?AND ; m_to_op( 'OR') -> ?OR ; m_to_op( 'NOT') -> ?NOT ; m_to_op( 'TUPLE') -> ?TUPLE ; m_to_op( 'ELEMENT') -> ?ELEMENT ; m_to_op( 'SETELEMENT') -> ?SETELEMENT ; m_to_op( 'MAP_EMPTY') -> ?MAP_EMPTY ; m_to_op( 'MAP_LOOKUP') -> ?MAP_LOOKUP ; m_to_op( 'MAP_LOOKUPD') -> ?MAP_LOOKUPD ; m_to_op( 'MAP_UPDATE') -> ?MAP_UPDATE ; m_to_op( 'MAP_DELETE') -> ?MAP_DELETE ; m_to_op( 'MAP_MEMBER') -> ?MAP_MEMBER ; m_to_op( 'MAP_FROM_LIST') -> ?MAP_FROM_LIST ; m_to_op( 'MAP_SIZE') -> ?MAP_SIZE ; m_to_op( 'MAP_TO_LIST') -> ?MAP_TO_LIST ; m_to_op( 'IS_NIL') -> ?IS_NIL ; m_to_op( 'CONS') -> ?CONS ; m_to_op( 'HD') -> ?HD ; m_to_op( 'TL') -> ?TL ; m_to_op( 'LENGTH') -> ?LENGTH ; m_to_op( 'NIL') -> ?NIL ; m_to_op( 'APPEND') -> ?APPEND ; m_to_op( 'STR_JOIN') -> ?STR_JOIN ; m_to_op( 'INT_TO_STR') -> ?INT_TO_STR ; m_to_op( 'ADDR_TO_STR') -> ?ADDR_TO_STR ; m_to_op( 'STR_REVERSE') -> ?STR_REVERSE ; m_to_op( 'STR_LENGTH') -> ?STR_LENGTH ; m_to_op( 'BYTES_TO_INT') -> ?BYTES_TO_INT ; m_to_op( 'BYTES_TO_STR') -> ?BYTES_TO_STR ; m_to_op( 'BYTES_CONCAT') -> ?BYTES_CONCAT ; m_to_op( 'BYTES_SPLIT') -> ?BYTES_SPLIT ; m_to_op( 'INT_TO_ADDR') -> ?INT_TO_ADDR ; m_to_op( 'VARIANT') -> ?VARIANT ; m_to_op( 'VARIANT_TEST') -> ?VARIANT_TEST ; m_to_op( 'VARIANT_ELEMENT') -> ?VARIANT_ELEMENT ; m_to_op( 'BITS_NONEA') -> ?BITS_NONEA ; m_to_op( 'BITS_NONE') -> ?BITS_NONE ; m_to_op( 'BITS_ALLA') -> ?BITS_ALLA ; m_to_op( 'BITS_ALL') -> ?BITS_ALL ; m_to_op( 'BITS_ALL_N') -> ?BITS_ALL_N ; m_to_op( 'BITS_SET') -> ?BITS_SET ; m_to_op( 'BITS_CLEAR') -> ?BITS_CLEAR ; m_to_op( 'BITS_TEST') -> ?BITS_TEST ; m_to_op( 'BITS_SUM') -> ?BITS_SUM ; m_to_op( 'BITS_OR') -> ?BITS_OR ; m_to_op( 'BITS_AND') -> ?BITS_AND ; m_to_op( 'BITS_DIFF') -> ?BITS_DIFF ; m_to_op( 'BALANCE') -> ?BALANCE ; m_to_op( 'ORIGIN') -> ?ORIGIN ; m_to_op( 'CALLER') -> ?CALLER ; m_to_op( 'BLOCKHASH') -> ?BLOCKHASH ; m_to_op( 'BENEFICIARY') -> ?BENEFICIARY ; m_to_op( 'TIMESTAMP') -> ?TIMESTAMP ; m_to_op( 'GENERATION') -> ?GENERATION ; m_to_op( 'MICROBLOCK') -> ?MICROBLOCK ; m_to_op( 'DIFFICULTY') -> ?DIFFICULTY ; m_to_op( 'GASLIMIT') -> ?GASLIMIT ; m_to_op( 'GAS') -> ?GAS ; m_to_op( 'ADDRESS') -> ?ADDRESS ; m_to_op( 'GASPRICE') -> ?GASPRICE ; m_to_op( 'LOG0') -> ?LOG0 ; m_to_op( 'LOG1') -> ?LOG1 ; m_to_op( 'LOG2') -> ?LOG2 ; m_to_op( 'LOG3') -> ?LOG3 ; m_to_op( 'LOG4') -> ?LOG4 ; m_to_op( 'SPEND') -> ?SPEND ; m_to_op( 'ORACLE_REGISTER') -> ?ORACLE_REGISTER ; m_to_op( 'ORACLE_QUERY') -> ?ORACLE_QUERY ; m_to_op( 'ORACLE_RESPOND') -> ?ORACLE_RESPOND ; m_to_op( 'ORACLE_EXTEND') -> ?ORACLE_EXTEND ; m_to_op( 'ORACLE_GET_ANSWER') -> ?ORACLE_GET_ANSWER ; m_to_op( 'ORACLE_GET_QUESTION') -> ?ORACLE_GET_QUESTION ; m_to_op( 'ORACLE_QUERY_FEE') -> ?ORACLE_QUERY_FEE ; m_to_op( 'AENS_RESOLVE') -> ?AENS_RESOLVE ; m_to_op( 'AENS_PRECLAIM') -> ?AENS_PRECLAIM ; m_to_op( 'AENS_CLAIM') -> ?AENS_CLAIM ; m_to_op( 'AENS_UPDATE') -> ?AENS_UPDATE ; m_to_op( 'AENS_TRANSFER') -> ?AENS_TRANSFER ; m_to_op( 'AENS_REVOKE') -> ?AENS_REVOKE ; m_to_op( 'BALANCE_OTHER') -> ?BALANCE_OTHER ; m_to_op( 'VERIFY_SIG') -> ?VERIFY_SIG ; m_to_op( 'VERIFY_SIG_SECP256K1') -> ?VERIFY_SIG_SECP256K1 ; m_to_op( 'CONTRACT_TO_ADDRESS') -> ?CONTRACT_TO_ADDRESS ; m_to_op( 'AUTH_TX_HASH') -> ?AUTH_TX_HASH ; m_to_op( 'ORACLE_CHECK') -> ?ORACLE_CHECK ; m_to_op( 'ORACLE_CHECK_QUERY') -> ?ORACLE_CHECK_QUERY ; m_to_op( 'IS_ORACLE') -> ?IS_ORACLE ; m_to_op( 'IS_CONTRACT') -> ?IS_CONTRACT ; m_to_op( 'IS_PAYABLE') -> ?IS_PAYABLE ; m_to_op( 'CREATOR') -> ?CREATOR ; m_to_op( 'ECVERIFY_SECP256K1') -> ?ECVERIFY_SECP256K1 ; m_to_op( 'ECRECOVER_SECP256K1') -> ?ECRECOVER_SECP256K1 ; m_to_op( 'DEACTIVATE') -> ?DEACTIVATE ; m_to_op( 'ABORT') -> ?ABORT ; m_to_op( 'EXIT') -> ?EXIT ; m_to_op( 'NOP') -> ?NOP ; m_to_op(M) -> exit({bad_mnemonic, M}). %% FATE numbers of args to op. args( ?RETURN) -> 0 ; args( ?RETURNR) -> 1 ; args( ?CALL) -> 1 ; args( ?CALL_R) -> 5 ; args( ?CALL_T) -> 1 ; args( ?CALL_GR) -> 6 ; args( ?JUMP) -> 1 ; args( ?JUMPIF) -> 2 ; args( ?SWITCH_V2) -> 3 ; args( ?SWITCH_V3) -> 4 ; args( ?SWITCH_VN) -> 2 ; args( ?CALL_VALUE) -> 1 ; args( ?PUSH) -> 1 ; args( ?DUPA) -> 0 ; args( ?DUP) -> 1 ; args( ?POP) -> 1 ; args( ?INCA) -> 0 ; args( ?INC) -> 1 ; args( ?DECA) -> 0 ; args( ?DEC) -> 1 ; args( ?ADD) -> 3 ; args( ?SUB) -> 3 ; args( ?MUL) -> 3 ; args( ?DIV) -> 3 ; args( ?MOD) -> 3 ; args( ?POW) -> 3 ; args( ?STORE) -> 2 ; args( ?SHA3) -> 2 ; args( ?SHA256) -> 2 ; args( ?BLAKE2B) -> 2 ; args( ?LT) -> 3 ; args( ?GT) -> 3 ; args( ?EQ) -> 3 ; args( ?ELT) -> 3 ; args( ?EGT) -> 3 ; args( ?NEQ) -> 3 ; args( ?AND) -> 3 ; args( ?OR) -> 3 ; args( ?NOT) -> 2 ; args( ?TUPLE) -> 2 ; args( ?ELEMENT) -> 3 ; args( ?SETELEMENT) -> 4 ; args( ?MAP_EMPTY) -> 1 ; args( ?MAP_LOOKUP) -> 3 ; args( ?MAP_LOOKUPD) -> 4 ; args( ?MAP_UPDATE) -> 4 ; args( ?MAP_DELETE) -> 3 ; args( ?MAP_MEMBER) -> 3 ; args( ?MAP_FROM_LIST) -> 2 ; args( ?MAP_SIZE) -> 2 ; args( ?MAP_TO_LIST) -> 2 ; args( ?IS_NIL) -> 2 ; args( ?CONS) -> 3 ; args( ?HD) -> 2 ; args( ?TL) -> 2 ; args( ?LENGTH) -> 2 ; args( ?NIL) -> 1 ; args( ?APPEND) -> 3 ; args( ?STR_JOIN) -> 3 ; args( ?INT_TO_STR) -> 2 ; args( ?ADDR_TO_STR) -> 2 ; args( ?STR_REVERSE) -> 2 ; args( ?STR_LENGTH) -> 2 ; args( ?BYTES_TO_INT) -> 2 ; args( ?BYTES_TO_STR) -> 2 ; args( ?BYTES_CONCAT) -> 3 ; args( ?BYTES_SPLIT) -> 3 ; args( ?INT_TO_ADDR) -> 2 ; args( ?VARIANT) -> 4 ; args( ?VARIANT_TEST) -> 3 ; args( ?VARIANT_ELEMENT) -> 3 ; args( ?BITS_NONEA) -> 0 ; args( ?BITS_NONE) -> 1 ; args( ?BITS_ALLA) -> 0 ; args( ?BITS_ALL) -> 1 ; args( ?BITS_ALL_N) -> 2 ; args( ?BITS_SET) -> 3 ; args( ?BITS_CLEAR) -> 3 ; args( ?BITS_TEST) -> 3 ; args( ?BITS_SUM) -> 2 ; args( ?BITS_OR) -> 3 ; args( ?BITS_AND) -> 3 ; args( ?BITS_DIFF) -> 3 ; args( ?BALANCE) -> 1 ; args( ?ORIGIN) -> 1 ; args( ?CALLER) -> 1 ; args( ?BLOCKHASH) -> 2 ; args( ?BENEFICIARY) -> 1 ; args( ?TIMESTAMP) -> 1 ; args( ?GENERATION) -> 1 ; args( ?MICROBLOCK) -> 1 ; args( ?DIFFICULTY) -> 1 ; args( ?GASLIMIT) -> 1 ; args( ?GAS) -> 1 ; args( ?ADDRESS) -> 1 ; args( ?GASPRICE) -> 1 ; args( ?LOG0) -> 1 ; args( ?LOG1) -> 2 ; args( ?LOG2) -> 3 ; args( ?LOG3) -> 4 ; args( ?LOG4) -> 5 ; args( ?SPEND) -> 2 ; args( ?ORACLE_REGISTER) -> 7 ; args( ?ORACLE_QUERY) -> 8 ; args( ?ORACLE_RESPOND) -> 6 ; args( ?ORACLE_EXTEND) -> 3 ; args( ?ORACLE_GET_ANSWER) -> 5 ; args( ?ORACLE_GET_QUESTION) -> 5 ; args( ?ORACLE_QUERY_FEE) -> 2 ; args( ?AENS_RESOLVE) -> 4 ; args( ?AENS_PRECLAIM) -> 3 ; args( ?AENS_CLAIM) -> 5 ; args( ?AENS_UPDATE) -> 0 ; args( ?AENS_TRANSFER) -> 4 ; args( ?AENS_REVOKE) -> 3 ; args( ?BALANCE_OTHER) -> 2 ; args( ?VERIFY_SIG) -> 4 ; args( ?VERIFY_SIG_SECP256K1) -> 4 ; args( ?CONTRACT_TO_ADDRESS) -> 2 ; args( ?AUTH_TX_HASH) -> 1 ; args( ?ORACLE_CHECK) -> 4 ; args( ?ORACLE_CHECK_QUERY) -> 5 ; args( ?IS_ORACLE) -> 2 ; args( ?IS_CONTRACT) -> 2 ; args( ?IS_PAYABLE) -> 2 ; args( ?CREATOR) -> 1 ; args( ?ECVERIFY_SECP256K1) -> 4 ; args( ?ECRECOVER_SECP256K1) -> 3 ; args( ?DEACTIVATE) -> 0 ; args( ?ABORT) -> 1 ; args( ?EXIT) -> 1 ; args( ?NOP) -> 0 ; args(Op) -> exit({bad_opcode, Op}). %% Does FATE Op end a Basic Block? end_bb( ?RETURN) -> true ; end_bb( ?RETURNR) -> true ; end_bb( ?CALL) -> true ; end_bb( ?CALL_R) -> true ; end_bb( ?CALL_T) -> true ; end_bb( ?CALL_GR) -> true ; end_bb( ?JUMP) -> true ; end_bb( ?JUMPIF) -> true ; end_bb( ?SWITCH_V2) -> true ; end_bb( ?SWITCH_V3) -> true ; end_bb( ?SWITCH_VN) -> true ; end_bb( ?CALL_VALUE) -> false ; end_bb( ?PUSH) -> false ; end_bb( ?DUPA) -> false ; end_bb( ?DUP) -> false ; end_bb( ?POP) -> false ; end_bb( ?INCA) -> false ; end_bb( ?INC) -> false ; end_bb( ?DECA) -> false ; end_bb( ?DEC) -> false ; end_bb( ?ADD) -> false ; end_bb( ?SUB) -> false ; end_bb( ?MUL) -> false ; end_bb( ?DIV) -> false ; end_bb( ?MOD) -> false ; end_bb( ?POW) -> false ; end_bb( ?STORE) -> false ; end_bb( ?SHA3) -> false ; end_bb( ?SHA256) -> false ; end_bb( ?BLAKE2B) -> false ; end_bb( ?LT) -> false ; end_bb( ?GT) -> false ; end_bb( ?EQ) -> false ; end_bb( ?ELT) -> false ; end_bb( ?EGT) -> false ; end_bb( ?NEQ) -> false ; end_bb( ?AND) -> false ; end_bb( ?OR) -> false ; end_bb( ?NOT) -> false ; end_bb( ?TUPLE) -> false ; end_bb( ?ELEMENT) -> false ; end_bb( ?SETELEMENT) -> false ; end_bb( ?MAP_EMPTY) -> false ; end_bb( ?MAP_LOOKUP) -> false ; end_bb( ?MAP_LOOKUPD) -> false ; end_bb( ?MAP_UPDATE) -> false ; end_bb( ?MAP_DELETE) -> false ; end_bb( ?MAP_MEMBER) -> false ; end_bb( ?MAP_FROM_LIST) -> false ; end_bb( ?MAP_SIZE) -> false ; end_bb( ?MAP_TO_LIST) -> false ; end_bb( ?IS_NIL) -> false ; end_bb( ?CONS) -> false ; end_bb( ?HD) -> false ; end_bb( ?TL) -> false ; end_bb( ?LENGTH) -> false ; end_bb( ?NIL) -> false ; end_bb( ?APPEND) -> false ; end_bb( ?STR_JOIN) -> false ; end_bb( ?INT_TO_STR) -> false ; end_bb( ?ADDR_TO_STR) -> false ; end_bb( ?STR_REVERSE) -> false ; end_bb( ?STR_LENGTH) -> false ; end_bb( ?BYTES_TO_INT) -> false ; end_bb( ?BYTES_TO_STR) -> false ; end_bb( ?BYTES_CONCAT) -> false ; end_bb( ?BYTES_SPLIT) -> false ; end_bb( ?INT_TO_ADDR) -> false ; end_bb( ?VARIANT) -> false ; end_bb( ?VARIANT_TEST) -> false ; end_bb( ?VARIANT_ELEMENT) -> false ; end_bb( ?BITS_NONEA) -> false ; end_bb( ?BITS_NONE) -> false ; end_bb( ?BITS_ALLA) -> false ; end_bb( ?BITS_ALL) -> false ; end_bb( ?BITS_ALL_N) -> false ; end_bb( ?BITS_SET) -> false ; end_bb( ?BITS_CLEAR) -> false ; end_bb( ?BITS_TEST) -> false ; end_bb( ?BITS_SUM) -> false ; end_bb( ?BITS_OR) -> false ; end_bb( ?BITS_AND) -> false ; end_bb( ?BITS_DIFF) -> false ; end_bb( ?BALANCE) -> false ; end_bb( ?ORIGIN) -> false ; end_bb( ?CALLER) -> false ; end_bb( ?BLOCKHASH) -> false ; end_bb( ?BENEFICIARY) -> false ; end_bb( ?TIMESTAMP) -> false ; end_bb( ?GENERATION) -> false ; end_bb( ?MICROBLOCK) -> false ; end_bb( ?DIFFICULTY) -> false ; end_bb( ?GASLIMIT) -> false ; end_bb( ?GAS) -> false ; end_bb( ?ADDRESS) -> false ; end_bb( ?GASPRICE) -> false ; end_bb( ?LOG0) -> false ; end_bb( ?LOG1) -> false ; end_bb( ?LOG2) -> false ; end_bb( ?LOG3) -> false ; end_bb( ?LOG4) -> false ; end_bb( ?SPEND) -> false ; end_bb( ?ORACLE_REGISTER) -> false ; end_bb( ?ORACLE_QUERY) -> false ; end_bb( ?ORACLE_RESPOND) -> false ; end_bb( ?ORACLE_EXTEND) -> false ; end_bb( ?ORACLE_GET_ANSWER) -> false ; end_bb( ?ORACLE_GET_QUESTION) -> false ; end_bb( ?ORACLE_QUERY_FEE) -> false ; end_bb( ?AENS_RESOLVE) -> false ; end_bb( ?AENS_PRECLAIM) -> false ; end_bb( ?AENS_CLAIM) -> false ; end_bb( ?AENS_UPDATE) -> false ; end_bb( ?AENS_TRANSFER) -> false ; end_bb( ?AENS_REVOKE) -> false ; end_bb( ?BALANCE_OTHER) -> false ; end_bb( ?VERIFY_SIG) -> false ; end_bb( ?VERIFY_SIG_SECP256K1) -> false ; end_bb( ?CONTRACT_TO_ADDRESS) -> false ; end_bb( ?AUTH_TX_HASH) -> false ; end_bb( ?ORACLE_CHECK) -> false ; end_bb( ?ORACLE_CHECK_QUERY) -> false ; end_bb( ?IS_ORACLE) -> false ; end_bb( ?IS_CONTRACT) -> false ; end_bb( ?IS_PAYABLE) -> false ; end_bb( ?CREATOR) -> false ; end_bb( ?ECVERIFY_SECP256K1) -> false ; end_bb( ?ECRECOVER_SECP256K1) -> false ; end_bb( ?DEACTIVATE) -> false ; end_bb( ?ABORT) -> true ; end_bb( ?EXIT) -> true ; end_bb( ?NOP) -> false ; end_bb(_) -> false. %% Is FATE Op allowed in GA Authentication context? in_auth( ?RETURN) -> true ; in_auth( ?RETURNR) -> true ; in_auth( ?CALL) -> true ; in_auth( ?CALL_R) -> false ; in_auth( ?CALL_T) -> true ; in_auth( ?CALL_GR) -> false ; in_auth( ?JUMP) -> true ; in_auth( ?JUMPIF) -> true ; in_auth( ?SWITCH_V2) -> true ; in_auth( ?SWITCH_V3) -> true ; in_auth( ?SWITCH_VN) -> true ; in_auth( ?CALL_VALUE) -> true ; in_auth( ?PUSH) -> true ; in_auth( ?DUPA) -> true ; in_auth( ?DUP) -> true ; in_auth( ?POP) -> true ; in_auth( ?INCA) -> true ; in_auth( ?INC) -> true ; in_auth( ?DECA) -> true ; in_auth( ?DEC) -> true ; in_auth( ?ADD) -> true ; in_auth( ?SUB) -> true ; in_auth( ?MUL) -> true ; in_auth( ?DIV) -> true ; in_auth( ?MOD) -> true ; in_auth( ?POW) -> true ; in_auth( ?STORE) -> true ; in_auth( ?SHA3) -> true ; in_auth( ?SHA256) -> true ; in_auth( ?BLAKE2B) -> true ; in_auth( ?LT) -> true ; in_auth( ?GT) -> true ; in_auth( ?EQ) -> true ; in_auth( ?ELT) -> true ; in_auth( ?EGT) -> true ; in_auth( ?NEQ) -> true ; in_auth( ?AND) -> true ; in_auth( ?OR) -> true ; in_auth( ?NOT) -> true ; in_auth( ?TUPLE) -> true ; in_auth( ?ELEMENT) -> true ; in_auth( ?SETELEMENT) -> true ; in_auth( ?MAP_EMPTY) -> true ; in_auth( ?MAP_LOOKUP) -> true ; in_auth( ?MAP_LOOKUPD) -> true ; in_auth( ?MAP_UPDATE) -> true ; in_auth( ?MAP_DELETE) -> true ; in_auth( ?MAP_MEMBER) -> true ; in_auth( ?MAP_FROM_LIST) -> true ; in_auth( ?MAP_SIZE) -> true ; in_auth( ?MAP_TO_LIST) -> true ; in_auth( ?IS_NIL) -> true ; in_auth( ?CONS) -> true ; in_auth( ?HD) -> true ; in_auth( ?TL) -> true ; in_auth( ?LENGTH) -> true ; in_auth( ?NIL) -> true ; in_auth( ?APPEND) -> true ; in_auth( ?STR_JOIN) -> true ; in_auth( ?INT_TO_STR) -> true ; in_auth( ?ADDR_TO_STR) -> true ; in_auth( ?STR_REVERSE) -> true ; in_auth( ?STR_LENGTH) -> true ; in_auth( ?BYTES_TO_INT) -> true ; in_auth( ?BYTES_TO_STR) -> true ; in_auth( ?BYTES_CONCAT) -> true ; in_auth( ?BYTES_SPLIT) -> true ; in_auth( ?INT_TO_ADDR) -> true ; in_auth( ?VARIANT) -> true ; in_auth( ?VARIANT_TEST) -> true ; in_auth( ?VARIANT_ELEMENT) -> true ; in_auth( ?BITS_NONEA) -> true ; in_auth( ?BITS_NONE) -> true ; in_auth( ?BITS_ALLA) -> true ; in_auth( ?BITS_ALL) -> true ; in_auth( ?BITS_ALL_N) -> true ; in_auth( ?BITS_SET) -> true ; in_auth( ?BITS_CLEAR) -> true ; in_auth( ?BITS_TEST) -> true ; in_auth( ?BITS_SUM) -> true ; in_auth( ?BITS_OR) -> true ; in_auth( ?BITS_AND) -> true ; in_auth( ?BITS_DIFF) -> true ; in_auth( ?BALANCE) -> true ; in_auth( ?ORIGIN) -> true ; in_auth( ?CALLER) -> true ; in_auth( ?BLOCKHASH) -> true ; in_auth( ?BENEFICIARY) -> true ; in_auth( ?TIMESTAMP) -> true ; in_auth( ?GENERATION) -> true ; in_auth( ?MICROBLOCK) -> true ; in_auth( ?DIFFICULTY) -> true ; in_auth( ?GASLIMIT) -> true ; in_auth( ?GAS) -> true ; in_auth( ?ADDRESS) -> true ; in_auth( ?GASPRICE) -> true ; in_auth( ?LOG0) -> true ; in_auth( ?LOG1) -> true ; in_auth( ?LOG2) -> true ; in_auth( ?LOG3) -> true ; in_auth( ?LOG4) -> true ; in_auth( ?SPEND) -> false ; in_auth( ?ORACLE_REGISTER) -> false ; in_auth( ?ORACLE_QUERY) -> false ; in_auth( ?ORACLE_RESPOND) -> false ; in_auth( ?ORACLE_EXTEND) -> false ; in_auth( ?ORACLE_GET_ANSWER) -> false ; in_auth( ?ORACLE_GET_QUESTION) -> false ; in_auth( ?ORACLE_QUERY_FEE) -> false ; in_auth( ?AENS_RESOLVE) -> false ; in_auth( ?AENS_PRECLAIM) -> false ; in_auth( ?AENS_CLAIM) -> false ; in_auth( ?AENS_UPDATE) -> false ; in_auth( ?AENS_TRANSFER) -> false ; in_auth( ?AENS_REVOKE) -> false ; in_auth( ?BALANCE_OTHER) -> true ; in_auth( ?VERIFY_SIG) -> true ; in_auth( ?VERIFY_SIG_SECP256K1) -> true ; in_auth( ?CONTRACT_TO_ADDRESS) -> true ; in_auth( ?AUTH_TX_HASH) -> true ; in_auth( ?ORACLE_CHECK) -> false ; in_auth( ?ORACLE_CHECK_QUERY) -> false ; in_auth( ?IS_ORACLE) -> false ; in_auth( ?IS_CONTRACT) -> false ; in_auth( ?IS_PAYABLE) -> false ; in_auth( ?CREATOR) -> true ; in_auth( ?ECVERIFY_SECP256K1) -> true ; in_auth( ?ECRECOVER_SECP256K1) -> true ; in_auth( ?DEACTIVATE) -> true ; in_auth( ?ABORT) -> true ; in_auth( ?EXIT) -> true ; in_auth( ?NOP) -> true ; in_auth(_) -> false. %% Is FATE Op allowed in a state channel offchain context? allowed_offchain( ?RETURN) -> true ; allowed_offchain( ?RETURNR) -> true ; allowed_offchain( ?CALL) -> true ; allowed_offchain( ?CALL_R) -> true ; allowed_offchain( ?CALL_T) -> true ; allowed_offchain( ?CALL_GR) -> true ; allowed_offchain( ?JUMP) -> true ; allowed_offchain( ?JUMPIF) -> true ; allowed_offchain( ?SWITCH_V2) -> true ; allowed_offchain( ?SWITCH_V3) -> true ; allowed_offchain( ?SWITCH_VN) -> true ; allowed_offchain( ?CALL_VALUE) -> true ; allowed_offchain( ?PUSH) -> true ; allowed_offchain( ?DUPA) -> true ; allowed_offchain( ?DUP) -> true ; allowed_offchain( ?POP) -> true ; allowed_offchain( ?INCA) -> true ; allowed_offchain( ?INC) -> true ; allowed_offchain( ?DECA) -> true ; allowed_offchain( ?DEC) -> true ; allowed_offchain( ?ADD) -> true ; allowed_offchain( ?SUB) -> true ; allowed_offchain( ?MUL) -> true ; allowed_offchain( ?DIV) -> true ; allowed_offchain( ?MOD) -> true ; allowed_offchain( ?POW) -> true ; allowed_offchain( ?STORE) -> true ; allowed_offchain( ?SHA3) -> true ; allowed_offchain( ?SHA256) -> true ; allowed_offchain( ?BLAKE2B) -> true ; allowed_offchain( ?LT) -> true ; allowed_offchain( ?GT) -> true ; allowed_offchain( ?EQ) -> true ; allowed_offchain( ?ELT) -> true ; allowed_offchain( ?EGT) -> true ; allowed_offchain( ?NEQ) -> true ; allowed_offchain( ?AND) -> true ; allowed_offchain( ?OR) -> true ; allowed_offchain( ?NOT) -> true ; allowed_offchain( ?TUPLE) -> true ; allowed_offchain( ?ELEMENT) -> true ; allowed_offchain( ?SETELEMENT) -> true ; allowed_offchain( ?MAP_EMPTY) -> true ; allowed_offchain( ?MAP_LOOKUP) -> true ; allowed_offchain( ?MAP_LOOKUPD) -> true ; allowed_offchain( ?MAP_UPDATE) -> true ; allowed_offchain( ?MAP_DELETE) -> true ; allowed_offchain( ?MAP_MEMBER) -> true ; allowed_offchain( ?MAP_FROM_LIST) -> true ; allowed_offchain( ?MAP_SIZE) -> true ; allowed_offchain( ?MAP_TO_LIST) -> true ; allowed_offchain( ?IS_NIL) -> true ; allowed_offchain( ?CONS) -> true ; allowed_offchain( ?HD) -> true ; allowed_offchain( ?TL) -> true ; allowed_offchain( ?LENGTH) -> true ; allowed_offchain( ?NIL) -> true ; allowed_offchain( ?APPEND) -> true ; allowed_offchain( ?STR_JOIN) -> true ; allowed_offchain( ?INT_TO_STR) -> true ; allowed_offchain( ?ADDR_TO_STR) -> true ; allowed_offchain( ?STR_REVERSE) -> true ; allowed_offchain( ?STR_LENGTH) -> true ; allowed_offchain( ?BYTES_TO_INT) -> true ; allowed_offchain( ?BYTES_TO_STR) -> true ; allowed_offchain( ?BYTES_CONCAT) -> true ; allowed_offchain( ?BYTES_SPLIT) -> true ; allowed_offchain( ?INT_TO_ADDR) -> true ; allowed_offchain( ?VARIANT) -> true ; allowed_offchain( ?VARIANT_TEST) -> true ; allowed_offchain( ?VARIANT_ELEMENT) -> true ; allowed_offchain( ?BITS_NONEA) -> true ; allowed_offchain( ?BITS_NONE) -> true ; allowed_offchain( ?BITS_ALLA) -> true ; allowed_offchain( ?BITS_ALL) -> true ; allowed_offchain( ?BITS_ALL_N) -> true ; allowed_offchain( ?BITS_SET) -> true ; allowed_offchain( ?BITS_CLEAR) -> true ; allowed_offchain( ?BITS_TEST) -> true ; allowed_offchain( ?BITS_SUM) -> true ; allowed_offchain( ?BITS_OR) -> true ; allowed_offchain( ?BITS_AND) -> true ; allowed_offchain( ?BITS_DIFF) -> true ; allowed_offchain( ?BALANCE) -> true ; allowed_offchain( ?ORIGIN) -> true ; allowed_offchain( ?CALLER) -> true ; allowed_offchain( ?BLOCKHASH) -> true ; allowed_offchain( ?BENEFICIARY) -> true ; allowed_offchain( ?TIMESTAMP) -> true ; allowed_offchain( ?GENERATION) -> true ; allowed_offchain( ?MICROBLOCK) -> true ; allowed_offchain( ?DIFFICULTY) -> true ; allowed_offchain( ?GASLIMIT) -> true ; allowed_offchain( ?GAS) -> true ; allowed_offchain( ?ADDRESS) -> true ; allowed_offchain( ?GASPRICE) -> true ; allowed_offchain( ?LOG0) -> true ; allowed_offchain( ?LOG1) -> true ; allowed_offchain( ?LOG2) -> true ; allowed_offchain( ?LOG3) -> true ; allowed_offchain( ?LOG4) -> true ; allowed_offchain( ?SPEND) -> true ; allowed_offchain( ?ORACLE_REGISTER) -> false ; allowed_offchain( ?ORACLE_QUERY) -> false ; allowed_offchain( ?ORACLE_RESPOND) -> false ; allowed_offchain( ?ORACLE_EXTEND) -> false ; allowed_offchain( ?ORACLE_GET_ANSWER) -> true ; allowed_offchain( ?ORACLE_GET_QUESTION) -> true ; allowed_offchain( ?ORACLE_QUERY_FEE) -> true ; allowed_offchain( ?AENS_RESOLVE) -> true ; allowed_offchain( ?AENS_PRECLAIM) -> false ; allowed_offchain( ?AENS_CLAIM) -> false ; allowed_offchain( ?AENS_UPDATE) -> false ; allowed_offchain( ?AENS_TRANSFER) -> false ; allowed_offchain( ?AENS_REVOKE) -> false ; allowed_offchain( ?BALANCE_OTHER) -> true ; allowed_offchain( ?VERIFY_SIG) -> true ; allowed_offchain( ?VERIFY_SIG_SECP256K1) -> true ; allowed_offchain( ?CONTRACT_TO_ADDRESS) -> true ; allowed_offchain( ?AUTH_TX_HASH) -> true ; allowed_offchain( ?ORACLE_CHECK) -> true ; allowed_offchain( ?ORACLE_CHECK_QUERY) -> true ; allowed_offchain( ?IS_ORACLE) -> true ; allowed_offchain( ?IS_CONTRACT) -> true ; allowed_offchain( ?IS_PAYABLE) -> true ; allowed_offchain( ?CREATOR) -> true ; allowed_offchain( ?ECVERIFY_SECP256K1) -> true ; allowed_offchain( ?ECRECOVER_SECP256K1) -> true ; allowed_offchain( ?DEACTIVATE) -> true ; allowed_offchain( ?ABORT) -> true ; allowed_offchain( ?EXIT) -> true ; allowed_offchain( ?NOP) -> true ; allowed_offchain(_) -> false. %% Base cost of operation gas_cost( ?RETURN) -> 10 ; gas_cost( ?RETURNR) -> 10 ; gas_cost( ?CALL) -> 10 ; gas_cost( ?CALL_R) -> 100 ; gas_cost( ?CALL_T) -> 10 ; gas_cost( ?CALL_GR) -> 100 ; gas_cost( ?JUMP) -> 10 ; gas_cost( ?JUMPIF) -> 10 ; gas_cost( ?SWITCH_V2) -> 10 ; gas_cost( ?SWITCH_V3) -> 10 ; gas_cost( ?SWITCH_VN) -> 10 ; gas_cost( ?CALL_VALUE) -> 10 ; gas_cost( ?PUSH) -> 10 ; gas_cost( ?DUPA) -> 10 ; gas_cost( ?DUP) -> 10 ; gas_cost( ?POP) -> 10 ; gas_cost( ?INCA) -> 10 ; gas_cost( ?INC) -> 10 ; gas_cost( ?DECA) -> 10 ; gas_cost( ?DEC) -> 10 ; gas_cost( ?ADD) -> 10 ; gas_cost( ?SUB) -> 10 ; gas_cost( ?MUL) -> 10 ; gas_cost( ?DIV) -> 10 ; gas_cost( ?MOD) -> 10 ; gas_cost( ?POW) -> 10 ; gas_cost( ?STORE) -> 10 ; gas_cost( ?SHA3) -> 40 ; gas_cost( ?SHA256) -> 40 ; gas_cost( ?BLAKE2B) -> 40 ; gas_cost( ?LT) -> 10 ; gas_cost( ?GT) -> 10 ; gas_cost( ?EQ) -> 10 ; gas_cost( ?ELT) -> 10 ; gas_cost( ?EGT) -> 10 ; gas_cost( ?NEQ) -> 10 ; gas_cost( ?AND) -> 10 ; gas_cost( ?OR) -> 10 ; gas_cost( ?NOT) -> 10 ; gas_cost( ?TUPLE) -> 10 ; gas_cost( ?ELEMENT) -> 10 ; gas_cost( ?SETELEMENT) -> 10 ; gas_cost( ?MAP_EMPTY) -> 10 ; gas_cost( ?MAP_LOOKUP) -> 10 ; gas_cost( ?MAP_LOOKUPD) -> 10 ; gas_cost( ?MAP_UPDATE) -> 10 ; gas_cost( ?MAP_DELETE) -> 10 ; gas_cost( ?MAP_MEMBER) -> 10 ; gas_cost( ?MAP_FROM_LIST) -> 10 ; gas_cost( ?MAP_SIZE) -> 10 ; gas_cost( ?MAP_TO_LIST) -> 10 ; gas_cost( ?IS_NIL) -> 10 ; gas_cost( ?CONS) -> 10 ; gas_cost( ?HD) -> 10 ; gas_cost( ?TL) -> 10 ; gas_cost( ?LENGTH) -> 10 ; gas_cost( ?NIL) -> 10 ; gas_cost( ?APPEND) -> 10 ; gas_cost( ?STR_JOIN) -> 10 ; gas_cost( ?INT_TO_STR) -> 10 ; gas_cost( ?ADDR_TO_STR) -> 10 ; gas_cost( ?STR_REVERSE) -> 10 ; gas_cost( ?STR_LENGTH) -> 10 ; gas_cost( ?BYTES_TO_INT) -> 10 ; gas_cost( ?BYTES_TO_STR) -> 10 ; gas_cost( ?BYTES_CONCAT) -> 10 ; gas_cost( ?BYTES_SPLIT) -> 10 ; gas_cost( ?INT_TO_ADDR) -> 10 ; gas_cost( ?VARIANT) -> 10 ; gas_cost( ?VARIANT_TEST) -> 10 ; gas_cost( ?VARIANT_ELEMENT) -> 10 ; gas_cost( ?BITS_NONEA) -> 10 ; gas_cost( ?BITS_NONE) -> 10 ; gas_cost( ?BITS_ALLA) -> 10 ; gas_cost( ?BITS_ALL) -> 10 ; gas_cost( ?BITS_ALL_N) -> 10 ; gas_cost( ?BITS_SET) -> 10 ; gas_cost( ?BITS_CLEAR) -> 10 ; gas_cost( ?BITS_TEST) -> 10 ; gas_cost( ?BITS_SUM) -> 10 ; gas_cost( ?BITS_OR) -> 10 ; gas_cost( ?BITS_AND) -> 10 ; gas_cost( ?BITS_DIFF) -> 10 ; gas_cost( ?BALANCE) -> 10 ; gas_cost( ?ORIGIN) -> 10 ; gas_cost( ?CALLER) -> 10 ; gas_cost( ?BLOCKHASH) -> 10 ; gas_cost( ?BENEFICIARY) -> 10 ; gas_cost( ?TIMESTAMP) -> 10 ; gas_cost( ?GENERATION) -> 10 ; gas_cost( ?MICROBLOCK) -> 10 ; gas_cost( ?DIFFICULTY) -> 10 ; gas_cost( ?GASLIMIT) -> 10 ; gas_cost( ?GAS) -> 10 ; gas_cost( ?ADDRESS) -> 10 ; gas_cost( ?GASPRICE) -> 10 ; gas_cost( ?LOG0) -> 1000 ; gas_cost( ?LOG1) -> 1100 ; gas_cost( ?LOG2) -> 1200 ; gas_cost( ?LOG3) -> 1300 ; gas_cost( ?LOG4) -> 1400 ; gas_cost( ?SPEND) -> 100 ; gas_cost( ?ORACLE_REGISTER) -> 100 ; gas_cost( ?ORACLE_QUERY) -> 100 ; gas_cost( ?ORACLE_RESPOND) -> 100 ; gas_cost( ?ORACLE_EXTEND) -> 100 ; gas_cost( ?ORACLE_GET_ANSWER) -> 100 ; gas_cost( ?ORACLE_GET_QUESTION) -> 100 ; gas_cost( ?ORACLE_QUERY_FEE) -> 100 ; gas_cost( ?AENS_RESOLVE) -> 100 ; gas_cost( ?AENS_PRECLAIM) -> 100 ; gas_cost( ?AENS_CLAIM) -> 100 ; gas_cost( ?AENS_UPDATE) -> 100 ; gas_cost( ?AENS_TRANSFER) -> 100 ; gas_cost( ?AENS_REVOKE) -> 100 ; gas_cost( ?BALANCE_OTHER) -> 50 ; gas_cost( ?VERIFY_SIG) -> 1300 ; gas_cost( ?VERIFY_SIG_SECP256K1) -> 1300 ; gas_cost( ?CONTRACT_TO_ADDRESS) -> 10 ; gas_cost( ?AUTH_TX_HASH) -> 10 ; gas_cost( ?ORACLE_CHECK) -> 100 ; gas_cost( ?ORACLE_CHECK_QUERY) -> 100 ; gas_cost( ?IS_ORACLE) -> 100 ; gas_cost( ?IS_CONTRACT) -> 100 ; gas_cost( ?IS_PAYABLE) -> 100 ; gas_cost( ?CREATOR) -> 10 ; gas_cost( ?ECVERIFY_SECP256K1) -> 1300 ; gas_cost( ?ECRECOVER_SECP256K1) -> 1300 ; gas_cost( ?DEACTIVATE) -> 10 ; gas_cost( ?ABORT) -> 10 ; gas_cost( ?EXIT) -> 10 ; gas_cost( ?NOP) -> 1 ; gas_cost(Op) -> exit({bad_opcode, Op}).