Packages

Bytecode definitions, serialization and deserialization for aeternity.

Current section

Files

Jump to
aebytecode src aeb_fate_opcodes.erl
Raw

src/aeb_fate_opcodes.erl

%%%-------------------------------------------------------------------
%%% @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}).