From 4196201bde0df7f5f89c9be5f0bf3f6d6353445d Mon Sep 17 00:00:00 2001
From: pavelkhachatrian
Date: Fri, 16 Jan 2026 14:16:40 +0100
Subject: [PATCH 1/2] Add autocompletion and hover docs for TVM opcodes
---
cp0.json | 67608 +++++++++++++++++++++++++++++++++++++
src/Output.vue | 2 +-
src/monaco/Monaco.vue | 18 +-
src/monaco/env.ts | 5 +
src/monaco/opcodes.ts | 308 +
src/providers/useFift.ts | 22 +-
6 files changed, 67952 insertions(+), 11 deletions(-)
create mode 100644 cp0.json
create mode 100644 src/monaco/opcodes.ts
diff --git a/cp0.json b/cp0.json
new file mode 100644
index 0000000..b99fdb3
--- /dev/null
+++ b/cp0.json
@@ -0,0 +1,67608 @@
+{
+ "$schema": "./schema.json",
+ "aliases": [
+ {
+ "alias_of": "XCHG_0I",
+ "description": "Same as s1 XCHG0.
\n",
+ "doc_fift": "SWAP",
+ "doc_stack": "x y - y x",
+ "mnemonic": "SWAP",
+ "operands": {
+ "i": 1
+ }
+ },
+ {
+ "alias_of": "PUSH",
+ "description": "Same as s0 PUSH.
\n",
+ "doc_fift": "DUP",
+ "doc_stack": "x - x x",
+ "mnemonic": "DUP",
+ "operands": {
+ "i": 0
+ }
+ },
+ {
+ "alias_of": "PUSH",
+ "description": "Same as s1 PUSH.
\n",
+ "doc_fift": "OVER",
+ "doc_stack": "x y - x y x",
+ "mnemonic": "OVER",
+ "operands": {
+ "i": 1
+ }
+ },
+ {
+ "alias_of": "POP",
+ "description": "Same as s0 POP, discards the top-of-stack value.
\n",
+ "doc_fift": "DROP",
+ "doc_stack": "x -",
+ "mnemonic": "DROP",
+ "operands": {
+ "i": 0
+ }
+ },
+ {
+ "alias_of": "POP",
+ "description": "Same as s1 POP.
\n",
+ "doc_fift": "NIP",
+ "doc_stack": "x y - y",
+ "mnemonic": "NIP",
+ "operands": {
+ "i": 1
+ }
+ },
+ {
+ "alias_of": "BLKSWAP",
+ "description": "Rotates the three topmost pairs of stack entries.
\n",
+ "doc_fift": "ROT2\n2ROT",
+ "doc_stack": "a b c d e f - c d e f a b",
+ "mnemonic": "ROT2",
+ "operands": {
+ "i": 1,
+ "j": 3
+ }
+ },
+ {
+ "alias_of": "BLKSWAP",
+ "description": "Rotates the top i+1 stack entries.\nEquivalent to 1 [i+1] BLKSWAP.
\n",
+ "doc_fift": "[i+1] ROLL",
+ "doc_stack": "",
+ "mnemonic": "ROLL",
+ "operands": {
+ "i": 0
+ }
+ },
+ {
+ "alias_of": "BLKSWAP",
+ "description": "Rotates the top i+1 stack entries in the other direction.\nEquivalent to [i+1] 1 BLKSWAP.
\n",
+ "doc_fift": "[i+1] -ROLL\n[i+1] ROLLREV",
+ "doc_stack": "",
+ "mnemonic": "ROLLREV",
+ "operands": {
+ "j": 0
+ }
+ },
+ {
+ "alias_of": "TUPLE",
+ "description": "Pushes the only Tuple t=() of length zero.
\n",
+ "doc_fift": "NIL",
+ "doc_stack": "- t",
+ "mnemonic": "NIL",
+ "operands": {
+ "n": 0
+ }
+ },
+ {
+ "alias_of": "TUPLE",
+ "description": "Creates a singleton t:=(x), i.e., a Tuple of length one.
\n",
+ "doc_fift": "SINGLE",
+ "doc_stack": "x - t",
+ "mnemonic": "SINGLE",
+ "operands": {
+ "n": 1
+ }
+ },
+ {
+ "alias_of": "TUPLE",
+ "description": "Creates pair t:=(x,y).
\n",
+ "doc_fift": "PAIR\nCONS",
+ "doc_stack": "x y - t",
+ "mnemonic": "PAIR",
+ "operands": {
+ "n": 2
+ }
+ },
+ {
+ "alias_of": "TUPLE",
+ "description": "Creates triple t:=(x,y,z).
\n",
+ "doc_fift": "TRIPLE",
+ "doc_stack": "x y z - t",
+ "mnemonic": "TRIPLE",
+ "operands": {
+ "n": 3
+ }
+ },
+ {
+ "alias_of": "INDEX",
+ "description": "Returns the first element of a Tuple.
\n",
+ "doc_fift": "FIRST\nCAR",
+ "doc_stack": "t - x",
+ "mnemonic": "FIRST",
+ "operands": {
+ "k": 0
+ }
+ },
+ {
+ "alias_of": "INDEX",
+ "description": "Returns the second element of a Tuple.
\n",
+ "doc_fift": "SECOND\nCDR",
+ "doc_stack": "t - y",
+ "mnemonic": "SECOND",
+ "operands": {
+ "k": 1
+ }
+ },
+ {
+ "alias_of": "INDEX",
+ "description": "Returns the third element of a Tuple.
\n",
+ "doc_fift": "THIRD",
+ "doc_stack": "t - z",
+ "mnemonic": "THIRD",
+ "operands": {
+ "k": 2
+ }
+ },
+ {
+ "alias_of": "UNTUPLE",
+ "description": "Unpacks a singleton t=(x).
\n",
+ "doc_fift": "UNSINGLE",
+ "doc_stack": "t - x",
+ "mnemonic": "UNSINGLE",
+ "operands": {
+ "n": 1
+ }
+ },
+ {
+ "alias_of": "UNTUPLE",
+ "description": "Unpacks a pair t=(x,y).
\n",
+ "doc_fift": "UNPAIR\nUNCONS",
+ "doc_stack": "t - x y",
+ "mnemonic": "UNPAIR",
+ "operands": {
+ "n": 2
+ }
+ },
+ {
+ "alias_of": "UNTUPLE",
+ "description": "Unpacks a triple t=(x,y,z).
\n",
+ "doc_fift": "UNTRIPLE",
+ "doc_stack": "t - x y z",
+ "mnemonic": "UNTRIPLE",
+ "operands": {
+ "n": 3
+ }
+ },
+ {
+ "alias_of": "UNPACKFIRST",
+ "description": "Checks whether t is a Tuple. If not, throws a type check exception.
\n",
+ "doc_fift": "CHKTUPLE",
+ "doc_stack": "t -",
+ "mnemonic": "CHKTUPLE",
+ "operands": {
+ "k": 0
+ }
+ },
+ {
+ "alias_of": "SETINDEX",
+ "description": "Sets the first component of Tuple t to x and returns the resulting Tuple t'.
\n",
+ "doc_fift": "SETFIRST",
+ "doc_stack": "t x - t'",
+ "mnemonic": "SETFIRST",
+ "operands": {
+ "k": 0
+ }
+ },
+ {
+ "alias_of": "SETINDEX",
+ "description": "Sets the second component of Tuple t to x and returns the resulting Tuple t'.
\n",
+ "doc_fift": "SETSECOND",
+ "doc_stack": "t x - t'",
+ "mnemonic": "SETSECOND",
+ "operands": {
+ "k": 1
+ }
+ },
+ {
+ "alias_of": "SETINDEX",
+ "description": "Sets the third component of Tuple t to x and returns the resulting Tuple t'.
\n",
+ "doc_fift": "SETTHIRD",
+ "doc_stack": "t x - t'",
+ "mnemonic": "SETTHIRD",
+ "operands": {
+ "k": 2
+ }
+ },
+ {
+ "alias_of": "INDEXQ",
+ "description": "Returns the first element of a Tuple.
\n",
+ "doc_fift": "FIRSTQ\nCARQ",
+ "doc_stack": "t - x",
+ "mnemonic": "FIRSTQ",
+ "operands": {
+ "k": 0
+ }
+ },
+ {
+ "alias_of": "INDEXQ",
+ "description": "Returns the second element of a Tuple.
\n",
+ "doc_fift": "SECONDQ\nCDRQ",
+ "doc_stack": "t - y",
+ "mnemonic": "SECONDQ",
+ "operands": {
+ "k": 1
+ }
+ },
+ {
+ "alias_of": "INDEXQ",
+ "description": "Returns the third element of a Tuple.
\n",
+ "doc_fift": "THIRDQ",
+ "doc_stack": "t - z",
+ "mnemonic": "THIRDQ",
+ "operands": {
+ "k": 2
+ }
+ },
+ {
+ "alias_of": "SETINDEXQ",
+ "description": "Sets the first component of Tuple t to x and returns the resulting Tuple t'.
\n",
+ "doc_fift": "SETFIRSTQ",
+ "doc_stack": "t x - t'",
+ "mnemonic": "SETFIRSTQ",
+ "operands": {
+ "k": 0
+ }
+ },
+ {
+ "alias_of": "SETINDEXQ",
+ "description": "Sets the second component of Tuple t to x and returns the resulting Tuple t'.
\n",
+ "doc_fift": "SETSECONDQ",
+ "doc_stack": "t x - t'",
+ "mnemonic": "SETSECONDQ",
+ "operands": {
+ "k": 1
+ }
+ },
+ {
+ "alias_of": "SETINDEXQ",
+ "description": "Sets the third component of Tuple t to x and returns the resulting Tuple t'.
\n",
+ "doc_fift": "SETTHIRDQ",
+ "doc_stack": "t x - t'",
+ "mnemonic": "SETTHIRDQ",
+ "operands": {
+ "k": 2
+ }
+ },
+ {
+ "alias_of": "INDEX2",
+ "description": "Recovers x=(t_2)_1.
\n",
+ "doc_fift": "CADR",
+ "doc_stack": "t - x",
+ "mnemonic": "CADR",
+ "operands": {
+ "i": 1,
+ "j": 0
+ }
+ },
+ {
+ "alias_of": "INDEX2",
+ "description": "Recovers x=(t_2)_2.
\n",
+ "doc_fift": "CDDR",
+ "doc_stack": "t - x",
+ "mnemonic": "CDDR",
+ "operands": {
+ "i": 1,
+ "j": 1
+ }
+ },
+ {
+ "alias_of": "INDEX3",
+ "description": "Recovers x=t_2_2_1.
\n",
+ "doc_fift": "CADDR",
+ "doc_stack": "t - x",
+ "mnemonic": "CADDR",
+ "operands": {
+ "i": 1,
+ "j": 1,
+ "k": 0
+ }
+ },
+ {
+ "alias_of": "INDEX3",
+ "description": "Recovers x=t_2_2_2.
\n",
+ "doc_fift": "CDDDR",
+ "doc_stack": "t - x",
+ "mnemonic": "CDDDR",
+ "operands": {
+ "i": 1,
+ "j": 1,
+ "k": 1
+ }
+ },
+ {
+ "alias_of": "PUSHINT_4",
+ "description": "",
+ "doc_fift": "ZERO\nFALSE",
+ "doc_stack": "- 0",
+ "mnemonic": "ZERO",
+ "operands": {
+ "i": 0
+ }
+ },
+ {
+ "alias_of": "PUSHINT_4",
+ "description": "",
+ "doc_fift": "ONE",
+ "doc_stack": "- 1",
+ "mnemonic": "ONE",
+ "operands": {
+ "i": 1
+ }
+ },
+ {
+ "alias_of": "PUSHINT_4",
+ "description": "",
+ "doc_fift": "TWO",
+ "doc_stack": "- 2",
+ "mnemonic": "TWO",
+ "operands": {
+ "i": 2
+ }
+ },
+ {
+ "alias_of": "PUSHINT_4",
+ "description": "",
+ "doc_fift": "TEN",
+ "doc_stack": "- 10",
+ "mnemonic": "TEN",
+ "operands": {
+ "i": 10
+ }
+ },
+ {
+ "alias_of": "PUSHINT_4",
+ "description": "",
+ "doc_fift": "TRUE",
+ "doc_stack": "- -1",
+ "mnemonic": "TRUE",
+ "operands": {
+ "i": 15
+ }
+ },
+ {
+ "alias_of": "FITS",
+ "description": "Checks whether x is a ''boolean value'' (i.e., either 0 or -1).
\n",
+ "doc_fift": "CHKBOOL",
+ "doc_stack": "x - x",
+ "mnemonic": "CHKBOOL",
+ "operands": {
+ "c": 0
+ }
+ },
+ {
+ "alias_of": "UFITS",
+ "description": "Checks whether x is a binary digit (i.e., zero or one).
\n",
+ "doc_fift": "CHKBIT",
+ "doc_stack": "x - x",
+ "mnemonic": "CHKBIT",
+ "operands": {
+ "c": 0
+ }
+ },
+ {
+ "alias_of": "EQINT",
+ "description": "Checks whether an integer is zero. Corresponds to Forth's 0=.
\n",
+ "doc_fift": "ISZERO",
+ "doc_stack": "x - x=0",
+ "mnemonic": "ISZERO",
+ "operands": {
+ "y": 0
+ }
+ },
+ {
+ "alias_of": "LESSINT",
+ "description": "Checks whether an integer is negative. Corresponds to Forth's 0<.
\n",
+ "doc_fift": "ISNEG",
+ "doc_stack": "x - x<0",
+ "mnemonic": "ISNEG",
+ "operands": {
+ "y": 0
+ }
+ },
+ {
+ "alias_of": "LESSINT",
+ "description": "Checks whether an integer is non-positive.
\n",
+ "doc_fift": "ISNPOS",
+ "doc_stack": "x - x<=0",
+ "mnemonic": "ISNPOS",
+ "operands": {
+ "y": 1
+ }
+ },
+ {
+ "alias_of": "GTINT",
+ "description": "Checks whether an integer is positive. Corresponds to Forth's 0>.
\n",
+ "doc_fift": "ISPOS",
+ "doc_stack": "x - x>0",
+ "mnemonic": "ISPOS",
+ "operands": {
+ "y": 0
+ }
+ },
+ {
+ "alias_of": "GTINT",
+ "description": "Checks whether an integer is non-negative.
\n",
+ "doc_fift": "ISNNEG",
+ "doc_stack": "x - x >=0",
+ "mnemonic": "ISNNEG",
+ "operands": {
+ "y": -1
+ }
+ },
+ {
+ "alias_of": "STSLICECONST",
+ "description": "Stores one binary zero.
\n",
+ "doc_fift": "STZERO",
+ "doc_stack": "b - b'",
+ "mnemonic": "STZERO",
+ "operands": {
+ "sss": "0",
+ "x": 0,
+ "y": 0
+ }
+ },
+ {
+ "alias_of": "STSLICECONST",
+ "description": "Stores one binary one.
\n",
+ "doc_fift": "STONE",
+ "doc_stack": "b - b'",
+ "mnemonic": "STONE",
+ "operands": {
+ "sss": "1",
+ "x": 0,
+ "y": 0
+ }
+ },
+ {
+ "alias_of": "PLDREFIDX",
+ "description": "Preloads the first cell reference of a Slice.
\n",
+ "doc_fift": "PLDREF",
+ "doc_stack": "s - c",
+ "mnemonic": "PLDREF",
+ "operands": {
+ "n": 0
+ }
+ },
+ {
+ "alias_of": "SETCONTARGS_N",
+ "description": "Sets c.nargs to n plus the current depth of c's stack, where 0 <= n <= 14. If c.nargs is already set to a non-negative value, does nothing.
\n",
+ "doc_fift": "[n] SETNUMARGS",
+ "doc_stack": "c - c'",
+ "mnemonic": "SETNUMARGS",
+ "operands": {
+ "r": 0
+ }
+ },
+ {
+ "alias_of": "SETCONTARGS_N",
+ "description": "Pushes 0 <= r <= 15 values x_1...x_r into the stack of (a copy of) the continuation c, starting with x_1. If the final depth of c's stack turns out to be greater than c.nargs, a stack overflow exception is generated.
\n",
+ "doc_fift": "[r] -1 SETCONTARGS",
+ "doc_stack": "x_1 x_2...x_r c - c'",
+ "mnemonic": "SETCONTARGS",
+ "operands": {
+ "n": -1
+ }
+ },
+ {
+ "alias_of": "BLESSARGS",
+ "description": "Also transforms a Slice s into a Continuation c, but sets c.nargs to 0 <= n <= 14.
\n",
+ "doc_fift": "[n] BLESSNUMARGS",
+ "doc_stack": "s - c",
+ "mnemonic": "BLESSNUMARGS",
+ "operands": {
+ "r": 0
+ }
+ },
+ {
+ "alias_of": "PUSHCTR",
+ "description": "Pushes the ''global data root'' cell reference, thus enabling access to persistent smart-contract data.
\n",
+ "doc_fift": "c4 PUSHCTR\nc4 PUSH",
+ "doc_stack": "- x",
+ "mnemonic": "PUSHROOT",
+ "operands": {
+ "i": 4
+ }
+ },
+ {
+ "alias_of": "POPCTR",
+ "description": "Sets the ''global data root'' cell reference, thus allowing modification of persistent smart-contract data.
\n",
+ "doc_fift": "c4 POPCTR\nc4 POP",
+ "doc_stack": "x -",
+ "mnemonic": "POPROOT",
+ "operands": {
+ "i": 4
+ }
+ },
+ {
+ "alias_of": "NULL",
+ "description": "Returns a new empty dictionary.\nIt is an alternative mnemonics for PUSHNULL.
\n",
+ "doc_fift": "NEWDICT",
+ "doc_stack": " - D",
+ "mnemonic": "NEWDICT",
+ "operands": {}
+ },
+ {
+ "alias_of": "ISNULL",
+ "description": "Checks whether dictionary D is empty, and returns -1 or 0 accordingly.\nIt is an alternative mnemonics for ISNULL.
\n",
+ "doc_fift": "DICTEMPTY",
+ "doc_stack": "D - ?",
+ "mnemonic": "DICTEMPTY",
+ "operands": {}
+ },
+ {
+ "alias_of": "STSLICE",
+ "description": "Stores a Slice-represented dictionary s into Builder b.\nIt is actually a synonym for STSLICE.
\n",
+ "doc_fift": "STDICTS\n",
+ "doc_stack": "s b - b'",
+ "mnemonic": "STDICTS",
+ "operands": {}
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the current Unix time as an Integer. If it is impossible to recover the requested value starting from c7, throws a type checking or range checking exception as appropriate.\nEquivalent to 3 GETPARAM.
\n",
+ "doc_fift": "NOW",
+ "doc_stack": " - x",
+ "mnemonic": "NOW",
+ "operands": {
+ "i": 3
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the starting logical time of the current block.\nEquivalent to 4 GETPARAM.
\n",
+ "doc_fift": "BLOCKLT",
+ "doc_stack": " - x",
+ "mnemonic": "BLOCKLT",
+ "operands": {
+ "i": 4
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the logical time of the current transaction.\nEquivalent to 5 GETPARAM.
\n",
+ "doc_fift": "LTIME",
+ "doc_stack": " - x",
+ "mnemonic": "LTIME",
+ "operands": {
+ "i": 5
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the current random seed as an unsigned 256-bit Integer.\nEquivalent to 6 GETPARAM.
\n",
+ "doc_fift": "RANDSEED",
+ "doc_stack": " - x",
+ "mnemonic": "RANDSEED",
+ "operands": {
+ "i": 6
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the remaining balance of the smart contract as a Tuple consisting of an Integer (the remaining Gram balance in nanograms) and a Maybe Cell (a dictionary with 32-bit keys representing the balance of ''extra currencies'').\nEquivalent to 7 GETPARAM.\nNote that RAW primitives such as SENDRAWMSG do not update this field.
\n",
+ "doc_fift": "BALANCE",
+ "doc_stack": " - t",
+ "mnemonic": "BALANCE",
+ "operands": {
+ "i": 7
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the internal address of the current smart contract as a Slice with a MsgAddressInt. If necessary, it can be parsed further using primitives such as PARSEMSGADDR or REWRITESTDADDR.\nEquivalent to 8 GETPARAM.
\n",
+ "doc_fift": "MYADDR",
+ "doc_stack": " - s",
+ "mnemonic": "MYADDR",
+ "operands": {
+ "i": 8
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Returns the Maybe Cell D with the current global configuration dictionary. Equivalent to 9 GETPARAM .
\n",
+ "doc_fift": "CONFIGROOT",
+ "doc_stack": " - D",
+ "mnemonic": "CONFIGROOT",
+ "operands": {
+ "i": 9
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Retrieves code of smart-contract from c7. Equivalent to 10 GETPARAM .
\n",
+ "doc_fift": "MYCODE",
+ "doc_stack": " - c",
+ "mnemonic": "MYCODE",
+ "operands": {
+ "i": 10
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Retrieves value of incoming message from c7. Equivalent to 11 GETPARAM .
\n",
+ "doc_fift": "INCOMINGVALUE",
+ "doc_stack": " - t",
+ "mnemonic": "INCOMINGVALUE",
+ "operands": {
+ "i": 11
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Retrieves value of storage phase fees from c7. Equivalent to 12 GETPARAM .
\n",
+ "doc_fift": "STORAGEFEES",
+ "doc_stack": " - i",
+ "mnemonic": "STORAGEFEES",
+ "operands": {
+ "i": 12
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Retrives PrevBlocksInfo: [last_mc_blocks, prev_key_block] from c7. Equivalent to 13 GETPARAM .
\n",
+ "doc_fift": "PREVBLOCKSINFOTUPLE",
+ "doc_stack": " - t",
+ "mnemonic": "PREVBLOCKSINFOTUPLE",
+ "operands": {
+ "i": 13
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Retrives tuple that contains some config parameters as cell slices. If the parameter is absent from the config, the value is null. Values:
\n\n- 0:
StoragePrices from ConfigParam 18. Not the whole dict, but only the one StoragePrices entry (one which corresponds to the current time).\n\n- 1:
ConfigParam 19 (global id). \n- 2:
ConfigParam 20 (mc gas prices). \n- 3:
ConfigParam 21 (gas prices). \n- 4:
ConfigParam 24 (mc fwd fees). \n- 5:
ConfigParam 25 (fwd fees). \n- 6:
ConfigParam 43 (size limits). \n
\n \n
\n",
+ "doc_fift": "UNPACKEDCONFIGTUPLE",
+ "doc_stack": " - t",
+ "mnemonic": "UNPACKEDCONFIGTUPLE",
+ "operands": {
+ "i": 14
+ }
+ },
+ {
+ "alias_of": "GETPARAM",
+ "description": "Retrives current debt for storage fee (nanotons).
\n",
+ "doc_fift": "DUEPAYMENT",
+ "doc_stack": " - t",
+ "mnemonic": "DUEPAYMENT",
+ "operands": {
+ "i": 15
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives bounce flag of incoming message.
\n",
+ "doc_fift": "INMSG_BOUNCE",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_BOUNCE",
+ "operands": {
+ "i": 0
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives bounced flag of incoming message.
\n",
+ "doc_fift": "INMSG_BOUNCED",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_BOUNCED",
+ "operands": {
+ "i": 1
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives src flag of incoming message.
\n",
+ "doc_fift": "INMSG_SRC",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_SRC",
+ "operands": {
+ "i": 2
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives fwd_fee field of incoming message.
\n",
+ "doc_fift": "INMSG_FWDFEE",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_FWDFEE",
+ "operands": {
+ "i": 3
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives lt field of incoming message.
\n",
+ "doc_fift": "INMSG_LT",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_LT",
+ "operands": {
+ "i": 4
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives utime field of incoming message.
\n",
+ "doc_fift": "INMSG_UTIME",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_UTIME",
+ "operands": {
+ "i": 5
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives original value of the message. This is sometimes different from the value in INCOMINGVALUE and TVM stack because of storage fees.
\n",
+ "doc_fift": "INMSG_ORIGVALUE",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_ORIGVALUE",
+ "operands": {
+ "i": 6
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrives value of the message after deducting storage fees. This is same as in INCOMINGVALUE and TVM stack.
\n",
+ "doc_fift": "INMSG_VALUE",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_VALUE",
+ "operands": {
+ "i": 7
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Same as in INCOMINGVALUE.
\n",
+ "doc_fift": "INMSG_VALUEEXTRA",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_VALUEEXTRA",
+ "operands": {
+ "i": 8
+ }
+ },
+ {
+ "alias_of": "INMSGPARAM",
+ "description": "Retrieves init field of the incoming message.
\n",
+ "doc_fift": "INMSG_STATEINIT",
+ "doc_stack": " - x",
+ "mnemonic": "INMSG_STATEINIT",
+ "operands": {
+ "i": 9
+ }
+ },
+ {
+ "alias_of": "DEBUG",
+ "description": "Dumps the stack (at most the top 255 values) and shows the total stack depth. Does nothing on production versions of TVM.
\n",
+ "doc_fift": "DUMPSTK",
+ "doc_stack": "-",
+ "mnemonic": "DUMPSTK",
+ "operands": {
+ "i": 0,
+ "j": 0
+ }
+ },
+ {
+ "alias_of": "DEBUG",
+ "description": "Dumps slice with length divisible by 8 from top of stack as a string. Does nothing on production versions of TVM.
\n",
+ "doc_fift": "STRDUMP",
+ "doc_stack": "-",
+ "mnemonic": "STRDUMP",
+ "operands": {
+ "i": 1,
+ "j": 4
+ }
+ },
+ {
+ "alias_of": "DEBUG",
+ "description": "Dumps slice with length divisible by 8 from top of stack as a string. Does nothing on production versions of TVM.
\n",
+ "doc_fift": "s[j] DUMP",
+ "doc_stack": "-",
+ "mnemonic": "DUMP",
+ "operands": {
+ "i": 2
+ }
+ },
+ {
+ "alias_of": "SETCP",
+ "description": "Selects TVM (test) codepage zero as described in this document.
\n",
+ "doc_fift": "SETCP0",
+ "doc_stack": "-",
+ "mnemonic": "SETCP0",
+ "operands": {
+ "n": 0
+ }
+ }
+ ],
+ "instructions": [
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "00",
+ "tlb": "#00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Does nothing.
\n",
+ "fift": "NOP",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "00",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_nop",
+ "line": 28,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "NOP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 1,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "0",
+ "tlb": "#0 i:(## 4) {1 <= i}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Interchanges s0 with s[i], 1 <= i <= 15.
\n",
+ "fift": "s[i] XCHG0",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "0i",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg0",
+ "line": 43,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG_0I",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 1,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "10",
+ "tlb": "#10 i:(## 4) j:(## 4) {1 <= i} {i + 1 <= j}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Interchanges s[i] with s[j], 1 <= i < j <= 15.
\n",
+ "fift": "s[i] s[j] XCHG",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "10ij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg",
+ "line": 61,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG_IJ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "i",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "11",
+ "tlb": "#11 ii:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Interchanges s0 with s[ii], 0 <= ii <= 255.
\n",
+ "fift": "s0 [ii] s() XCHG",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "11ii",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg0_l",
+ "line": 52,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG_0I_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 2,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 2,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "1",
+ "tlb": "#1 i:(## 4) {2 <= i}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Interchanges s1 with s[i], 2 <= i <= 15.
\n",
+ "fift": "s1 s[i] XCHG",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "1i",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg1",
+ "line": 83,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG_1I",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "2",
+ "tlb": "#2 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Pushes a copy of the old s[i] into the stack.
\n",
+ "fift": "s[i] PUSH",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "2i",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_push",
+ "line": 109,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUSH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "3",
+ "tlb": "#3 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_basic",
+ "description": "Pops the old s0 value into the old s[i].
\n",
+ "fift": "s[i] POP",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "3i",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_pop",
+ "line": 143,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "POP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "4",
+ "tlb": "#4 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s2 s[i] XCHG s1 s[j] XCHG s[k] XCHG0.
\n",
+ "fift": "s[i] s[j] s[k] XCHG3",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "4ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg3",
+ "line": 204,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG3",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "50",
+ "tlb": "#50 i:uint4 j:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s1 s[i] XCHG s[j] XCHG0.
\n",
+ "fift": "s[i] s[j] XCHG2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "50ij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg2",
+ "line": 163,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "51",
+ "tlb": "#51 i:uint4 j:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] XCHG0 s[j] PUSH.
\n",
+ "fift": "s[i] s[j] XCPU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "51ij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xcpu",
+ "line": 173,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCPU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "52",
+ "tlb": "#52 i:uint4 j:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] PUSH SWAP s[j] XCHG0.
\n",
+ "fift": "s[i] s[j-1] PUXC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "52ij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_puxc",
+ "line": 183,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUXC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "53",
+ "tlb": "#53 i:uint4 j:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] PUSH s[j+1] PUSH.
\n",
+ "fift": "s[i] s[j] PUSH2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "53ij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_push2",
+ "line": 194,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUSH2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "540",
+ "tlb": "#540 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Long form of XCHG3.
\n",
+ "fift": "s[i] s[j] s[k] XCHG3_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "540ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg3",
+ "line": 204,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHG3_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "541",
+ "tlb": "#541 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] s[j] XCHG2 s[k] PUSH.
\n",
+ "fift": "s[i] s[j] s[k] XC2PU",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "541ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xc2pu",
+ "line": 215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XC2PU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "542",
+ "tlb": "#542 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s1 s[i] XCHG s[j] s[k-1] PUXC.
\n",
+ "fift": "s[i] s[j] s[k-1] XCPUXC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "542ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xcpuxc",
+ "line": 226,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCPUXC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "543",
+ "tlb": "#543 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] XCHG0 s[j] s[k] PUSH2.
\n",
+ "fift": "s[i] s[j] s[k] XCPU2",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "543ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xc2pu",
+ "line": 215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCPU2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "544",
+ "tlb": "#544 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] PUSH s2 XCHG0 s[j] s[k] XCHG2.
\n",
+ "fift": "s[i] s[j-1] s[k-1] PUXC2",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "544ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_puxc2",
+ "line": 249,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUXC2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "545",
+ "tlb": "#545 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] s[j-1] PUXC s[k] PUSH.
\n",
+ "fift": "s[i] s[j-1] s[k-1] PUXCPU",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "545ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_puxcpu",
+ "line": 261,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUXCPU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 2
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "546",
+ "tlb": "#546 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] PUSH SWAP s[j] s[k-1] PUXC.
\n",
+ "fift": "s[i] s[j-1] s[k-2] PU2XC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "546ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_puxc2",
+ "line": 249,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PU2XC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "547",
+ "tlb": "#547 i:uint4 j:uint4 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s[i] PUSH s[j+1] s[k+1] PUSH2.
\n",
+ "fift": "s[i] s[j] s[k] PUSH3",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "547ijk",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_push3",
+ "line": 286,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUSH3",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ },
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "55",
+ "tlb": "#55 i:uint4 j:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Permutes two blocks s[j+i+1] ... s[j+1] and s[j] ... s0.\n0 <= i,j <= 15\nEquivalent to [i+1] [j+1] REVERSE [j+1] 0 REVERSE [i+j+2] 0 REVERSE.
\n",
+ "fift": "[i+1] [j+1] BLKSWAP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "55ij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_blkswap",
+ "line": 299,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "BLKSWAP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "i",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "56",
+ "tlb": "#56 ii:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pushes a copy of the old s[ii] into the stack.\n0 <= ii <= 255
\n",
+ "fift": "[ii] s() PUSH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "56ii",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_push_l",
+ "line": 118,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PUSH_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "stack"
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "i",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "57",
+ "tlb": "#57 ii:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops the old s0 value into the old s[ii].\n0 <= ii <= 255
\n",
+ "fift": "[ii] s() POP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "57ii",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_pop_l",
+ "line": 152,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "POP_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "58",
+ "tlb": "#58"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to 1 2 BLKSWAP or to s2 s1 XCHG2.
\n",
+ "fift": "ROT",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "58",
+ "stack": "a b c - b c a"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_rot",
+ "line": 308,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "ROT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "59",
+ "tlb": "#59"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to 2 1 BLKSWAP or to s2 s2 XCHG2.
\n",
+ "fift": "ROTREV\n-ROT",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "59",
+ "stack": "a b c - c a b"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_rotrev",
+ "line": 317,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "ROTREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "5A",
+ "tlb": "#5A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to 2 2 BLKSWAP or to s3 s2 XCHG2.
\n",
+ "fift": "SWAP2\n2SWAP",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "5A",
+ "stack": "a b c d - c d a b"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_2swap",
+ "line": 326,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "SWAP2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "5B",
+ "tlb": "#5B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to DROP DROP.
\n",
+ "fift": "DROP2\n2DROP",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "5B",
+ "stack": "a b - "
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_2drop",
+ "line": 335,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "DROP2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "5C",
+ "tlb": "#5C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s1 s0 PUSH2.
\n",
+ "fift": "DUP2\n2DUP",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "5C",
+ "stack": "a b - a b a b"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_2dup",
+ "line": 344,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "DUP2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "5D",
+ "tlb": "#5D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to s3 s2 PUSH2.
\n",
+ "fift": "OVER2\n2OVER",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "5D",
+ "stack": "a b c d - a b c d a b"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_2over",
+ "line": 353,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "OVER2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "5E",
+ "tlb": "#5E i:uint4 j:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Reverses the order of s[j+i+1] ... s[j].
\n",
+ "fift": "[i+2] [j] REVERSE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "5Eij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_reverse",
+ "line": 362,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "REVERSE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "5F0",
+ "tlb": "#5F0 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to DROP performed i times.
\n",
+ "fift": "[i] BLKDROP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "5F0i",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_blkdrop",
+ "line": 371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "BLKDROP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 1,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "5F",
+ "tlb": "#5F i:(## 4) j:uint4 {1 <= i}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to PUSH s(j) performed i times.\n1 <= i <= 15, 0 <= j <= 15.
\n",
+ "fift": "[i] [j] BLKPUSH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "5Fij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_blkpush",
+ "line": 389,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "BLKPUSH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "60",
+ "tlb": "#60"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then performs s[i] PUSH.
\n",
+ "fift": "PICK\nPUSHX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "60",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_pick",
+ "line": 400,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "PICK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "61",
+ "tlb": "#61"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then performs 1 [i] BLKSWAP.
\n",
+ "fift": "ROLLX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "61",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_roll",
+ "line": 410,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "ROLLX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "62",
+ "tlb": "#62"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then performs [i] 1 BLKSWAP.
\n",
+ "fift": "-ROLLX\nROLLREVX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "62",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_rollrev",
+ "line": 423,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "-ROLLX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "63",
+ "tlb": "#63"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integers i,j from the stack, then performs [i] [j] BLKSWAP.
\n",
+ "fift": "BLKSWX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "63",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_blkswap_x",
+ "line": 436,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "BLKSWX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "64",
+ "tlb": "#64"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integers i,j from the stack, then performs [i] [j] REVERSE.
\n",
+ "fift": "REVX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "64",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_reverse_x",
+ "line": 452,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "REVX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "65",
+ "tlb": "#65"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then performs [i] BLKDROP.
\n",
+ "fift": "DROPX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "65",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_drop_x",
+ "line": 464,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "DROPX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "66",
+ "tlb": "#66"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Equivalent to SWAP OVER or to s1 s1 XCPU.
\n",
+ "fift": "TUCK",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "66",
+ "stack": "a b - b a b"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_tuck",
+ "line": 474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "TUCK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "67",
+ "tlb": "#67"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then performs s[i] XCHG.
\n",
+ "fift": "XCHGX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "67",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_xchg_x",
+ "line": 483,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "XCHGX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "68",
+ "tlb": "#68"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pushes the current depth of the stack.
\n",
+ "fift": "DEPTH",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "68",
+ "stack": "- depth"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_depth",
+ "line": 493,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "DEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "depth",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "69",
+ "tlb": "#69"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then checks whether there are at least i elements, generating a stack underflow exception otherwise.
\n",
+ "fift": "CHKDEPTH",
+ "fift_examples": [],
+ "gas": "18/58",
+ "opcode": "69",
+ "stack": "i -"
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_chkdepth",
+ "line": 500,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "CHKDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6A",
+ "tlb": "#6A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then removes all but the top i elements.
\n",
+ "fift": "ONLYTOPX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "6A",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_onlytop_x",
+ "line": 509,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "ONLYTOPX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6B",
+ "tlb": "#6B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Pops integer i from the stack, then leaves only the bottom i elements. Approximately equivalent to DEPTH SWAP SUB DROPX.
\n",
+ "fift": "ONLYX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "6B",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_only_x",
+ "line": 526,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "ONLYX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 1,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "6C",
+ "tlb": "#6C i:(## 4) j:uint4 {1 <= i}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "stack_complex",
+ "description": "Drops i stack elements under the top j elements.\n1 <= i <= 15, 0 <= j <= 15\nEquivalent to [i+j] 0 REVERSE [i] BLKDROP [j] 0 REVERSE.
\n",
+ "fift": "[i] [j] BLKDROP2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6Cij",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "stackops.cpp",
+ "function_name": "exec_blkdrop2",
+ "line": 380,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/stackops.cpp"
+ }
+ ],
+ "mnemonic": "BLKDROP2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6D",
+ "tlb": "#6D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes the only value of type Null.
\n",
+ "fift": "NULL\nPUSHNULL",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "6D",
+ "stack": " - null"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_push_null",
+ "line": 28,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6E",
+ "tlb": "#6E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Checks whether x is a Null, and returns -1 or 0 accordingly.
\n",
+ "fift": "ISNULL",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "6E",
+ "stack": "x - ?"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_is_null",
+ "line": 34,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "ISNULL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F0",
+ "tlb": "#6F0 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Creates a new Tuple t=(x_1, ... ,x_n) containing n values x_1,..., x_n.\n0 <= n <= 15
\n",
+ "fift": "[n] TUPLE",
+ "fift_examples": [],
+ "gas": "26+n",
+ "opcode": "6F0n",
+ "stack": "x_1 ... x_n - t"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_mktuple_common",
+ "line": 73,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "TUPLE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "n",
+ "name": "tuple_elements",
+ "type": "array"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F1",
+ "tlb": "#6F1 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Returns the k-th element of a Tuple t.\n0 <= k <= 15.
\n",
+ "fift": "[k] INDEX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F1k",
+ "stack": "t - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_index",
+ "line": 106,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "INDEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F2",
+ "tlb": "#6F2 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Unpacks a Tuple t=(x_1,...,x_n) of length equal to 0 <= n <= 15.\nIf t is not a Tuple, or if |t| != n, a type check exception is thrown.
\n",
+ "fift": "[n] UNTUPLE",
+ "fift_examples": [],
+ "gas": "26+n",
+ "opcode": "6F2n",
+ "stack": "t - x_1 ... x_n"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_untuple",
+ "line": 158,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "UNTUPLE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "n",
+ "name": "tuple_elements",
+ "type": "array"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F3",
+ "tlb": "#6F3 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Unpacks first 0 <= k <= 15 elements of a Tuple t.\nIf |t|<k, throws a type check exception.
\n",
+ "fift": "[k] UNPACKFIRST",
+ "fift_examples": [],
+ "gas": "26+k",
+ "opcode": "6F3k",
+ "stack": "t - x_1 ... x_k"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_untuple_first",
+ "line": 175,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "UNPACKFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "k",
+ "name": "tuple_elements",
+ "type": "array"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F4",
+ "tlb": "#6F4 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Unpacks a Tuple t=(x_1,...,x_m) and returns its length m, but only if m <= n <= 15. Otherwise throws a type check exception.
\n",
+ "fift": "[n] EXPLODE",
+ "fift_examples": [],
+ "gas": "26+m",
+ "opcode": "6F4n",
+ "stack": "t - x_1 ... x_m m"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_explode_tuple",
+ "line": 196,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "EXPLODE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "m",
+ "name": "tuple_elements",
+ "type": "array"
+ },
+ {
+ "name": "m",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F5",
+ "tlb": "#6F5 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Computes Tuple t' that differs from t only at position t'_{k+1}, which is set to x.\n0 <= k <= 15\nIf k >= |t|, throws a range check exception.
\n",
+ "fift": "[k] SETINDEX",
+ "fift_examples": [],
+ "gas": "26+|t|",
+ "opcode": "6F5k",
+ "stack": "t x - t'"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_set_index",
+ "line": 222,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "SETINDEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t2",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F6",
+ "tlb": "#6F6 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Returns the k-th element of a Tuple t, where 0 <= k <= 15. In other words, returns x_{k+1} if t=(x_1,...,x_n). If k>=n, or if t is Null, returns a Null instead of x.
\n",
+ "fift": "[k] INDEXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F6k",
+ "stack": "t - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_quiet_index",
+ "line": 124,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "INDEXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple",
+ "Null"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "k",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6F7",
+ "tlb": "#6F7 k:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Sets the k-th component of Tuple t to x, where 0 <= k < 16, and returns the resulting Tuple t'.\nIf |t| <= k, first extends the original Tuple to length n'=k+1 by setting all new components to Null. If the original value of t is Null, treats it as an empty Tuple. If t is not Null or Tuple, throws an exception. If x is Null and either |t| <= k or t is Null, then always returns t'=t (and does not consume tuple creation gas).
\n",
+ "fift": "[k] SETINDEXQ",
+ "fift_examples": [],
+ "gas": "26+|t'|",
+ "opcode": "6F7k",
+ "stack": "t x - t'"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_quiet_set_index",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "SETINDEXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t2",
+ "type": "simple",
+ "value_types": [
+ "Tuple",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F80",
+ "tlb": "#6F80"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Creates a new Tuple t of length n similarly to TUPLE, but with 0 <= n <= 255 taken from the stack.
\n",
+ "fift": "TUPLEVAR",
+ "fift_examples": [],
+ "gas": "26+n",
+ "opcode": "6F80",
+ "stack": "x_1 ... x_n n - t"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_mktuple_var",
+ "line": 94,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "TUPLEVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "n",
+ "name": "tuple_elements",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F81",
+ "tlb": "#6F81"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to k INDEX, but with 0 <= k <= 254 taken from the stack.
\n",
+ "fift": "INDEXVAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F81",
+ "stack": "t k - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_index_var",
+ "line": 112,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "INDEXVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F82",
+ "tlb": "#6F82"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to n UNTUPLE, but with 0 <= n <= 255 taken from the stack.
\n",
+ "fift": "UNTUPLEVAR",
+ "fift_examples": [],
+ "gas": "26+n",
+ "opcode": "6F82",
+ "stack": "t n - x_1 ... x_n"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_untuple_var",
+ "line": 164,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "UNTUPLEVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "n",
+ "name": "tuple_elements",
+ "type": "array"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F83",
+ "tlb": "#6F83"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to n UNPACKFIRST, but with 0 <= n <= 255 taken from the stack.
\n",
+ "fift": "UNPACKFIRSTVAR",
+ "fift_examples": [],
+ "gas": "26+n",
+ "opcode": "6F83",
+ "stack": "t n - x_1 ... x_n"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_untuple_first_var",
+ "line": 181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "UNPACKFIRSTVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "n",
+ "name": "tuple_elements",
+ "type": "array"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F84",
+ "tlb": "#6F84"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to n EXPLODE, but with 0 <= n <= 255 taken from the stack.
\n",
+ "fift": "EXPLODEVAR",
+ "fift_examples": [],
+ "gas": "26+m",
+ "opcode": "6F84",
+ "stack": "t n - x_1 ... x_m m"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_explode_tuple_var",
+ "line": 202,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "EXPLODEVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "m",
+ "name": "tuple_elements",
+ "type": "array"
+ },
+ {
+ "name": "m",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F85",
+ "tlb": "#6F85"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to k SETINDEX, but with 0 <= k <= 254 taken from the stack.
\n",
+ "fift": "SETINDEXVAR",
+ "fift_examples": [],
+ "gas": "26+|t'|",
+ "opcode": "6F85",
+ "stack": "t x k - t'"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_set_index_var",
+ "line": 229,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "SETINDEXVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t2",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F86",
+ "tlb": "#6F86"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to n INDEXQ, but with 0 <= k <= 254 taken from the stack.
\n",
+ "fift": "INDEXVARQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F86",
+ "stack": "t k - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_quiet_index_var",
+ "line": 130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "INDEXVARQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple",
+ "Null"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F87",
+ "tlb": "#6F87"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to k SETINDEXQ, but with 0 <= k <= 254 taken from the stack.
\n",
+ "fift": "SETINDEXVARQ",
+ "fift_examples": [],
+ "gas": "26+|t'|",
+ "opcode": "6F87",
+ "stack": "t x k - t'"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_quiet_set_index_var",
+ "line": 258,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "SETINDEXVARQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t2",
+ "type": "simple",
+ "value_types": [
+ "Tuple",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F88",
+ "tlb": "#6F88"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Returns the length of a Tuple.
\n",
+ "fift": "TLEN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F88",
+ "stack": "t - n"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_length",
+ "line": 265,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "TLEN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F89",
+ "tlb": "#6F89"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Similar to TLEN, but returns -1 if t is not a Tuple.
\n",
+ "fift": "QTLEN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F89",
+ "stack": "t - n or -1"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_length_quiet",
+ "line": 273,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "QTLEN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F8A",
+ "tlb": "#6F8A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Returns -1 or 0 depending on whether t is a Tuple.
\n",
+ "fift": "ISTUPLE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F8A",
+ "stack": "t - ?"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_is_tuple",
+ "line": 281,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "ISTUPLE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F8B",
+ "tlb": "#6F8B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Returns the last element of a non-empty Tuple t.
\n",
+ "fift": "LAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6F8B",
+ "stack": "t - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_last",
+ "line": 288,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "LAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F8C",
+ "tlb": "#6F8C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Appends a value x to a Tuple t=(x_1,...,x_n), but only if the resulting Tuple t'=(x_1,...,x_n,x) is of length at most 255. Otherwise throws a type check exception.
\n",
+ "fift": "TPUSH\nCOMMA",
+ "fift_examples": [],
+ "gas": "26+|t'|",
+ "opcode": "6F8C",
+ "stack": "t x - t'"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_push",
+ "line": 296,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "TPUSH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t2",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6F8D",
+ "tlb": "#6F8D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Detaches the last element x=x_n from a non-empty Tuple t=(x_1,...,x_n), and returns both the resulting Tuple t'=(x_1,...,x_{n-1}) and the original last element x.
\n",
+ "fift": "TPOP",
+ "fift_examples": [],
+ "gas": "26+|t'|",
+ "opcode": "6F8D",
+ "stack": "t - t' x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_pop",
+ "line": 308,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "TPOP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t2",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA0",
+ "tlb": "#6FA0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes a Null under the topmost Integer x, but only if x!=0.
\n",
+ "fift": "NULLSWAPIF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA0",
+ "stack": "x - x or null x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if",
+ "line": 41,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLSWAPIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ }
+ ],
+ "name": "x",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA1",
+ "tlb": "#6FA1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes a Null under the topmost Integer x, but only if x=0. May be used for stack alignment after quiet primitives such as PLDUXQ.
\n",
+ "fift": "NULLSWAPIFNOT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA1",
+ "stack": "x - x or null x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if",
+ "line": 41,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLSWAPIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [],
+ "match": [
+ {
+ "stack": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "value": 0
+ }
+ ],
+ "name": "x",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA2",
+ "tlb": "#6FA2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes a Null under the second stack entry from the top, but only if the topmost Integer y is non-zero.
\n",
+ "fift": "NULLROTRIF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA2",
+ "stack": "x y - x y or null x y"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if",
+ "line": 41,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLROTRIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ }
+ ],
+ "name": "y",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA3",
+ "tlb": "#6FA3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes a Null under the second stack entry from the top, but only if the topmost Integer y is zero. May be used for stack alignment after quiet primitives such as LDUXQ.
\n",
+ "fift": "NULLROTRIFNOT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA3",
+ "stack": "x y - x y or null x y"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if",
+ "line": 41,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLROTRIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [],
+ "match": [
+ {
+ "stack": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "value": 0
+ }
+ ],
+ "name": "y",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA4",
+ "tlb": "#6FA4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes two nulls under the topmost Integer x, but only if x!=0.\nEquivalent to NULLSWAPIF NULLSWAPIF.
\n",
+ "fift": "NULLSWAPIF2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA4",
+ "stack": "x - x or null null x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if_many",
+ "line": 56,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLSWAPIF2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ },
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ }
+ ],
+ "name": "x",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA5",
+ "tlb": "#6FA5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes two nulls under the topmost Integer x, but only if x=0.\nEquivalent to NULLSWAPIFNOT NULLSWAPIFNOT.
\n",
+ "fift": "NULLSWAPIFNOT2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA5",
+ "stack": "x - x or null null x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if_many",
+ "line": 56,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLSWAPIFNOT2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [],
+ "match": [
+ {
+ "stack": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ },
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "value": 0
+ }
+ ],
+ "name": "x",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA6",
+ "tlb": "#6FA6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes two nulls under the second stack entry from the top, but only if the topmost Integer y is non-zero.\nEquivalent to NULLROTRIF NULLROTRIF.
\n",
+ "fift": "NULLROTRIF2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA6",
+ "stack": "x y - x y or null null x y"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if_many",
+ "line": 56,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLROTRIF2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ },
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ }
+ ],
+ "name": "y",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "6FA7",
+ "tlb": "#6FA7"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Pushes two nulls under the second stack entry from the top, but only if the topmost Integer y is zero.\nEquivalent to NULLROTRIFNOT NULLROTRIFNOT.
\n",
+ "fift": "NULLROTRIFNOT2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FA7",
+ "stack": "x y - x y or null null x y"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_null_swap_if_many",
+ "line": 56,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "NULLROTRIFNOT2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "else": [],
+ "match": [
+ {
+ "stack": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ },
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Null"
+ }
+ ],
+ "value": 0
+ }
+ ],
+ "name": "y",
+ "type": "conditional"
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "i",
+ "size": 2,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "j",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6FB",
+ "tlb": "#6FB i:uint2 j:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Recovers x=(t_{i+1})_{j+1} for 0 <= i,j <= 3.\nEquivalent to [i] INDEX [j] INDEX.
\n",
+ "fift": "[i] [j] INDEX2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FBij",
+ "stack": "t - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_index2",
+ "line": 320,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "INDEX2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "i",
+ "size": 2,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "j",
+ "size": 2,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "k",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "6FE_",
+ "tlb": "#6FE_ i:uint2 j:uint2 k:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "tuple",
+ "description": "Recovers x=t_{i+1}_{j+1}_{k+1}.\n0 <= i,j,k <= 3\nEquivalent to [i] [j] INDEX2 [k] INDEX.
\n",
+ "fift": "[i] [j] [k] INDEX3",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "6FE_ijk",
+ "stack": "t - x"
+ },
+ "implementation": [
+ {
+ "file": "tupleops.cpp",
+ "function_name": "exec_tuple_index3",
+ "line": 340,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tupleops.cpp"
+ }
+ ],
+ "mnemonic": "INDEX3",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "pushint4"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "7",
+ "tlb": "#7 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes integer x into the stack. -5 <= x <= 10.\nHere i equals four lower-order bits of x (i=x mod 16).
\n",
+ "fift": "[x] PUSHINT\n[x] INT",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "7i",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_tinyint4",
+ "line": 31,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHINT_4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "x",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "80",
+ "tlb": "#80 xx:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes integer xx. -128 <= xx <= 127.
\n",
+ "fift": "[xx] PUSHINT\n[xx] INT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "80xx",
+ "stack": "- xx"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_tinyint8",
+ "line": 46,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHINT_8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 32767,
+ "min_value": -32768,
+ "name": "x",
+ "size": 16,
+ "type": "int"
+ }
+ ],
+ "prefix": "81",
+ "tlb": "#81 xxxx:int16"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes integer xxxx. -2^15 <= xx < 2^15.
\n",
+ "fift": "[xxxx] PUSHINT\n[xxxx] INT",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "81xxxx",
+ "stack": "- xxxx"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_smallint",
+ "line": 61,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHINT_16",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "name": "x",
+ "type": "pushint_long"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 5,
+ "to": 30
+ },
+ "prefix": "82",
+ "tlb": "#82 l:(## 5) xxx:(int (8 * l + 19))"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes integer xxx.\nDetails: 5-bit 0 <= l <= 30 determines the length n=8l+19 of signed big-endian integer xxx.\nThe total length of this instruction is l+4 bytes or n+13=8l+32 bits.
\n",
+ "fift": "[xxx] PUSHINT\n[xxx] INT",
+ "fift_examples": [],
+ "gas": "23",
+ "opcode": "82lxxx",
+ "stack": "- xxx"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_int",
+ "line": 76,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHINT_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 254,
+ "min_value": 0,
+ "name": "x",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 8,
+ "to": 254
+ },
+ "prefix": "83",
+ "tlb": "#83 xx:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "(Quietly) pushes 2^(xx+1) for 0 <= xx <= 255.\n2^256 is a NaN.
\n",
+ "fift": "[xx+1] PUSHPOW2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "83xx",
+ "stack": "- 2^(xx+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_pow2",
+ "line": 110,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHPOW2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "83FF",
+ "tlb": "#83FF"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes a NaN.
\n",
+ "fift": "PUSHNAN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "83FF",
+ "stack": "- NaN"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_nan",
+ "line": 120,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHNAN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "type": "const",
+ "value": null,
+ "value_type": "Integer"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "x",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "84",
+ "tlb": "#84 xx:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes 2^(xx+1)-1 for 0 <= xx <= 255.
\n",
+ "fift": "[xx+1] PUSHPOW2DEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "84xx",
+ "stack": "- 2^(xx+1)-1"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_pow2dec",
+ "line": 129,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHPOW2DEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "x",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "85",
+ "tlb": "#85 xx:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_int",
+ "description": "Pushes -2^(xx+1) for 0 <= xx <= 255.
\n",
+ "fift": "[xx+1] PUSHNEGPOW2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "85xx",
+ "stack": "- -2^(xx+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_push_negpow2",
+ "line": 139,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHNEGPOW2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "88",
+ "tlb": "#88 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Pushes the reference ref into the stack.\nDetails: Pushes the first reference of cc.code into the stack as a Cell (and removes this reference from the current continuation).
\n",
+ "fift": "[ref] PUSHREF",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "88",
+ "stack": "- c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_ref",
+ "line": 32,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "89",
+ "tlb": "#89 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Similar to PUSHREF, but converts the cell into a Slice.
\n",
+ "fift": "[ref] PUSHREFSLICE",
+ "fift_examples": [],
+ "gas": "118/43",
+ "opcode": "89",
+ "stack": "- s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_slice",
+ "line": 117,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHREFSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "8A",
+ "tlb": "#8A c:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Similar to PUSHREFSLICE, but makes a simple ordinary Continuation out of the cell.
\n",
+ "fift": "[ref] PUSHREFCONT",
+ "fift_examples": [],
+ "gas": "118/43",
+ "opcode": "8A",
+ "stack": "- cont"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_cont",
+ "line": 165,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHREFCONT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 4,
+ "bits_padding": 4,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 123,
+ "max_refs": 0,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "8B",
+ "tlb": "#8B x:(## 4) sss:((8 * x + 4) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Pushes the slice slice into the stack.\nDetails: Pushes the (prefix) subslice of cc.code consisting of its first 8x+4 bits and no references (i.e., essentially a bitstring), where 0 <= x <= 15.\nA completion tag is assumed, meaning that all trailing zeroes and the last binary one (if present) are removed from this bitstring.\nIf the original bitstring consists only of zeroes, an empty slice will be pushed.
\n",
+ "fift": "[slice] PUSHSLICE\n[slice] SLICE",
+ "fift_examples": [],
+ "gas": "22",
+ "opcode": "8Bxsss",
+ "stack": "- s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_slice",
+ "line": 117,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 5,
+ "bits_padding": 1,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 248,
+ "max_refs": 4,
+ "min_bits": 0,
+ "min_refs": 1,
+ "name": "slice",
+ "refs_add": 1,
+ "refs_length_var_size": 2,
+ "type": "subslice"
+ }
+ ],
+ "prefix": "8C",
+ "tlb": "#8C r:(## 2) xx:(## 5) c:((r + 1) * ^Cell) ssss:((8 * xx + 1) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Pushes the slice slice into the stack.\nDetails: Pushes the (prefix) subslice of cc.code consisting of its first 1 <= r+1 <= 4 references and up to first 8xx+1 bits of data, with 0 <= xx <= 31.\nA completion tag is also assumed.
\n",
+ "fift": "[slice] PUSHSLICE\n[slice] SLICE",
+ "fift_examples": [],
+ "gas": "25",
+ "opcode": "8Crxxssss",
+ "stack": "- s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_slice_r",
+ "line": 129,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHSLICE_REFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 7,
+ "bits_padding": 6,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 1021,
+ "max_refs": 4,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "slice",
+ "refs_add": 0,
+ "refs_length_var_size": 3,
+ "type": "subslice"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 3,
+ "to": 4
+ },
+ "prefix": "8D",
+ "tlb": "#8D r:(#<= 4) xx:(## 7) c:(r * ^Cell) ssss:((8 * xx + 6) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Pushes the slice slice into the stack.\nDetails: Pushes the subslice of cc.code consisting of 0 <= r <= 4 references and up to 8xx+6 bits of data, with 0 <= xx <= 127.\nA completion tag is assumed.
\n",
+ "fift": "[slice] PUSHSLICE\n[slice] SLICE",
+ "fift_examples": [
+ {
+ "description": "Examples of `PUSHSLICE`. `x{}` is an empty slice. `x{...}` is a hexadecimal literal. `b{...}` is a binary literal. More on slice literals [here](https://github.com/Piterden/TON-docs/blob/master/Fift.%20A%20Brief%20Introduction.md#user-content-51-slice-literals). Note that the assembler can replace `PUSHSLICE` with `PUSHREFSLICE` in certain situations (e.g. if there's not enough space in the current continuation).",
+ "fift": "x{} PUSHSLICE x{ABCD1234} PUSHSLICE b{01101} PUSHSLICE"
+ },
+ {
+ "description": "Examples of `PUSHREF` and `PUSHREFSLICE`. More on building cells in fift [here](https://github.com/Piterden/TON-docs/blob/master/Fift.%20A%20Brief%20Introduction.md#user-content-52-builder-primitives).",
+ "fift": " PUSHREF PUSHREFSLICE"
+ }
+ ],
+ "gas": "28",
+ "opcode": "8Drxxsssss",
+ "stack": "- s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_slice",
+ "line": 117,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHSLICE_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 7,
+ "bits_padding": 0,
+ "completion_tag": false,
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "max_bits": 1016,
+ "max_refs": 3,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "refs_add": 0,
+ "refs_length_var_size": 2,
+ "type": "subslice"
+ }
+ ],
+ "prefix": "8F_",
+ "tlb": "#8F_ r:(## 2) xx:(## 7) c:(r * ^Cell) ssss:((8 * xx) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Pushes a continuation made from builder.\nDetails: Pushes the simple ordinary continuation cccc made from the first 0 <= r <= 3 references and the first 0 <= xx <= 127 bytes of cc.code.
\n",
+ "fift": "[builder] PUSHCONT\n[builder] CONT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "8F_rxxcccc",
+ "stack": "- c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_cont",
+ "line": 165,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHCONT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 4,
+ "bits_padding": 0,
+ "completion_tag": false,
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "max_bits": 120,
+ "max_refs": 0,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "9",
+ "tlb": "#9 x:(## 4) ssss:((8 * x) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "const_data",
+ "description": "Pushes a continuation made from builder.\nDetails: Pushes an x-byte continuation for 0 <= x <= 15.
\n",
+ "fift": "[builder] PUSHCONT\n[builder] CONT",
+ "fift_examples": [
+ {
+ "description": "Pushes a continuation with code `code`. Note that the assembler can replace `PUSHCONT` with `PUSHREFCONT` in certain situations (e.g. if there's not enough space in the current continuation).",
+ "fift": "<{ code }> PUSHCONT <{ code }> CONT CONT:<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "9xccc",
+ "stack": "- c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_push_cont",
+ "line": 165,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHCONT_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A0",
+ "tlb": "#A0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "",
+ "fift": "ADD",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A0",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_add",
+ "line": 162,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A1",
+ "tlb": "#A1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "",
+ "fift": "SUB",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A1",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_sub",
+ "line": 171,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "SUB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A2",
+ "tlb": "#A2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "Equivalent to SWAP SUB.
\n",
+ "fift": "SUBR",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A2",
+ "stack": "x y - y-x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_subr",
+ "line": 180,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "SUBR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A3",
+ "tlb": "#A3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "Equivalent to -1 MULCONST or to ZERO SUBR.\nNotice that it triggers an integer overflow exception if x=-2^256.
\n",
+ "fift": "NEGATE",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A3",
+ "stack": "x - -x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_negate",
+ "line": 189,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "NEGATE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A4",
+ "tlb": "#A4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "Equivalent to 1 ADDCONST.
\n",
+ "fift": "INC",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A4",
+ "stack": "x - x+1"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_inc",
+ "line": 197,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "INC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A5",
+ "tlb": "#A5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "Equivalent to -1 ADDCONST.
\n",
+ "fift": "DEC",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A5",
+ "stack": "x - x-1"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_dec",
+ "line": 205,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "c",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "A6",
+ "tlb": "#A6 cc:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "-128 <= cc <= 127.
\n",
+ "fift": "[cc] ADDCONST\n[cc] ADDINT\n[-cc] SUBCONST\n[-cc] SUBINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A6cc",
+ "stack": "x - x+cc"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_add_tinyint8",
+ "line": 213,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDCONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "c",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "A7",
+ "tlb": "#A7 cc:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "-128 <= cc <= 127.
\n",
+ "fift": "[cc] MULCONST\n[cc] MULINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A7cc",
+ "stack": "x - x*cc"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mul_tinyint8",
+ "line": 222,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULCONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A8",
+ "tlb": "#A8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_basic",
+ "description": "",
+ "fift": "MUL",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "A8",
+ "stack": "x y - x*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mul",
+ "line": 231,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MUL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A900",
+ "tlb": "#A900"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "ADDDIVMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A900",
+ "stack": "x w z - q=floor((x+w)/z) r=(x+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDDIVMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A901",
+ "tlb": "#A901"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "ADDDIVMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A901",
+ "stack": "x w z - q=round((x+w)/z) r=(x+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDDIVMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A902",
+ "tlb": "#A902"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "ADDDIVMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A902",
+ "stack": "x w y - q=ceil((x+w)/z) r=(x+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDDIVMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A904",
+ "tlb": "#A904"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q=floor(x/y), r=x-y*q
\n",
+ "fift": "DIV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A904",
+ "stack": "x y - q"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DIV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A905",
+ "tlb": "#A905"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q'=round(x/y), r'=x-y*q'
\n",
+ "fift": "DIVR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A905",
+ "stack": "x y - q'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DIVR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A906",
+ "tlb": "#A906"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q''=ceil(x/y), r''=x-y*q''
\n",
+ "fift": "DIVC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A906",
+ "stack": "x y - q''"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DIVC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A908",
+ "tlb": "#A908"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A908",
+ "stack": "x y - r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A909",
+ "tlb": "#A909"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A909",
+ "stack": "x y - r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A90A",
+ "tlb": "#A90A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A90A",
+ "stack": "x y - r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A90C",
+ "tlb": "#A90C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "DIVMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A90C",
+ "stack": "x y - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DIVMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A90D",
+ "tlb": "#A90D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "DIVMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A90D",
+ "stack": "x y - q' r'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DIVMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A90E",
+ "tlb": "#A90E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "DIVMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A90E",
+ "stack": "x y - q'' r''"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "DIVMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A920",
+ "tlb": "#A920"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "ADDRSHIFTMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A920",
+ "stack": "x w z - q=floor((x+w)/2^z) r=(x+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRSHIFTMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A921",
+ "tlb": "#A921"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "ADDRSHIFTMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A921",
+ "stack": "x w z - q=round((x+w)/2^z) r=(x+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRSHIFTMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A922",
+ "tlb": "#A922"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "ADDRSHIFTMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A922",
+ "stack": "x w z - q=ceil((x+w)/2^z) r=(x+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRSHIFTMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A925",
+ "tlb": "#A925"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "RSHIFTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A925",
+ "stack": "x y - round(x/2^y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A926",
+ "tlb": "#A926"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "RSHIFTC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A926",
+ "stack": "x y - ceil(x/2^y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A928",
+ "tlb": "#A928"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MODPOW2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A928",
+ "stack": "x y - x mod 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODPOW2_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A929",
+ "tlb": "#A929"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MODPOW2R",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A929",
+ "stack": "x y - x mod 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODPOW2R_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A92A",
+ "tlb": "#A92A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MODPOW2C",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A92A",
+ "stack": "x y - x mod 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODPOW2C_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A92C",
+ "tlb": "#A92C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "RSHIFTMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A92C",
+ "stack": "x y - q=floor(x/2^y) r=x-q*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A92D",
+ "tlb": "#A92D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "RSHIFTMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A92D",
+ "stack": "x y - q=round(x/2^y) r=x-q*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTMODR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A92E",
+ "tlb": "#A92E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "RSHIFTMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A92E",
+ "stack": "x y - q=ceil(x/2^y) r=x-q*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTMODC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A930",
+ "tlb": "#A930 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] ADDRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A930tt",
+ "stack": "x w - q=floor((x+w)/2^(tt+1)) r=(x+w)-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRSHIFTMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A931",
+ "tlb": "#A931 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] ADDRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A931tt",
+ "stack": "x w - q=round((x+w)/2^(tt+1)) r=(x+w)-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRSHIFTRMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A932",
+ "tlb": "#A932 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] ADDRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A932tt",
+ "stack": "x w - q=round((x+w)/2^(tt+1)) r=(x+w)-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRSHIFTCMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A935",
+ "tlb": "#A935 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] RSHIFTR#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A935tt",
+ "stack": "x - round(x/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A936",
+ "tlb": "#A936 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] RSHIFTC#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A936tt",
+ "stack": "x - ceil(x/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A938",
+ "tlb": "#A938 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MODPOW2#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A938tt",
+ "stack": "x - x mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODPOW2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A939",
+ "tlb": "#A939 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MODPOW2R#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A939tt",
+ "stack": "x - x mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODPOW2R",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A93A",
+ "tlb": "#A93A tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MODPOW2C#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A93Att",
+ "stack": "x - x mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MODPOW2C",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A93C",
+ "tlb": "#A93C tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] RSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A93Ctt",
+ "stack": "x - q=floor(x/2^(tt+1)) r=x-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A93D",
+ "tlb": "#A93D tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] RSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A93Dtt",
+ "stack": "x - q=round(x/2^(tt+1)) r=x-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTRMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A93E",
+ "tlb": "#A93E tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] RSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A93Ett",
+ "stack": "x - q=ceil(x/2^(tt+1)) r=x-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFTCMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A980",
+ "tlb": "#A980"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULADDDIVMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A980",
+ "stack": "x y w z - q=floor((xy+w)/z) r=(xy+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDDIVMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A981",
+ "tlb": "#A981"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULADDDIVMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A981",
+ "stack": "x y w z - q=round((xy+w)/z) r=(xy+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDDIVMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A982",
+ "tlb": "#A982"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULADDDIVMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A982",
+ "stack": "x y w z - q=ceil((xy+w)/z) r=(xy+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDDIVMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A984",
+ "tlb": "#A984"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q=floor(x*y/z)
\n",
+ "fift": "MULDIV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A984",
+ "stack": "x y z - q"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULDIV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A985",
+ "tlb": "#A985"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q'=round(x*y/z)
\n",
+ "fift": "MULDIVR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A985",
+ "stack": "x y z - q'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULDIVR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A986",
+ "tlb": "#A986"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q'=ceil(x*y/z)
\n",
+ "fift": "MULDIVC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A986",
+ "stack": "x y z - q'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULDIVC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A988",
+ "tlb": "#A988"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A988",
+ "stack": "x y z - x*y mod z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A989",
+ "tlb": "#A989"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A989",
+ "stack": "x y z - x*y mod z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A98A",
+ "tlb": "#A98A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A98A",
+ "stack": "x y z - x*y mod z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A98C",
+ "tlb": "#A98C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q=floor(x*y/z), r=x*y-z*q
\n",
+ "fift": "MULDIVMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A98C",
+ "stack": "x y z - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULDIVMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A98D",
+ "tlb": "#A98D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q=round(x*y/z), r=x*y-z*q
\n",
+ "fift": "MULDIVMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A98D",
+ "stack": "x y z - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULDIVMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A98E",
+ "tlb": "#A98E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "q=ceil(x*y/z), r=x*y-z*q
\n",
+ "fift": "MULDIVMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A98E",
+ "stack": "x y z - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULDIVMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A0",
+ "tlb": "#A9A0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULADDRSHIFTMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A0",
+ "stack": "x y w z - q=floor((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDRSHIFTMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A1",
+ "tlb": "#A9A1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULADDRSHIFTRMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A1",
+ "stack": "x y w z - q=round((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDRSHIFTRMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A2",
+ "tlb": "#A9A2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULADDRSHIFTCMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A2",
+ "stack": "x y w z - q=ceil((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDRSHIFTCMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A4",
+ "tlb": "#A9A4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "0 <= z <= 256
\n",
+ "fift": "MULRSHIFT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A4",
+ "stack": "x y z - floor(x*y/2^z)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFT_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A5",
+ "tlb": "#A9A5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "0 <= z <= 256
\n",
+ "fift": "MULRSHIFTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A5",
+ "stack": "x y z - round(x*y/2^z)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A6",
+ "tlb": "#A9A6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "0 <= z <= 256
\n",
+ "fift": "MULRSHIFTC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A6",
+ "stack": "x y z - ceil(x*y/2^z)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A8",
+ "tlb": "#A9A8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULMODPOW2_VAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A8",
+ "stack": "x y z - x*y mod 2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODPOW2_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9A9",
+ "tlb": "#A9A9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULMODPOW2R_VAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9A9",
+ "stack": "x y z - x*y mod 2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODPOW2R_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9AA",
+ "tlb": "#A9AA"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULMODPOW2C_VAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9AA",
+ "stack": "x y z - x*y mod 2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODPOW2C_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9AC",
+ "tlb": "#A9AC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULRSHIFTMOD_VAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9AC",
+ "stack": "x y z - q=floor(x*y/2^z) r=xy-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9AD",
+ "tlb": "#A9AD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULRSHIFTRMOD_VAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9AD",
+ "stack": "x y z - q=round(x*y/2^z) r=xy-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTRMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9AE",
+ "tlb": "#A9AE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULRSHIFTCMOD_VAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9AE",
+ "stack": "x y z - q=ceil(x*y/2^z) r=xy-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTCMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B0",
+ "tlb": "#A9B0 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULADDRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B0tt",
+ "stack": "x y w - q=floor((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDRSHIFTMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B1",
+ "tlb": "#A9B1 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULADDRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B1tt",
+ "stack": "x y w - q=round((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDRSHIFTRMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B2",
+ "tlb": "#A9B2 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULADDRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B2tt",
+ "stack": "x y w - q=ceil((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULADDRSHIFTCMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B4",
+ "tlb": "#A9B4 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULRSHIFT#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B4tt",
+ "stack": "x y - floor(x*y/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B5",
+ "tlb": "#A9B5 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULRSHIFTR#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B5tt",
+ "stack": "x y - round(x*y/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B6",
+ "tlb": "#A9B6 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULRSHIFTC#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B6tt",
+ "stack": "x y - ceil(x*y/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B8",
+ "tlb": "#A9B8 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULMODPOW2#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B8tt",
+ "stack": "x y - x*y mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODPOW2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9B9",
+ "tlb": "#A9B9 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULMODPOW2R#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9B9tt",
+ "stack": "x y - x*y mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODPOW2R",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9BA",
+ "tlb": "#A9BA tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] MULMODPOW2C#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9BAtt",
+ "stack": "x y - x*y mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULMODPOW2C",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9BC",
+ "tlb": "#A9BC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9BC",
+ "stack": "x y - q=floor(x*y/2^(tt+1)) r=xy-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9BD",
+ "tlb": "#A9BD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9BD",
+ "stack": "x y - q=round(x*y/2^(tt+1)) r=xy-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTRMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9BE",
+ "tlb": "#A9BE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "MULRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9BE",
+ "stack": "x y - q=ceil(x*y/2^(tt+1)) r=xy-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MULRSHIFTCMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C0",
+ "tlb": "#A9C0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTADDDIVMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C0",
+ "stack": "x w z y - q=floor((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTADDDIVMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C1",
+ "tlb": "#A9C1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTADDDIVMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C1",
+ "stack": "x w z y - q=round((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTADDDIVMODR_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C2",
+ "tlb": "#A9C2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTADDDIVMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C2",
+ "stack": "x w z y - q=round((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTADDDIVMODC_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C4",
+ "tlb": "#A9C4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "0 <= z <= 256
\n",
+ "fift": "LSHIFTDIV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C4",
+ "stack": "x y z - floor(2^z*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIV_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C5",
+ "tlb": "#A9C5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "0 <= z <= 256
\n",
+ "fift": "LSHIFTDIVR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C5",
+ "stack": "x y z - round(2^z*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C6",
+ "tlb": "#A9C6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "0 <= z <= 256
\n",
+ "fift": "LSHIFTDIVC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C6",
+ "stack": "x y z - ceil(2^z*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C8",
+ "tlb": "#A9C8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C8",
+ "stack": "x y z - 2^z*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9C9",
+ "tlb": "#A9C9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9C9",
+ "stack": "x y z - 2^z*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTMODR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9CA",
+ "tlb": "#A9CA"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9CA",
+ "stack": "x y z - 2^z*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTMODC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9CC",
+ "tlb": "#A9CC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTDIVMOD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9CC",
+ "stack": "x y z - q=floor(2^z*x/y) r=2^z*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9CD",
+ "tlb": "#A9CD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTDIVMODR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9CD",
+ "stack": "x y z - q=round(2^z*x/y) r=2^z*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVMODR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "A9CE",
+ "tlb": "#A9CE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "LSHIFTDIVMODC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "A9CE",
+ "stack": "x y z - q=ceil(2^z*x/y) r=2^z*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVMODC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D0",
+ "tlb": "#A9D0 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#ADDDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D0tt",
+ "stack": "x w z - q=floor((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTADDDIVMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D1",
+ "tlb": "#A9D1 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#ADDDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D1tt",
+ "stack": "x w z - q=round((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTADDDIVMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D2",
+ "tlb": "#A9D2 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#ADDDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D2tt",
+ "stack": "x w z - q=ceil((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTADDDIVMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D4",
+ "tlb": "#A9D4 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#DIV",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D4tt",
+ "stack": "x y - floor(2^(tt+1)*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D5",
+ "tlb": "#A9D5 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#DIVR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D5tt",
+ "stack": "x y - round(2^(tt+1)*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D6",
+ "tlb": "#A9D6 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#DIVC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D6tt",
+ "stack": "x y - ceil(2^(tt+1)*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D8",
+ "tlb": "#A9D8 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D8tt",
+ "stack": "x y - 2^(tt+1)*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9D9",
+ "tlb": "#A9D9 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#MODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9D9tt",
+ "stack": "x y - 2^(tt+1)*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9DA",
+ "tlb": "#A9DA tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#MODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9DAtt",
+ "stack": "x y - 2^(tt+1)*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9DC",
+ "tlb": "#A9DC tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#DIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9DCtt",
+ "stack": "x y - q=floor(2^(tt+1)*x/y) r=2^(tt+1)*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9DD",
+ "tlb": "#A9DD tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#DIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9DDtt",
+ "stack": "x y - q=round(2^(tt+1)*x/y) r=2^(tt+1)*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "A9DE",
+ "tlb": "#A9DE tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_div",
+ "description": "",
+ "fift": "[tt+1] LSHIFT#DIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "A9DEtt",
+ "stack": "x y - q=ceil(2^(tt+1)*x/y) r=2^(tt+1)*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFTDIVMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "AA",
+ "tlb": "#AA cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "0 <= cc <= 255
\n",
+ "fift": "[cc+1] LSHIFT#",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "AAcc",
+ "stack": "x - x*2^(cc+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_lshift",
+ "line": 740,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "AB",
+ "tlb": "#AB cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "0 <= cc <= 255
\n",
+ "fift": "[cc+1] RSHIFT#",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ABcc",
+ "stack": "x - floor(x/2^(cc+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_rshift",
+ "line": 749,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "AC",
+ "tlb": "#AC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "0 <= y <= 1023
\n",
+ "fift": "LSHIFT",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "AC",
+ "stack": "x y - x*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_lshift_tinyint8",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LSHIFT_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "AD",
+ "tlb": "#AD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "0 <= y <= 1023
\n",
+ "fift": "RSHIFT",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "AD",
+ "stack": "x y - floor(x/2^y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_rshift_tinyint8",
+ "line": 731,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "RSHIFT_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "AE",
+ "tlb": "#AE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "0 <= y <= 1023\nEquivalent to ONE SWAP LSHIFT.
\n",
+ "fift": "POW2",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "AE",
+ "stack": "y - 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_pow2",
+ "line": 758,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "POW2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B0",
+ "tlb": "#B0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Bitwise and of two signed integers x and y, sign-extended to infinity.
\n",
+ "fift": "AND",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "B0",
+ "stack": "x y - x&y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_and",
+ "line": 769,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "AND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B1",
+ "tlb": "#B1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Bitwise or of two integers.
\n",
+ "fift": "OR",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "B1",
+ "stack": "x y - x|y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_or",
+ "line": 778,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "OR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B2",
+ "tlb": "#B2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Bitwise xor of two integers.
\n",
+ "fift": "XOR",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "B2",
+ "stack": "x y - x xor y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_xor",
+ "line": 787,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "XOR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B3",
+ "tlb": "#B3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Bitwise not of an integer.
\n",
+ "fift": "NOT",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "B3",
+ "stack": "x - ~x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_not",
+ "line": 796,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "NOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B4",
+ "tlb": "#B4 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Checks whether x is a cc+1-bit signed integer for 0 <= cc <= 255 (i.e., whether -2^cc <= x < 2^cc).\nIf not, either triggers an integer overflow exception, or replaces x with a NaN (quiet version).
\n",
+ "fift": "[cc+1] FITS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "B4cc",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_fits_tinyint8",
+ "line": 804,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "FITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B5",
+ "tlb": "#B5 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Checks whether x is a cc+1-bit unsigned integer for 0 <= cc <= 255 (i.e., whether 0 <= x < 2^(cc+1)).
\n",
+ "fift": "[cc+1] UFITS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "B5cc",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_ufits_tinyint8",
+ "line": 817,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "UFITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B600",
+ "tlb": "#B600"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Checks whether x is a c-bit signed integer for 0 <= c <= 1023.
\n",
+ "fift": "FITSX",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "B600",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_fits",
+ "line": 830,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "FITSX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B601",
+ "tlb": "#B601"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Checks whether x is a c-bit unsigned integer for 0 <= c <= 1023.
\n",
+ "fift": "UFITSX",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "B601",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_ufits",
+ "line": 843,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "UFITSX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B602",
+ "tlb": "#B602"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Computes smallest c >= 0 such that x fits into a c-bit signed integer (-2^(c-1) <= c < 2^(c-1)).
\n",
+ "fift": "BITSIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B602",
+ "stack": "x - c"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_bitsize",
+ "line": 856,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "BITSIZE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B603",
+ "tlb": "#B603"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Computes smallest c >= 0 such that x fits into a c-bit unsigned integer (0 <= x < 2^c), or throws a range check exception.
\n",
+ "fift": "UBITSIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B603",
+ "stack": "x - c"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_bitsize",
+ "line": 856,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "UBITSIZE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B608",
+ "tlb": "#B608"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Computes the minimum of two integers x and y.
\n",
+ "fift": "MIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B608",
+ "stack": "x y - x or y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_minmax",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B609",
+ "tlb": "#B609"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Computes the maximum of two integers x and y.
\n",
+ "fift": "MAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B609",
+ "stack": "x y - x or y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_minmax",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B60A",
+ "tlb": "#B60A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Sorts two integers. Quiet version of this operation returns two NaNs if any of the arguments are NaNs.
\n",
+ "fift": "MINMAX\nINTSORT2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B60A",
+ "stack": "x y - x y or y x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_minmax",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "MINMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "r1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B60B",
+ "tlb": "#B60B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_logical",
+ "description": "Computes the absolute value of an integer x.
\n",
+ "fift": "ABS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B60B",
+ "stack": "x - |x|"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_abs",
+ "line": 936,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ABS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A0",
+ "tlb": "#B7A0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A0",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_add",
+ "line": 162,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A1",
+ "tlb": "#B7A1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QSUB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A1",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_sub",
+ "line": 171,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QSUB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A2",
+ "tlb": "#B7A2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QSUBR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A2",
+ "stack": "x y - y-x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_subr",
+ "line": 180,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QSUBR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A3",
+ "tlb": "#B7A3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QNEGATE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A3",
+ "stack": "x - -x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_negate",
+ "line": 189,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QNEGATE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A4",
+ "tlb": "#B7A4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QINC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A4",
+ "stack": "x - x+1"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_inc",
+ "line": 197,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QINC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A5",
+ "tlb": "#B7A5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QDEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A5",
+ "stack": "x - x-1"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_dec",
+ "line": 205,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A8",
+ "tlb": "#B7A8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMUL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7A8",
+ "stack": "x y - x*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mul",
+ "line": 231,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMUL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A900",
+ "tlb": "#B7A900"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADDDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A900",
+ "stack": "x w z - q=floor((x+w)/z) r=(x+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDDIVMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A901",
+ "tlb": "#B7A901"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADDDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A901",
+ "stack": "x w z - q=round((x+w)/z) r=(x+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDDIVMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A902",
+ "tlb": "#B7A902"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADDDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A902",
+ "stack": "x w y - q=ceil((x+w)/z) r=(x+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDDIVMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A904",
+ "tlb": "#B7A904"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "Division returns NaN if y=0.
\n",
+ "fift": "QDIV",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A904",
+ "stack": "x y - q"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDIV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A905",
+ "tlb": "#B7A905"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QDIVR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A905",
+ "stack": "x y - q'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDIVR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A906",
+ "tlb": "#B7A906"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QDIVC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A906",
+ "stack": "x y - q''"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDIVC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A908",
+ "tlb": "#B7A908"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A908",
+ "stack": "x y - r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A909",
+ "tlb": "#B7A909"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A909",
+ "stack": "x y - r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A90A",
+ "tlb": "#B7A90A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A90A",
+ "stack": "x y - r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A90C",
+ "tlb": "#B7A90C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A90C",
+ "stack": "x y - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDIVMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A90D",
+ "tlb": "#B7A90D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A90D",
+ "stack": "x y - q' r'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDIVMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A90E",
+ "tlb": "#B7A90E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A90E",
+ "stack": "x y - q'' r''"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_divmod",
+ "line": 266,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QDIVMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A920",
+ "tlb": "#B7A920"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADDRSHIFTMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A920",
+ "stack": "x w z - q=floor((x+w)/2^z) r=(x+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDRSHIFTMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A921",
+ "tlb": "#B7A921"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADDRSHIFTMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A921",
+ "stack": "x w z - q=round((x+w)/2^z) r=(x+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDRSHIFTMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A922",
+ "tlb": "#B7A922"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QADDRSHIFTMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A922",
+ "stack": "x w z - q=ceil((x+w)/2^z) r=(x+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDRSHIFTMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A925",
+ "tlb": "#B7A925"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QRSHIFTR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A925",
+ "stack": "x y - round(x/2^y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A926",
+ "tlb": "#B7A926"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QRSHIFTC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A926",
+ "stack": "x y - ceil(x/2^y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A928",
+ "tlb": "#B7A928"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMODPOW2",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A928",
+ "stack": "x y - x mod 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODPOW2_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A929",
+ "tlb": "#B7A929"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMODPOW2R",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A929",
+ "stack": "x y - x mod 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODPOW2R_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A92A",
+ "tlb": "#B7A92A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMODPOW2C",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A92A",
+ "stack": "x y - x mod 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODPOW2C_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A92C",
+ "tlb": "#B7A92C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QRSHIFTMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A92C",
+ "stack": "x y - q=floor(x/2^y) r=x-q*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A92D",
+ "tlb": "#B7A92D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QRSHIFTMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A92D",
+ "stack": "x y - q=round(x/2^y) r=x-q*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTMODR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A92E",
+ "tlb": "#B7A92E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QRSHIFTMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A92E",
+ "stack": "x y - q=ceil(x/2^y) r=x-q*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTMODC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A930",
+ "tlb": "#B7A930 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QADDRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A930tt",
+ "stack": "x w - q=floor((x+w)/2^(tt+1)) r=(x+w)-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDRSHIFTMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A931",
+ "tlb": "#B7A931 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QADDRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A931tt",
+ "stack": "x w - q=round((x+w)/2^(tt+1)) r=(x+w)-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDRSHIFTRMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A932",
+ "tlb": "#B7A932 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QADDRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A932tt",
+ "stack": "x w - q=round((x+w)/2^(tt+1)) r=(x+w)-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QADDRSHIFTCMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A935",
+ "tlb": "#B7A935 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QRSHIFTR#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A935tt",
+ "stack": "x - round(x/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTR",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A936",
+ "tlb": "#B7A936 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QRSHIFTC#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A936tt",
+ "stack": "x - ceil(x/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTC",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A938",
+ "tlb": "#B7A938 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMODPOW2#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A938tt",
+ "stack": "x - x mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODPOW2",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A939",
+ "tlb": "#B7A939 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMODPOW2R#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A939tt",
+ "stack": "x - x mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODPOW2R",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A93A",
+ "tlb": "#B7A93A tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMODPOW2C#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A93Att",
+ "stack": "x - x mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMODPOW2C",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A93C",
+ "tlb": "#B7A93C tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A93Ctt",
+ "stack": "x - q=floor(x/2^(tt+1)) r=x-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A93D",
+ "tlb": "#B7A93D tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A93Dtt",
+ "stack": "x - q=round(x/2^(tt+1)) r=x-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTRMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A93E",
+ "tlb": "#B7A93E tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A93Ett",
+ "stack": "x - q=ceil(x/2^(tt+1)) r=x-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFTCMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A980",
+ "tlb": "#B7A980"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULADDDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A980",
+ "stack": "x y w z - q=floor((xy+w)/z) r=(xy+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDDIVMOD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A981",
+ "tlb": "#B7A981"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULADDDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A981",
+ "stack": "x y w z - q=round((xy+w)/z) r=(xy+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDDIVMODR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A982",
+ "tlb": "#B7A982"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULADDDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A982",
+ "stack": "x y w z - q=ceil((xy+w)/z) r=(xy+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDDIVMODC",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A984",
+ "tlb": "#B7A984"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "q=floor(x*y/z)
\n",
+ "fift": "QMULDIV",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A984",
+ "stack": "x y z - q"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULDIV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A985",
+ "tlb": "#B7A985"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULDIVR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A985",
+ "stack": "x y z - q'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULDIVR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A986",
+ "tlb": "#B7A986"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "q'=ceil(x*y/z)
\n",
+ "fift": "QMULDIVC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A986",
+ "stack": "x y z - q'"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULDIVC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A988",
+ "tlb": "#B7A988"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A988",
+ "stack": "x y z - x*y mod z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A989",
+ "tlb": "#B7A989"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A989",
+ "stack": "x y z - x*y mod z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A98A",
+ "tlb": "#B7A98A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A98A",
+ "stack": "x y z - x*y mod z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A98C",
+ "tlb": "#B7A98C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A98C",
+ "stack": "x y z - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULDIVMOD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A98D",
+ "tlb": "#B7A98D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "q=round(x*y/z), r=x*y-z*q
\n",
+ "fift": "QMULDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A98D",
+ "stack": "x y z - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULDIVMODR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A98E",
+ "tlb": "#B7A98E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "q=ceil(x*y/z), r=x*y-z*q
\n",
+ "fift": "QMULDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A98E",
+ "stack": "x y z - q r"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_muldivmod",
+ "line": 434,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULDIVMODC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A0",
+ "tlb": "#B7A9A0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULADDRSHIFTMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A0",
+ "stack": "x y w z - q=floor((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDRSHIFTMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A1",
+ "tlb": "#B7A9A1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULADDRSHIFTRMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A1",
+ "stack": "x y w z - q=round((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDRSHIFTRMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A2",
+ "tlb": "#B7A9A2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULADDRSHIFTCMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A2",
+ "stack": "x y w z - q=ceil((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDRSHIFTCMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "q",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A4",
+ "tlb": "#B7A9A4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= z <= 256
\n",
+ "fift": "QMULRSHIFT",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A4",
+ "stack": "x y z - floor(x*y/2^z)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFT_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A5",
+ "tlb": "#B7A9A5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= z <= 256
\n",
+ "fift": "QMULRSHIFTR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A5",
+ "stack": "x y z - round(x*y/2^z)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A6",
+ "tlb": "#B7A9A6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= z <= 256
\n",
+ "fift": "QMULRSHIFTC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A6",
+ "stack": "x y z - ceil(x*y/2^z)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A8",
+ "tlb": "#B7A9A8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULMODPOW2_VAR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A8",
+ "stack": "x y z - x*y mod 2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODPOW2_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9A9",
+ "tlb": "#B7A9A9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULMODPOW2R_VAR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9A9",
+ "stack": "x y z - x*y mod 2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODPOW2R_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9AA",
+ "tlb": "#B7A9AA"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULMODPOW2C_VAR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9AA",
+ "stack": "x y z - x*y mod 2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODPOW2C_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9AC",
+ "tlb": "#B7A9AC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULRSHIFTMOD_VAR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9AC",
+ "stack": "x y z - q=floor(x*y/2^z) r=xy-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9AD",
+ "tlb": "#B7A9AD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULRSHIFTRMOD_VAR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9AD",
+ "stack": "x y z - q=round(x*y/2^z) r=xy-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTRMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9AE",
+ "tlb": "#B7A9AE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULRSHIFTCMOD_VAR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9AE",
+ "stack": "x y z - q=ceil(x*y/2^z) r=xy-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTCMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B0",
+ "tlb": "#B7A9B0 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULADDRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B0tt",
+ "stack": "x y w - q=floor((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDRSHIFTMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B1",
+ "tlb": "#B7A9B1 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULADDRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B1tt",
+ "stack": "x y w - q=round((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDRSHIFTRMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B2",
+ "tlb": "#B7A9B2 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULADDRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B2tt",
+ "stack": "x y w - q=ceil((xy+w)/2^z) r=(xy+w)-q*2^z"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shrmod",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULADDRSHIFTCMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B4",
+ "tlb": "#B7A9B4 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULRSHIFT#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B4tt",
+ "stack": "x y - floor(x*y/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFT",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B5",
+ "tlb": "#B7A9B5 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULRSHIFTR#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B5tt",
+ "stack": "x y - round(x*y/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTR",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B6",
+ "tlb": "#B7A9B6 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULRSHIFTC#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B6tt",
+ "stack": "x y - ceil(x*y/2^(tt+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTC",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B8",
+ "tlb": "#B7A9B8 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULMODPOW2#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B8tt",
+ "stack": "x y - x*y mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODPOW2",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9B9",
+ "tlb": "#B7A9B9 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULMODPOW2R#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9B9tt",
+ "stack": "x y - x*y mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODPOW2R",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9BA",
+ "tlb": "#B7A9BA tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QMULMODPOW2C#",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9BAtt",
+ "stack": "x y - x*y mod 2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULMODPOW2C",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9BC",
+ "tlb": "#B7A9BC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULRSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9BC",
+ "stack": "x y - q=floor(x*y/2^(tt+1)) r=xy-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9BD",
+ "tlb": "#B7A9BD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULRSHIFTR#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9BD",
+ "stack": "x y - q=round(x*y/2^(tt+1)) r=xy-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTRMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9BE",
+ "tlb": "#B7A9BE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QMULRSHIFTC#MOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9BE",
+ "stack": "x y - q=ceil(x*y/2^(tt+1)) r=xy-q*2^(tt+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_mulshrmod",
+ "line": 497,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QMULRSHIFTCMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C0",
+ "tlb": "#B7A9C0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTADDDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C0",
+ "stack": "x w z y - q=floor((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTADDDIVMOD_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C1",
+ "tlb": "#B7A9C1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTADDDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C1",
+ "stack": "x w z y - q=round((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTADDDIVMODR_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C2",
+ "tlb": "#B7A9C2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTADDDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C2",
+ "stack": "x w z y - q=round((x*2^y+w)/z) r=(x*2^y+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTADDDIVMODC_VAR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C4",
+ "tlb": "#B7A9C4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= z <= 256
\n",
+ "fift": "QLSHIFTDIV",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C4",
+ "stack": "x y z - floor(2^z*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIV_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C5",
+ "tlb": "#B7A9C5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= z <= 256
\n",
+ "fift": "QLSHIFTDIVR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C5",
+ "stack": "x y z - round(2^z*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C6",
+ "tlb": "#B7A9C6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= z <= 256
\n",
+ "fift": "QLSHIFTDIVC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C6",
+ "stack": "x y z - ceil(2^z*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C8",
+ "tlb": "#B7A9C8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C8",
+ "stack": "x y z - 2^z*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9C9",
+ "tlb": "#B7A9C9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9C9",
+ "stack": "x y z - 2^z*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTMODR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9CA",
+ "tlb": "#B7A9CA"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9CA",
+ "stack": "x y z - 2^z*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTMODC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9CC",
+ "tlb": "#B7A9CC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTDIVMOD",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9CC",
+ "stack": "x y z - q=floor(2^z*x/y) r=2^z*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVMOD_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9CD",
+ "tlb": "#B7A9CD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTDIVMODR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9CD",
+ "stack": "x y z - q=round(2^z*x/y) r=2^z*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVMODR_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7A9CE",
+ "tlb": "#B7A9CE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFTDIVMODC",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7A9CE",
+ "stack": "x y z - q=ceil(2^z*x/y) r=2^z*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVMODC_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D0",
+ "tlb": "#B7A9D0 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#ADDDIVMOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D0tt",
+ "stack": "x w z - q=floor((x*2^(tt+1)+w)/z) r=(x*2^(tt+1)+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTADDDIVMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D1",
+ "tlb": "#B7A9D1 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#ADDDIVMODR",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D1tt",
+ "stack": "x w z - q=round((x*2^(tt+1)+w)/z) r=(x*2^(tt+1)+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTADDDIVMODR",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D2",
+ "tlb": "#B7A9D2 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#ADDDIVMODC",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D2tt",
+ "stack": "x w z - q=ceil((x*2^(tt+1)+w)/z) r=(x*2^(tt+1)+w)-zq"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTADDDIVMODC",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "w",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D4",
+ "tlb": "#B7A9D4 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#DIV",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D4tt",
+ "stack": "x y - floor(2^(tt+1)*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIV",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D5",
+ "tlb": "#B7A9D5 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#DIVR",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D5tt",
+ "stack": "x y - round(2^(tt+1)*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVR",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D6",
+ "tlb": "#B7A9D6 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#DIVC",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D6tt",
+ "stack": "x y - ceil(2^(tt+1)*x/y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVC",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D8",
+ "tlb": "#B7A9D8 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#MOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D8tt",
+ "stack": "x y - 2^(tt+1)*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9D9",
+ "tlb": "#B7A9D9 tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#MODR",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9D9tt",
+ "stack": "x y - 2^(tt+1)*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTMODR",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9DA",
+ "tlb": "#B7A9DA tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#MODC",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9DAtt",
+ "stack": "x y - 2^(tt+1)*x mod y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTMODC",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9DC",
+ "tlb": "#B7A9DC tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#DIVMOD",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9DCtt",
+ "stack": "x y - q=floor(2^(tt+1)*x/y) r=2^(tt+1)*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVMOD",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9DD",
+ "tlb": "#B7A9DD tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#DIVMODR",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9DDtt",
+ "stack": "x y - q=round(2^(tt+1)*x/y) r=2^(tt+1)*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVMODR",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "t",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7A9DE",
+ "tlb": "#B7A9DE tt:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "[tt+1] QLSHIFT#DIVMODC",
+ "fift_examples": [],
+ "gas": "42",
+ "opcode": "B7A9DEtt",
+ "stack": "x y - q=ceil(2^(tt+1)*x/y) r=2^(tt+1)*x-q*y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_shldivmod",
+ "line": 595,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFTDIVMODC",
+ "since_version": 9999,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7AA",
+ "tlb": "#B7AA cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= cc <= 255
\n",
+ "fift": "[cc+1] QLSHIFT#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7AAcc",
+ "stack": "x - x*2^(cc+1)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_lshift",
+ "line": 740,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7AB",
+ "tlb": "#B7AB cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "0 <= cc <= 255
\n",
+ "fift": "[cc+1] QRSHIFT#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7ABcc",
+ "stack": "x - floor(x/2^(cc+1))"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_rshift",
+ "line": 749,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7AC",
+ "tlb": "#B7AC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QLSHIFT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7AC",
+ "stack": "x y - x*2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_lshift",
+ "line": 740,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QLSHIFT_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7AD",
+ "tlb": "#B7AD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QRSHIFT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7AD",
+ "stack": "x y - floor(x/2^y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_rshift",
+ "line": 749,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QRSHIFT_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7AE",
+ "tlb": "#B7AE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QPOW2",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7AE",
+ "stack": "y - 2^y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_pow2",
+ "line": 758,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QPOW2",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7B0",
+ "tlb": "#B7B0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QAND",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7B0",
+ "stack": "x y - x&y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_and",
+ "line": 769,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7B1",
+ "tlb": "#B7B1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QOR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7B1",
+ "stack": "x y - x|y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_or",
+ "line": 778,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QOR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7B2",
+ "tlb": "#B7B2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QXOR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7B2",
+ "stack": "x y - x xor y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_xor",
+ "line": 787,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QXOR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7B3",
+ "tlb": "#B7B3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "",
+ "fift": "QNOT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "B7B3",
+ "stack": "x - ~x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_not",
+ "line": 796,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7B4",
+ "tlb": "#B7B4 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "Replaces x with a NaN if x is not a cc+1-bit signed integer, leaves it intact otherwise.
\n",
+ "fift": "[cc+1] QFITS",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7B4cc",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_fits",
+ "line": 830,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QFITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "B7B5",
+ "tlb": "#B7B5 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "Replaces x with a NaN if x is not a cc+1-bit unsigned integer, leaves it intact otherwise.
\n",
+ "fift": "[cc+1] QUFITS",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7B5cc",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_fits",
+ "line": 830,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QUFITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7B600",
+ "tlb": "#B7B600"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "Replaces x with a NaN if x is not a c-bit signed integer, leaves it intact otherwise.
\n",
+ "fift": "QFITSX",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7B600",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_fits",
+ "line": 830,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QFITSX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7B601",
+ "tlb": "#B7B601"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "arithm_quiet",
+ "description": "Replaces x with a NaN if x is not a c-bit unsigned integer, leaves it intact otherwise.
\n",
+ "fift": "QUFITSX",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "B7B601",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_ufits",
+ "line": 843,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "QUFITSX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B8",
+ "tlb": "#B8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Computes the sign of an integer x:\n-1 if x<0, 0 if x=0, 1 if x>0.
\n",
+ "fift": "SGN",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "B8",
+ "stack": "x - sgn(x)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_sgn",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "SGN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B9",
+ "tlb": "#B9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Returns -1 if x<y, 0 otherwise.
\n",
+ "fift": "LESS",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "B9",
+ "stack": "x y - xReturns -1 if x=y, 0 otherwise.
\n",
+ "fift": "EQUAL",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "BA",
+ "stack": "x y - x=y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp",
+ "line": 975,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "EQUAL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "BB",
+ "tlb": "#BB"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "",
+ "fift": "LEQ",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "BB",
+ "stack": "x y - x<=y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp",
+ "line": 975,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "LEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "BC",
+ "tlb": "#BC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "",
+ "fift": "GREATER",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "BC",
+ "stack": "x y - x>y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp",
+ "line": 975,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "GREATER",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "BD",
+ "tlb": "#BD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Equivalent to EQUAL NOT.
\n",
+ "fift": "NEQ",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "BD",
+ "stack": "x y - x!=y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp",
+ "line": 975,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "NEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "BE",
+ "tlb": "#BE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Equivalent to LESS NOT.
\n",
+ "fift": "GEQ",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "BE",
+ "stack": "x y - x>=y"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp",
+ "line": 975,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "GEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "BF",
+ "tlb": "#BF"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Computes the sign of x-y:\n-1 if x<y, 0 if x=y, 1 if x>y.\nNo integer overflow can occur here unless x or y is a NaN.
\n",
+ "fift": "CMP",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "BF",
+ "stack": "x y - sgn(x-y)"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp",
+ "line": 975,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "CMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "y",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "C0",
+ "tlb": "#C0 yy:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Returns -1 if x=yy, 0 otherwise.\n-2^7 <= yy < 2^7.
\n",
+ "fift": "[yy] EQINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C0yy",
+ "stack": "x - x=yy"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp_int",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "EQINT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "y",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "C1",
+ "tlb": "#C1 yy:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Returns -1 if x<yy, 0 otherwise.\n-2^7 <= yy < 2^7.
\n",
+ "fift": "[yy] LESSINT\n[yy-1] LEQINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C1yy",
+ "stack": "x - xReturns -1 if x>yy, 0 otherwise.\n-2^7 <= yy < 2^7.\n",
+ "fift": "[yy] GTINT\n[yy+1] GEQINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C2yy",
+ "stack": "x - x>yy"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp_int",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "GTINT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "y",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "C3",
+ "tlb": "#C3 yy:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Returns -1 if x!=yy, 0 otherwise.\n-2^7 <= yy < 2^7.
\n",
+ "fift": "[yy] NEQINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C3yy",
+ "stack": "x - x!=yy"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp_int",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "NEQINT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C4",
+ "tlb": "#C4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Checks whether x is a NaN.
\n",
+ "fift": "ISNAN",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "C4",
+ "stack": "x - x=NaN"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_is_nan",
+ "line": 1007,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ISNAN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C5",
+ "tlb": "#C5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Throws an arithmetic overflow exception if x is a NaN.
\n",
+ "fift": "CHKNAN",
+ "fift_examples": [],
+ "gas": "18/68",
+ "opcode": "C5",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_chk_nan",
+ "line": 1016,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "CHKNAN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C700",
+ "tlb": "#C700"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether a Slice s is empty (i.e., contains no bits of data and no cell references).
\n",
+ "fift": "SEMPTY",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C700",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SEMPTY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C701",
+ "tlb": "#C701"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether Slice s has no bits of data.
\n",
+ "fift": "SDEMPTY",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C701",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDEMPTY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C702",
+ "tlb": "#C702"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether Slice s has no references.
\n",
+ "fift": "SREMPTY",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C702",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SREMPTY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C703",
+ "tlb": "#C703"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether the first bit of Slice s is a one.
\n",
+ "fift": "SDFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C703",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C704",
+ "tlb": "#C704"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Compares the data of s lexicographically with the data of s', returning -1, 0, or 1 depending on the result.
\n",
+ "fift": "SDLEXCMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C704",
+ "stack": "s s' - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_ibin_cs_cmp",
+ "line": 277,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDLEXCMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C705",
+ "tlb": "#C705"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether the data parts of s and s' coincide, equivalent to SDLEXCMP ISZERO.
\n",
+ "fift": "SDEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C705",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C708",
+ "tlb": "#C708"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a prefix of s'.
\n",
+ "fift": "SDPFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C708",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C709",
+ "tlb": "#C709"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a prefix of s, equivalent to SWAP SDPFX.
\n",
+ "fift": "SDPFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C709",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70A",
+ "tlb": "#C70A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a proper prefix of s' (i.e., a prefix distinct from s').
\n",
+ "fift": "SDPPFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70A",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPPFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70B",
+ "tlb": "#C70B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a proper prefix of s.
\n",
+ "fift": "SDPPFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70B",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPPFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70C",
+ "tlb": "#C70C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a suffix of s'.
\n",
+ "fift": "SDSFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70C",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70D",
+ "tlb": "#C70D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a suffix of s.
\n",
+ "fift": "SDSFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70D",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70E",
+ "tlb": "#C70E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a proper suffix of s'.
\n",
+ "fift": "SDPSFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70E",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPSFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70F",
+ "tlb": "#C70F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a proper suffix of s.
\n",
+ "fift": "SDPSFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70F",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPSFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C710",
+ "tlb": "#C710"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of leading zeroes in s.
\n",
+ "fift": "SDCNTLEAD0",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C710",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTLEAD0",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C711",
+ "tlb": "#C711"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of leading ones in s.
\n",
+ "fift": "SDCNTLEAD1",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C711",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTLEAD1",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C712",
+ "tlb": "#C712"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of trailing zeroes in s.
\n",
+ "fift": "SDCNTTRAIL0",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C712",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTTRAIL0",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C713",
+ "tlb": "#C713"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of trailing ones in s.
\n",
+ "fift": "SDCNTTRAIL1",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C713",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTTRAIL1",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C8",
+ "tlb": "#C8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Creates a new empty Builder.
\n",
+ "fift": "NEWC",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "C8",
+ "stack": "- b"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_new_builder",
+ "line": 334,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "NEWC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C9",
+ "tlb": "#C9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Converts a Builder into an ordinary Cell.
\n",
+ "fift": "ENDC",
+ "fift_examples": [],
+ "gas": "518",
+ "opcode": "C9",
+ "stack": "b - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_to_cell",
+ "line": 341,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "ENDC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CA",
+ "tlb": "#CA cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a signed cc+1-bit integer x into Builder b for 0 <= cc <= 255, throws a range check exception if x does not fit into cc+1 bits.
\n",
+ "fift": "[cc+1] STI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CAcc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STI",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CB",
+ "tlb": "#CB cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores an unsigned cc+1-bit integer x into Builder b. In all other respects it is similar to STI.
\n",
+ "fift": "[cc+1] STU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CBcc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CC",
+ "tlb": "#CC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a reference to Cell c into Builder b.
\n",
+ "fift": "STREF",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "CC",
+ "stack": "c b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref",
+ "line": 415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CD",
+ "tlb": "#CD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to ENDC SWAP STREF.
\n",
+ "fift": "STBREFR\nENDCST",
+ "fift_examples": [],
+ "gas": "518",
+ "opcode": "CD",
+ "stack": "b b'' - b"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref_rev",
+ "line": 484,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "child",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CE",
+ "tlb": "#CE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores Slice s into Builder b.
\n",
+ "fift": "STSLICE",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "CE",
+ "stack": "s b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice",
+ "line": 507,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF00",
+ "tlb": "#CF00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a signed l-bit integer x into b for 0 <= l <= 257.
\n",
+ "fift": "STIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF00",
+ "stack": "x b l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF01",
+ "tlb": "#CF01"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores an unsigned l-bit integer x into b for 0 <= l <= 256.
\n",
+ "fift": "STUX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF01",
+ "stack": "x b l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF02",
+ "tlb": "#CF02"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Similar to STIX, but with arguments in a different order.
\n",
+ "fift": "STIXR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF02",
+ "stack": "b x l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIXR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF03",
+ "tlb": "#CF03"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Similar to STUX, but with arguments in a different order.
\n",
+ "fift": "STUXR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF03",
+ "stack": "b x l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUXR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF04",
+ "tlb": "#CF04"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STIX. If there is no space in b, sets b'=b and f=-1.\nIf x does not fit into l bits, sets b'=b and f=1.\nIf the operation succeeds, b' is the new Builder and f=0.\nHowever, 0 <= l <= 257, with a range check exception if this is not so.
\n",
+ "fift": "STIXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF04",
+ "stack": "x b l - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF05",
+ "tlb": "#CF05"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STUX.
\n",
+ "fift": "STUXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF05",
+ "stack": "x b l - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF06",
+ "tlb": "#CF06"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STIXR.
\n",
+ "fift": "STIXRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF06",
+ "stack": "b x l - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIXRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF07",
+ "tlb": "#CF07"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STUXR.
\n",
+ "fift": "STUXRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF07",
+ "stack": "b x l - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUXRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF08",
+ "tlb": "#CF08 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of [cc+1] STI.
\n",
+ "fift": "[cc+1] STI_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF08cc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STI_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF09",
+ "tlb": "#CF09 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of [cc+1] STU.
\n",
+ "fift": "[cc+1] STU_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF09cc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STU_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0A",
+ "tlb": "#CF0A cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP [cc+1] STI.
\n",
+ "fift": "[cc+1] STIR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Acc",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0B",
+ "tlb": "#CF0B cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP [cc+1] STU.
\n",
+ "fift": "[cc+1] STUR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Bcc",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0C",
+ "tlb": "#CF0C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STI.
\n",
+ "fift": "[cc+1] STIQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Ccc",
+ "stack": "x b - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0D",
+ "tlb": "#CF0D cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STU.
\n",
+ "fift": "[cc+1] STUQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Dcc",
+ "stack": "x b - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0E",
+ "tlb": "#CF0E cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STIR.
\n",
+ "fift": "[cc+1] STIRQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Ecc",
+ "stack": "b x - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0F",
+ "tlb": "#CF0F cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STUR.
\n",
+ "fift": "[cc+1] STURQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Fcc",
+ "stack": "b x - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STURQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF10",
+ "tlb": "#CF10"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of STREF.
\n",
+ "fift": "STREF_l",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF10",
+ "stack": "c b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref_rev",
+ "line": 438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREF_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF11",
+ "tlb": "#CF11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP STBREFR.
\n",
+ "fift": "STBREF",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF11",
+ "stack": "b' b - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref",
+ "line": 461,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "child",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF12",
+ "tlb": "#CF12"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of STSLICE.
\n",
+ "fift": "STSLICE_l",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF12",
+ "stack": "s b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice",
+ "line": 507,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICE_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF13",
+ "tlb": "#CF13"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Appends all data from Builder b' to Builder b.
\n",
+ "fift": "STB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF13",
+ "stack": "b' b - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder",
+ "line": 553,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF14",
+ "tlb": "#CF14"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP STREF.
\n",
+ "fift": "STREFR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF14",
+ "stack": "b c - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref_rev",
+ "line": 438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF15",
+ "tlb": "#CF15"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer encoding of STBREFR.
\n",
+ "fift": "STBREFR_l",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF15",
+ "stack": "b b' - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref_rev",
+ "line": 484,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFR_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF16",
+ "tlb": "#CF16"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP STSLICE.
\n",
+ "fift": "STSLICER",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF16",
+ "stack": "b s - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice_rev",
+ "line": 530,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICER",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF17",
+ "tlb": "#CF17"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Concatenates two builders.\nEquivalent to SWAP STB.
\n",
+ "fift": "STBR\nBCONCAT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF17",
+ "stack": "b b' - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_rev",
+ "line": 576,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF18",
+ "tlb": "#CF18"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STREF.
\n",
+ "fift": "STREFQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF18",
+ "stack": "c b - c b -1 or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref",
+ "line": 415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF19",
+ "tlb": "#CF19"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STBREF.
\n",
+ "fift": "STBREFQ",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF19",
+ "stack": "b' b - b' b -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref",
+ "line": 461,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1A",
+ "tlb": "#CF1A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STSLICE.
\n",
+ "fift": "STSLICEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1A",
+ "stack": "s b - s b -1 or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice",
+ "line": 507,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1B",
+ "tlb": "#CF1B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STB.
\n",
+ "fift": "STBQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1B",
+ "stack": "b' b - b' b -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder",
+ "line": 553,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1C",
+ "tlb": "#CF1C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STREFR.
\n",
+ "fift": "STREFRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1C",
+ "stack": "b c - b c -1 or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref_rev",
+ "line": 438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1D",
+ "tlb": "#CF1D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STBREFR.
\n",
+ "fift": "STBREFRQ",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF1D",
+ "stack": "b b' - b b' -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref_rev",
+ "line": 484,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1E",
+ "tlb": "#CF1E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STSLICER.
\n",
+ "fift": "STSLICERQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1E",
+ "stack": "b s - b s -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice_rev",
+ "line": 530,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICERQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1F",
+ "tlb": "#CF1F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STBR.
\n",
+ "fift": "STBRQ\nBCONCATQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1F",
+ "stack": "b b' - b b' -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_rev",
+ "line": 576,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "CF20",
+ "tlb": "#CF20 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to PUSHREF STREFR.
\n",
+ "fift": "[ref] STREFCONST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF20",
+ "stack": "b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_const_ref",
+ "line": 647,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFCONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "name": "c1",
+ "type": "ref"
+ },
+ {
+ "display_hints": [],
+ "name": "c2",
+ "type": "ref"
+ }
+ ],
+ "prefix": "CF21",
+ "tlb": "#CF21 c1:^Cell c2:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to STREFCONST STREFCONST.
\n",
+ "fift": "[ref] [ref] STREF2CONST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF21",
+ "stack": "b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_const_ref",
+ "line": 647,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREF2CONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF23",
+ "tlb": "#CF23"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "If x!=0, creates a special or exotic cell from Builder b.\nThe type of the exotic cell must be stored in the first 8 bits of b.\nIf x=0, it is equivalent to ENDC. Otherwise some validity checks on the data and references of b are performed before creating the exotic cell.
\n",
+ "fift": "ENDXC",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF23",
+ "stack": "b x - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_to_special_cell",
+ "line": 349,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "ENDXC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF28",
+ "tlb": "#CF28"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian signed 32-bit integer.
\n",
+ "fift": "STILE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF28",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STILE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF29",
+ "tlb": "#CF29"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian unsigned 32-bit integer.
\n",
+ "fift": "STULE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF29",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STULE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF2A",
+ "tlb": "#CF2A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian signed 64-bit integer.
\n",
+ "fift": "STILE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF2A",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STILE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF2B",
+ "tlb": "#CF2B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian unsigned 64-bit integer.
\n",
+ "fift": "STULE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF2B",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STULE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF30",
+ "tlb": "#CF30"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the depth of Builder b. If no cell references are stored in b, then x=0; otherwise x is one plus the maximum of depths of cells referred to from b.
\n",
+ "fift": "BDEPTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF30",
+ "stack": "b - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF31",
+ "tlb": "#CF31"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of data bits already stored in Builder b.
\n",
+ "fift": "BBITS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF31",
+ "stack": "b - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF32",
+ "tlb": "#CF32"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of cell references already stored in b.
\n",
+ "fift": "BREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF32",
+ "stack": "b - y"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF33",
+ "tlb": "#CF33"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the numbers of both data bits and cell references in b.
\n",
+ "fift": "BBITREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF33",
+ "stack": "b - x y"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_2int_builder_func",
+ "line": 712,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF35",
+ "tlb": "#CF35"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of data bits that can still be stored in b.
\n",
+ "fift": "BREMBITS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF35",
+ "stack": "b - x'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREMBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF36",
+ "tlb": "#CF36"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of references that can still be stored in b.
\n",
+ "fift": "BREMREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF36",
+ "stack": "b - y'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREMREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "y2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF37",
+ "tlb": "#CF37"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the numbers of both data bits and references that can still be stored in b.
\n",
+ "fift": "BREMBITREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF37",
+ "stack": "b - x' y'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_2int_builder_func",
+ "line": 712,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREMBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF38",
+ "tlb": "#CF38 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether cc+1 bits can be stored into b, where 0 <= cc <= 255.
\n",
+ "fift": "[cc+1] BCHKBITS#",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "CF38cc",
+ "stack": "b -"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF39",
+ "tlb": "#CF39"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits can be stored into b, 0 <= x <= 1023. If there is no space for x more bits in b, or if x is not within the range 0...1023, throws an exception.
\n",
+ "fift": "BCHKBITS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "CF39",
+ "stack": "b x - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITS_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3A",
+ "tlb": "#CF3A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether y references can be stored into b, 0 <= y <= 7.
\n",
+ "fift": "BCHKREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "CF3A",
+ "stack": "b y - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3B",
+ "tlb": "#CF3B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits and y references can be stored into b, 0 <= x <= 1023, 0 <= y <= 7.
\n",
+ "fift": "BCHKBITREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "CF3B",
+ "stack": "b x y - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF3C",
+ "tlb": "#CF3C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether cc+1 bits can be stored into b, where 0 <= cc <= 255.
\n",
+ "fift": "[cc+1] BCHKBITSQ#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF3Ccc",
+ "stack": "b - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3D",
+ "tlb": "#CF3D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits can be stored into b, 0 <= x <= 1023.
\n",
+ "fift": "BCHKBITSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF3D",
+ "stack": "b x - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITSQ_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3E",
+ "tlb": "#CF3E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether y references can be stored into b, 0 <= y <= 7.
\n",
+ "fift": "BCHKREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF3E",
+ "stack": "b y - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3F",
+ "tlb": "#CF3F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits and y references can be stored into b, 0 <= x <= 1023, 0 <= y <= 7.
\n",
+ "fift": "BCHKBITREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF3F",
+ "stack": "b x y - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF40",
+ "tlb": "#CF40"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores n binary zeroes into Builder b.
\n",
+ "fift": "STZEROES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF40",
+ "stack": "b n - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_same",
+ "line": 752,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STZEROES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF41",
+ "tlb": "#CF41"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores n binary ones into Builder b.
\n",
+ "fift": "STONES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF41",
+ "stack": "b n - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_same",
+ "line": 752,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STONES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF42",
+ "tlb": "#CF42"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores n binary xes (0 <= x <= 1) into Builder b.
\n",
+ "fift": "STSAME",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF42",
+ "stack": "b n x - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_same",
+ "line": 752,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSAME",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF50",
+ "tlb": "#CF50"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Same as ENDC CTOS, but without gas cost for cell creation and loading.
\n",
+ "fift": "BTOS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF50",
+ "stack": "b - s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_to_slice",
+ "line": 767,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BTOS",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 3,
+ "bits_padding": 2,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 57,
+ "max_refs": 3,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "refs_add": 0,
+ "refs_length_var_size": 2,
+ "type": "subslice"
+ }
+ ],
+ "prefix": "CFC_",
+ "tlb": "#CFC_ x:(## 2) y:(## 3) c:(x * ^Cell) sss:((8 * y + 2) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a constant subslice sss.\nDetails: sss consists of 0 <= x <= 3 references and up to 8y+2 data bits, with 0 <= y <= 7. Completion bit is assumed.\nNote that the assembler can replace STSLICECONST with PUSHSLICE STSLICER if the slice is too big.
\n",
+ "fift": "[slice] STSLICECONST",
+ "fift_examples": [],
+ "gas": "24",
+ "opcode": "CFC_xysss",
+ "stack": "b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_const_slice",
+ "line": 776,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICECONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D0",
+ "tlb": "#D0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Converts a Cell into a Slice. Notice that c must be either an ordinary cell, or an exotic cell which is automatically loaded to yield an ordinary cell c', converted into a Slice afterwards.
\n",
+ "fift": "CTOS",
+ "fift_examples": [],
+ "gas": "118/43",
+ "opcode": "D0",
+ "stack": "c - s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_to_slice",
+ "line": 883,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CTOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D1",
+ "tlb": "#D1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Removes a Slice s from the stack, and throws an exception if it is not empty.
\n",
+ "fift": "ENDS",
+ "fift_examples": [],
+ "gas": "18/68",
+ "opcode": "D1",
+ "stack": "s - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_empty",
+ "line": 946,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "ENDS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D2",
+ "tlb": "#D2 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads (i.e., parses) a signed cc+1-bit integer x from Slice s, and returns the remainder of s as s'.
\n",
+ "fift": "[cc+1] LDI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D2cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDI",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D3",
+ "tlb": "#D3 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an unsigned cc+1-bit integer x from Slice s.
\n",
+ "fift": "[cc+1] LDU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D3cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D4",
+ "tlb": "#D4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a cell reference c from s.
\n",
+ "fift": "LDREF",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "D4",
+ "stack": "s - c s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_ref",
+ "line": 1013,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D5",
+ "tlb": "#D5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Equivalent to LDREF SWAP CTOS.
\n",
+ "fift": "LDREFRTOS",
+ "fift_examples": [],
+ "gas": "118/43",
+ "opcode": "D5",
+ "stack": "s - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_ref_rev_to_slice",
+ "line": 1036,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDREFRTOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D6",
+ "tlb": "#D6 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Cuts the next cc+1 bits of s into a separate Slice s''.
\n",
+ "fift": "[cc+1] LDSLICE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D6cc",
+ "stack": "s - s'' s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D700",
+ "tlb": "#D700"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a signed l-bit (0 <= l <= 257) integer x from Slice s, and returns the remainder of s as s'.
\n",
+ "fift": "LDIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D700",
+ "stack": "s l - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDIX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D701",
+ "tlb": "#D701"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an unsigned l-bit integer x from (the first l bits of) s, with 0 <= l <= 256.
\n",
+ "fift": "LDUX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D701",
+ "stack": "s l - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDUX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D702",
+ "tlb": "#D702"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a signed l-bit integer from Slice s, for 0 <= l <= 257.
\n",
+ "fift": "PLDIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D702",
+ "stack": "s l - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDIX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D703",
+ "tlb": "#D703"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads an unsigned l-bit integer from s, for 0 <= l <= 256.
\n",
+ "fift": "PLDUX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D703",
+ "stack": "s l - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D704",
+ "tlb": "#D704"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of LDIX: loads a signed l-bit integer from s similarly to LDIX, but returns a success flag, equal to -1 on success or to 0 on failure (if s does not have l bits), instead of throwing a cell underflow exception.
\n",
+ "fift": "LDIXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D704",
+ "stack": "s l - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDIXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D705",
+ "tlb": "#D705"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of LDUX.
\n",
+ "fift": "LDUXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D705",
+ "stack": "s l - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDUXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D706",
+ "tlb": "#D706"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of PLDIX.
\n",
+ "fift": "PLDIXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D706",
+ "stack": "s l - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDIXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D707",
+ "tlb": "#D707"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of PLDUX.
\n",
+ "fift": "PLDUXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D707",
+ "stack": "s l - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D708",
+ "tlb": "#D708 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A longer encoding for LDI.
\n",
+ "fift": "[cc+1] LDI_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D708cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDI_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D709",
+ "tlb": "#D709 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A longer encoding for LDU.
\n",
+ "fift": "[cc+1] LDU_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D709cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDU_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70A",
+ "tlb": "#D70A cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a signed cc+1-bit integer from Slice s.
\n",
+ "fift": "[cc+1] PLDI",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Acc",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDI",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70B",
+ "tlb": "#D70B cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads an unsigned cc+1-bit integer from s.
\n",
+ "fift": "[cc+1] PLDU",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Bcc",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70C",
+ "tlb": "#D70C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDI.
\n",
+ "fift": "[cc+1] LDIQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Ccc",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDIQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70D",
+ "tlb": "#D70D cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDU.
\n",
+ "fift": "[cc+1] LDUQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Dcc",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDUQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70E",
+ "tlb": "#D70E cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of PLDI.
\n",
+ "fift": "[cc+1] PLDIQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Ecc",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDIQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70F",
+ "tlb": "#D70F cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of PLDU.
\n",
+ "fift": "[cc+1] PLDUQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Fcc",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "plduz"
+ }
+ ],
+ "max_value": 7,
+ "min_value": 0,
+ "name": "c",
+ "size": 3,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D714_",
+ "tlb": "#D714_ c:uint3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads the first 32(c+1) bits of Slice s into an unsigned integer x, for 0 <= c <= 7. If s is shorter than necessary, missing bits are assumed to be zero. This operation is intended to be used along with IFBITJMP and similar instructions.
\n",
+ "fift": "[32(c+1)] PLDUZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D714_c",
+ "stack": "s - s x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D718",
+ "tlb": "#D718"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads the first 0 <= l <= 1023 bits from Slice s into a separate Slice s'', returning the remainder of s as s'.
\n",
+ "fift": "LDSLICEX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D718",
+ "stack": "s l - s'' s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D719",
+ "tlb": "#D719"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 <= l <= 1023 bits of s as s''.
\n",
+ "fift": "PLDSLICEX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D719",
+ "stack": "s l - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D71A",
+ "tlb": "#D71A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDSLICEX.
\n",
+ "fift": "LDSLICEXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D71A",
+ "stack": "s l - s'' s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICEXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D71B",
+ "tlb": "#D71B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDSLICEXQ.
\n",
+ "fift": "PLDSLICEXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D71B",
+ "stack": "s l - s' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICEXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71C",
+ "tlb": "#D71C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A longer encoding for LDSLICE.
\n",
+ "fift": "[cc+1] LDSLICE_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Ccc",
+ "stack": "s - s'' s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICE_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71D",
+ "tlb": "#D71D cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 < cc+1 <= 256 bits of s as s''.
\n",
+ "fift": "[cc+1] PLDSLICE",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Dcc",
+ "stack": "s - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71E",
+ "tlb": "#D71E cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDSLICE.
\n",
+ "fift": "[cc+1] LDSLICEQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Ecc",
+ "stack": "s - s'' s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71F",
+ "tlb": "#D71F cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of PLDSLICE.
\n",
+ "fift": "[cc+1] PLDSLICEQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Fcc",
+ "stack": "s - s'' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D720",
+ "tlb": "#D720"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 <= l <= 1023 bits of s. It is equivalent to PLDSLICEX.
\n",
+ "fift": "SDCUTFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D720",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCUTFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D721",
+ "tlb": "#D721"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the first 0 <= l <= 1023 bits of s. It is equivalent to LDSLICEX NIP.
\n",
+ "fift": "SDSKIPFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D721",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSKIPFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D722",
+ "tlb": "#D722"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the last 0 <= l <= 1023 bits of s.
\n",
+ "fift": "SDCUTLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D722",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCUTLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D723",
+ "tlb": "#D723"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the last 0 <= l <= 1023 bits of s.
\n",
+ "fift": "SDSKIPLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D723",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSKIPLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D724",
+ "tlb": "#D724"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns 0 <= l' <= 1023 bits of s starting from offset 0 <= l <= 1023, thus extracting a bit substring out of the data of s.
\n",
+ "fift": "SDSUBSTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D724",
+ "stack": "s l l' - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSUBSTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D726",
+ "tlb": "#D726"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether s begins with (the data bits of) s', and removes s' from s on success. On failure throws a cell deserialization exception. Primitive SDPFXREV can be considered a quiet version of SDBEGINSX.
\n",
+ "fift": "SDBEGINSX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D726",
+ "stack": "s s' - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with",
+ "line": 1215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINSX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D727",
+ "tlb": "#D727"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of SDBEGINSX.
\n",
+ "fift": "SDBEGINSXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D727",
+ "stack": "s s' - s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with",
+ "line": 1215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINSXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 7,
+ "bits_padding": 3,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 1018,
+ "max_refs": 0,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "D72A_",
+ "tlb": "#D72A_ x:(## 7) sss:((8 * x + 3) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether s begins with constant bitstring sss of length 8x+3 (with continuation bit assumed), where 0 <= x <= 127, and removes sss from s on success.
\n",
+ "fift": "[slice] SDBEGINS",
+ "fift_examples": [],
+ "gas": "31",
+ "opcode": "D72A_xsss",
+ "stack": "s - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with_const",
+ "line": 1222,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 7,
+ "bits_padding": 3,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 1018,
+ "max_refs": 0,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "D72E_",
+ "tlb": "#D72E_ x:(## 7) sss:((8 * x + 3) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of SDBEGINS.
\n",
+ "fift": "[slice] SDBEGINSQ",
+ "fift_examples": [],
+ "gas": "31",
+ "opcode": "D72E_xsss",
+ "stack": "s - s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with_const",
+ "line": 1222,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D730",
+ "tlb": "#D730"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 <= l <= 1023 bits and first 0 <= r <= 4 references of s.
\n",
+ "fift": "SCUTFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D730",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCUTFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D731",
+ "tlb": "#D731"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the first l bits of s and r references of s.
\n",
+ "fift": "SSKIPFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D731",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SSKIPFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D732",
+ "tlb": "#D732"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the last 0 <= l <= 1023 data bits and last 0 <= r <= 4 references of s.
\n",
+ "fift": "SCUTLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D732",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCUTLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D733",
+ "tlb": "#D733"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the last l bits of s and r references of s.
\n",
+ "fift": "SSKIPLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D733",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SSKIPLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D734",
+ "tlb": "#D734"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns 0 <= l' <= 1023 bits and 0 <= r' <= 4 references from Slice s, after skipping the first 0 <= l <= 1023 bits and first 0 <= r <= 4 references.
\n",
+ "fift": "SUBSLICE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D734",
+ "stack": "s l r l' r' - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_subslice",
+ "line": 1246,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SUBSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D736",
+ "tlb": "#D736"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Splits the first 0 <= l <= 1023 data bits and first 0 <= r <= 4 references from s into s', returning the remainder of s as s''.
\n",
+ "fift": "SPLIT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D736",
+ "stack": "s l r - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_split",
+ "line": 1260,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SPLIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D737",
+ "tlb": "#D737"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of SPLIT.
\n",
+ "fift": "SPLITQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D737",
+ "stack": "s l r - s' s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_split",
+ "line": 1260,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SPLITQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D739",
+ "tlb": "#D739"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Transforms an ordinary or exotic cell into a Slice, as if it were an ordinary cell. A flag is returned indicating whether c is exotic. If that be the case, its type can later be deserialized from the first eight bits of s.
\n",
+ "fift": "XCTOS",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "D739",
+ "stack": "c - s ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_to_slice_maybe_special",
+ "line": 891,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "XCTOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "flag",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D73A",
+ "tlb": "#D73A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an exotic cell c and returns an ordinary cell c'. If c is already ordinary, does nothing. If c cannot be loaded, throws an exception.
\n",
+ "fift": "XLOAD",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "D73A",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_special_cell",
+ "line": 901,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "XLOAD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D73B",
+ "tlb": "#D73B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an exotic cell c and returns an ordinary cell c'. If c is already ordinary, does nothing. If c cannot be loaded, returns 0.
\n",
+ "fift": "XLOADQ",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "D73B",
+ "stack": "c - c' -1 or c 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_special_cell",
+ "line": 901,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "XLOADQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D741",
+ "tlb": "#D741"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits in Slice s. If this is not the case, throws a cell deserialisation (i.e., cell underflow) exception.
\n",
+ "fift": "SCHKBITS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "D741",
+ "stack": "s l - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D742",
+ "tlb": "#D742"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least r references in Slice s.
\n",
+ "fift": "SCHKREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "D742",
+ "stack": "s r - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D743",
+ "tlb": "#D743"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits and r references in Slice s.
\n",
+ "fift": "SCHKBITREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "D743",
+ "stack": "s l r - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args2",
+ "line": 1301,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D745",
+ "tlb": "#D745"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits in Slice s.
\n",
+ "fift": "SCHKBITSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D745",
+ "stack": "s l - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D746",
+ "tlb": "#D746"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least r references in Slice s.
\n",
+ "fift": "SCHKREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D746",
+ "stack": "s r - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D747",
+ "tlb": "#D747"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits and r references in Slice s.
\n",
+ "fift": "SCHKBITREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D747",
+ "stack": "s l r - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args2",
+ "line": 1301,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D748",
+ "tlb": "#D748"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the n-th cell reference of Slice s for 0 <= n <= 3.
\n",
+ "fift": "PLDREFVAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D748",
+ "stack": "s n - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref",
+ "line": 1000,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDREFVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D749",
+ "tlb": "#D749"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the number of data bits in Slice s.
\n",
+ "fift": "SBITS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D749",
+ "stack": "s - l"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_bits_refs",
+ "line": 1318,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D74A",
+ "tlb": "#D74A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the number of references in Slice s.
\n",
+ "fift": "SREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D74A",
+ "stack": "s - r"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_bits_refs",
+ "line": 1318,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D74B",
+ "tlb": "#D74B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns both the number of data bits and the number of references in s.
\n",
+ "fift": "SBITREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D74B",
+ "stack": "s - l r"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_bits_refs",
+ "line": 1318,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "n",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D74E_",
+ "tlb": "#D74E_ n:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the n-th cell reference of Slice s, where 0 <= n <= 3.
\n",
+ "fift": "[n] PLDREFIDX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D74E_n",
+ "stack": "s - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDREFIDX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D750",
+ "tlb": "#D750"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian signed 32-bit integer.
\n",
+ "fift": "LDILE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D750",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D751",
+ "tlb": "#D751"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "LDULE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D751",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D752",
+ "tlb": "#D752"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian signed 64-bit integer.
\n",
+ "fift": "LDILE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D752",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D753",
+ "tlb": "#D753"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "LDULE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D753",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D754",
+ "tlb": "#D754"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian signed 32-bit integer.
\n",
+ "fift": "PLDILE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D754",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D755",
+ "tlb": "#D755"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "PLDULE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D755",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D756",
+ "tlb": "#D756"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian signed 64-bit integer.
\n",
+ "fift": "PLDILE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D756",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D757",
+ "tlb": "#D757"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "PLDULE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D757",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D758",
+ "tlb": "#D758"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian signed 32-bit integer.
\n",
+ "fift": "LDILE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D758",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D759",
+ "tlb": "#D759"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "LDULE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D759",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75A",
+ "tlb": "#D75A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian signed 64-bit integer.
\n",
+ "fift": "LDILE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75A",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75B",
+ "tlb": "#D75B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "LDULE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75B",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75C",
+ "tlb": "#D75C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian signed 32-bit integer.
\n",
+ "fift": "PLDILE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75C",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75D",
+ "tlb": "#D75D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "PLDULE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75D",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75E",
+ "tlb": "#D75E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian signed 64-bit integer.
\n",
+ "fift": "PLDILE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75E",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75F",
+ "tlb": "#D75F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "PLDULE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75F",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D760",
+ "tlb": "#D760"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the count n of leading zero bits in s, and removes these bits from s.
\n",
+ "fift": "LDZEROES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D760",
+ "stack": "s - n s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_same",
+ "line": 1371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDZEROES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D761",
+ "tlb": "#D761"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the count n of leading one bits in s, and removes these bits from s.
\n",
+ "fift": "LDONES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D761",
+ "stack": "s - n s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_same",
+ "line": 1371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDONES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D762",
+ "tlb": "#D762"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the count n of leading bits equal to 0 <= x <= 1 in s, and removes these bits from s.
\n",
+ "fift": "LDSAME",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D762",
+ "stack": "s x - n s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_same",
+ "line": 1371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSAME",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D764",
+ "tlb": "#D764"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the depth of Slice s. If s has no references, then x=0; otherwise x is one plus the maximum of depths of cells referred to from s.
\n",
+ "fift": "SDEPTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D764",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_depth",
+ "line": 1396,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D765",
+ "tlb": "#D765"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the depth of Cell c. If c has no references, then x=0; otherwise x is one plus the maximum of depths of cells referred to from c. If c is a Null instead of a Cell, returns zero.
\n",
+ "fift": "CDEPTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D765",
+ "stack": "c - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_depth",
+ "line": 1388,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D766",
+ "tlb": "#D766"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns level of the cell.
\n",
+ "fift": "CLEVEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D766",
+ "stack": "cell - level"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_level",
+ "line": 1404,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CLEVEL",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "level",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D767",
+ "tlb": "#D767"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns level mask of the cell.
\n",
+ "fift": "CLEVELMASK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D767",
+ "stack": "cell - level_mask"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_level_mask",
+ "line": 1412,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CLEVELMASK",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "level_mask",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "n",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D76A_",
+ "tlb": "#D76A_ i:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith hash of the cell.
\n",
+ "fift": "[i] CHASHI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D76A_",
+ "stack": "cell - hash"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_hash_i",
+ "line": 1420,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CHASHI",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "n",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D76E_",
+ "tlb": "#D76E_ i:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith depth of the cell.
\n",
+ "fift": "[i] CDEPTHI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D76E_",
+ "stack": "cell - depth"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_depth_i",
+ "line": 1438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CDEPTHI",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "depth",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D770",
+ "tlb": "#D770"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith hash of the cell.
\n",
+ "fift": "CHASHIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D770",
+ "stack": "cell i - hash"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_hash_i",
+ "line": 1420,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CHASHIX",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D771",
+ "tlb": "#D771"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith depth of the cell.
\n",
+ "fift": "CDEPTHIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D771",
+ "stack": "cell i - depth"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_depth_i",
+ "line": 1438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CDEPTHIX",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "depth",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D8",
+ "tlb": "#D8"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Calls, or executes, continuation c.
\n",
+ "fift": "EXECUTE\nCALLX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "D8",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_execute",
+ "line": 33,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "EXECUTE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D9",
+ "tlb": "#D9"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Jumps, or transfers control, to continuation c.\nThe remainder of the previous current continuation cc is discarded.
\n",
+ "fift": "JMPX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "D9",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx",
+ "line": 53,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DA",
+ "tlb": "#DA p:uint4 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Calls continuation c with p parameters and expecting r return values\n0 <= p <= 15, 0 <= r <= 15
\n",
+ "fift": "[p] [r] CALLXARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DApr",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callx_args",
+ "line": 39,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLXARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB0",
+ "tlb": "#DB0 p:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Calls continuation c with 0 <= p <= 15 parameters, expecting an arbitrary number of return values.
\n",
+ "fift": "[p] -1 CALLXARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB0p",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callx_args",
+ "line": 39,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLXARGS_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB1",
+ "tlb": "#DB1 p:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Jumps to continuation c, passing only the top 0 <= p <= 15 values from the current stack to it (the remainder of the current stack is discarded).
\n",
+ "fift": "[p] JMPXARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB1p",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx_args",
+ "line": 59,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPXARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB2",
+ "tlb": "#DB2 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Returns to c0, with 0 <= r <= 15 return values taken from the current stack.
\n",
+ "fift": "[r] RETARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB2r",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_args",
+ "line": 71,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB30",
+ "tlb": "#DB30"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Returns to the continuation at c0. The remainder of the current continuation cc is discarded.\nApproximately equivalent to c0 PUSHCTR JMPX.
\n",
+ "fift": "RET\nRETTRUE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB30",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret",
+ "line": 66,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB31",
+ "tlb": "#DB31"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Returns to the continuation at c1.\nApproximately equivalent to c1 PUSHCTR JMPX.
\n",
+ "fift": "RETALT\nRETFALSE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB31",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_alt",
+ "line": 77,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB32",
+ "tlb": "#DB32"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ },
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Performs RETTRUE if integer f!=0, or RETFALSE if f=0.
\n",
+ "fift": "BRANCH\nRETBOOL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB32",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_bool",
+ "line": 82,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BRANCH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB34",
+ "tlb": "#DB34"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Call with current continuation, transfers control to c, pushing the old value of cc into c's stack (instead of discarding it or writing it into new c0).
\n",
+ "fift": "CALLCC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB34",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callcc",
+ "line": 87,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLCC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB35",
+ "tlb": "#DB35"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLCC, but the remainder of the current continuation (the old value of cc) is converted into a Slice before pushing it into the stack of c.
\n",
+ "fift": "JMPXDATA",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB35",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx_data",
+ "line": 96,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPXDATA",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "optional_nargs"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB36",
+ "tlb": "#DB36 p:uint4 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLXARGS, but pushes the old value of cc (along with the top 0 <= p <= 15 values from the original stack) into the stack of newly-invoked continuation c, setting cc.nargs to -1 <= r <= 14.
\n",
+ "fift": "[p] [r] CALLCCARGS",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "DB36pr",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callcc_args",
+ "line": 103,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLCCARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB38",
+ "tlb": "#DB38"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLXARGS, but takes -1 <= p,r <= 254 from the stack. The next three operations also take p and r from the stack, both in the range -1...254.
\n",
+ "fift": "CALLXVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB38",
+ "stack": "c p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callx_varargs",
+ "line": 114,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLXVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB39",
+ "tlb": "#DB39"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to RETARGS.
\n",
+ "fift": "RETVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB39",
+ "stack": "p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_varargs",
+ "line": 123,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB3A",
+ "tlb": "#DB3A"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to JMPXARGS.
\n",
+ "fift": "JMPXVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB3A",
+ "stack": "c p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx_varargs",
+ "line": 130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPXVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB3B",
+ "tlb": "#DB3B"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLCCARGS.
\n",
+ "fift": "CALLCCVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB3B",
+ "stack": "c p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callcc_varargs",
+ "line": 139,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLCCVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "DB3C",
+ "tlb": "#DB3C c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to PUSHREFCONT CALLX.
\n",
+ "fift": "[ref] CALLREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "DB3C",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_do_with_ref",
+ "line": 152,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "DB3D",
+ "tlb": "#DB3D c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to PUSHREFCONT JMPX.
\n",
+ "fift": "[ref] JMPREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "DB3D",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "DB3E",
+ "tlb": "#DB3E c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to PUSHREFCONT JMPXDATA.
\n",
+ "fift": "[ref] JMPREFDATA",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "DB3E",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_data",
+ "line": 209,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPREFDATA",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB3F",
+ "tlb": "#DB3F"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to c0 PUSHCTR JMPXDATA. In this way, the remainder of the current continuation is converted into a Slice and returned to the caller.
\n",
+ "fift": "RETDATA",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB3F",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_data",
+ "line": 209,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETDATA",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 4095,
+ "min_value": 0,
+ "name": "flags",
+ "size": 12,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB4",
+ "tlb": "#DB4 flags:(## 12)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Runs child VM with code code and stack x_1...x_n. Returns the resulting stack x'_1...x'_m and exitcode. Other arguments and return values are enabled by flags.
\nFlags operate similarly to RUNVMX in Fift:
\n\n+1: sets c3 to code. \n+2: pushes an implicit 0 before executing the code. \n+4: takes persistent data c4 from the stack and returns its final value. \n+8: takes the gas limit g_l from the stack and returns the consumed gas g_c. \n+16: takes c7 (smart contract context) from the stack. \n+32: returns the final value of c5 (actions). \n+64: pops the hard gas limit g_m enabled by ACCEPT from the stack. \n+128: enables \"isolated gas consumption\", meaning the child VM maintains a separate set of visited cells and a chksgn counter. \n+256: pops an integer r and ensures exactly r values are returned from the top of the stack:\n\n- If
RUNVM call succeeds and r is set, it returns r elements. If r is not set, it returns all available elements. \n- If
RUNVM is successful but lacks elements on the stack, meaning the stack depth is less than r, it is treated as an exception in the child VM. The exit_code is set to -3, and exit_arg is set to 0, so 0 is returned as the only stack element. \n- If
RUNVM fails with an exception, only one element is returned, exit_arg, which should not be confused with exit_code. \n- In the case of running out of gas,
exit_code is set to -14, and exit_arg contains the amount of gas. \n
\n \n
\nGas cost:
\n\n- 66 gas;
\n- 1 gas for each stack element passed to the child VM (the first 32 elements are free);
\n- 1 gas for each stack element returned from the child VM (the first 32 elements are free).
\n
\n",
+ "fift": "flags RUNVM",
+ "fift_examples": [],
+ "gas": "74",
+ "opcode": "DB4fff",
+ "stack": "x_1 ... x_n n code [r] [c4] [c7] [g_l] [g_m] - x'_1 ... x'_m exitcode [data'] [c4'] [c5] [g_c]"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_execute",
+ "line": 33,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RUNVM",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB50",
+ "tlb": "#DB50"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Runs child VM with code code and stack x_1...x_n. Returns the resulting stack x'_1...x'_m and exitcode. Other arguments and return values are enabled by flags.
\nFlags operate similarly to RUNVMX in Fift:
\n\n+1: sets c3 to code. \n+2: pushes an implicit 0 before executing the code. \n+4: takes persistent data c4 from the stack and returns its final value. \n+8: takes the gas limit g_l from the stack and returns the consumed gas g_c. \n+16: takes c7 (smart contract context) from the stack. \n+32: returns the final value of c5 (actions). \n+64: pops the hard gas limit g_m enabled by ACCEPT from the stack. \n+128: enables \"isolated gas consumption\", meaning the child VM maintains a separate set of visited cells and a chksgn counter. \n+256: pops an integer r and ensures exactly r values are returned from the top of the stack:\n\n- If
RUNVM call succeeds and r is set, it returns r elements. If r is not set, it returns all available elements. \n- If
RUNVM is successful but lacks elements on the stack, meaning the stack depth is less than r, it is treated as an exception in the child VM. The exit_code is set to -3, and exit_arg is set to 0, so 0 is returned as the only stack element. \n- If
RUNVM fails with an exception, only one element is returned, exit_arg, which should not be confused with exit_code. \n- In the case of running out of gas,
exit_code is set to -14, and exit_arg contains the amount of gas. \n
\n \n
\nGas cost:
\n\n- 66 gas;
\n- 1 gas for each stack element passed to the child VM (the first 32 elements are free);
\n- 1 gas for each stack element returned from the child VM (the first 32 elements are free).
\n
\n",
+ "fift": "RUNVMX",
+ "fift_examples": [],
+ "gas": "66",
+ "opcode": "DB50",
+ "stack": "x_1 ... x_n n code [r] [c4] [c7] [g_l] [g_m] flags - x'_1 ... x'_m exitcode [data'] [c4'] [c5] [g_c]"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_runvmx",
+ "line": 277,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RUNVMX",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DC",
+ "tlb": "#DC"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a RET, but only if integer f is non-zero. If f is a NaN, throws an integer overflow exception.
\n",
+ "fift": "IFRET\nIFNOT:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "DC",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifret",
+ "line": 369,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFRET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DD",
+ "tlb": "#DD"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a RET, but only if integer f is zero.
\n",
+ "fift": "IFNOTRET\nIF:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "DD",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnotret",
+ "line": 377,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTRET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DE",
+ "tlb": "#DE"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs EXECUTE for c (i.e., executes c), but only if integer f is non-zero. Otherwise simply discards both values.
\n",
+ "fift": "IF",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IF`.",
+ "fift": "IF:<{ code }> <{ code }>IF"
+ }
+ ],
+ "gas": "18",
+ "opcode": "DE",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if",
+ "line": 325,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DF",
+ "tlb": "#DF"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Executes continuation c, but only if integer f is zero. Otherwise simply discards both values.
\n",
+ "fift": "IFNOT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IFNOT`.",
+ "fift": "IFNOT:<{ code }> <{ code }>IFNOT"
+ }
+ ],
+ "gas": "18",
+ "opcode": "DF",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnot",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E0",
+ "tlb": "#E0"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Jumps to c (similarly to JMPX), but only if f is non-zero.
\n",
+ "fift": "IFJMP",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IFJMP`.",
+ "fift": "IFJMP:<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E0",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_jmp",
+ "line": 347,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E1",
+ "tlb": "#E1"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Jumps to c (similarly to JMPX), but only if f is zero.
\n",
+ "fift": "IFNOTJMP",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IFNOTJMP`.",
+ "fift": "IFNOTJMP:<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E1",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnot_jmp",
+ "line": 358,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E2",
+ "tlb": "#E2"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "If integer f is non-zero, executes c, otherwise executes c'. Equivalent to CONDSELCHK EXECUTE.
\n",
+ "fift": "IFELSE",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code1 }> CONT` `<{ code2 }> CONT` `IFELSE`.",
+ "fift": "IF:<{ code1 }>ELSE<{ code2 }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E2",
+ "stack": "f c c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_else",
+ "line": 385,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFELSE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E300",
+ "tlb": "#E300 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IF, with the optimization that the cell reference is not actually loaded into a Slice and then converted into an ordinary Continuation if f=0.\nGas consumption of this primitive depends on whether f=0 and whether the reference was loaded before.\nSimilar remarks apply other primitives that accept a continuation as a reference.
\n",
+ "fift": "[ref] IFREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E300",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifret",
+ "line": 369,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E301",
+ "tlb": "#E301 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFNOT.
\n",
+ "fift": "[ref] IFNOTREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E301",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnotret",
+ "line": 377,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E302",
+ "tlb": "#E302 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFJMP.
\n",
+ "fift": "[ref] IFJMPREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E302",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E303",
+ "tlb": "#E303 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFNOTJMP.
\n",
+ "fift": "[ref] IFNOTJMPREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E303",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_condsel",
+ "line": 398,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E304",
+ "tlb": "#E304"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "If integer f is non-zero, returns x, otherwise returns y. Notice that no type checks are performed on x and y; as such, it is more like a conditional stack operation. Roughly equivalent to ROT ISZERO INC ROLLX NIP.
\n",
+ "fift": "CONDSEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E304",
+ "stack": "f x y - x or y"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_condsel",
+ "line": 398,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CONDSEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E305",
+ "tlb": "#E305"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Same as CONDSEL, but first checks whether x and y have the same type.
\n",
+ "fift": "CONDSELCHK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E305",
+ "stack": "f x y - x or y"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_condsel_chk",
+ "line": 408,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CONDSELCHK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E308",
+ "tlb": "#E308"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs RETALT if integer f!=0.
\n",
+ "fift": "IFRETALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E308",
+ "stack": "f -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifretalt",
+ "line": 421,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFRETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E309",
+ "tlb": "#E309"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs RETALT if integer f=0.
\n",
+ "fift": "IFNOTRETALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E309",
+ "stack": "f -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnotretalt",
+ "line": 429,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTRETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E30D",
+ "tlb": "#E30D c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT SWAP IFELSE, with the optimization that the cell reference is not actually loaded into a Slice and then converted into an ordinary Continuation if f=0. Similar remarks apply to the next two primitives: cells are converted into continuations only when necessary.
\n",
+ "fift": "[ref] IFREFELSE",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E30D",
+ "stack": "f c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifref_elseref",
+ "line": 193,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFREFELSE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E30E",
+ "tlb": "#E30E c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFELSE.
\n",
+ "fift": "[ref] IFELSEREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E30E",
+ "stack": "f c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifelse_ref",
+ "line": 174,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFELSEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c1",
+ "type": "ref"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c2",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E30F",
+ "tlb": "#E30F c1:^Cell c2:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c1"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT PUSHREFCONT IFELSE.
\n",
+ "fift": "[ref] [ref] IFREFELSEREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "E30F",
+ "stack": "f -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifref_elseref",
+ "line": 193,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFREFELSEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "prefix": "E39_",
+ "tlb": "#E39_ n:uint5"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Checks whether bit 0 <= n <= 31 is set in integer x, and if so, performs JMPX to continuation c. Value x is left in the stack.
\n",
+ "fift": "[n] IFBITJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E39_n",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmp",
+ "line": 437,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFBITJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "prefix": "E3B_",
+ "tlb": "#E3B_ n:uint5"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Jumps to c if bit 0 <= n <= 31 is not set in integer x.
\n",
+ "fift": "[n] IFNBITJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E3B_n",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmp",
+ "line": 437,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNBITJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E3D_",
+ "tlb": "#E3D_ n:uint5 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a JMPREF if bit 0 <= n <= 31 is set in integer x.
\n",
+ "fift": "[ref] [n] IFBITJMPREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "E3D_n",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFBITJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E3F_",
+ "tlb": "#E3F_ n:uint5 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a JMPREF if bit 0 <= n <= 31 is not set in integer x.
\n",
+ "fift": "[ref] [n] IFNBITJMPREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "E3F_n",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNBITJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E4",
+ "tlb": "#E4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Executes continuation c n times, if integer n is non-negative. If n>=2^31 or n<-2^31, generates a range check exception.\nNotice that a RET inside the code of c works as a continue, not as a break. One should use either alternative (experimental) loops or alternative RETALT (along with a SETEXITALT before the loop) to break out of a loop.
\n",
+ "fift": "REPEAT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `REPEAT`.",
+ "fift": "REPEAT:<{ code }> <{ code }>REPEAT"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E4",
+ "stack": "n c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat",
+ "line": 489,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEAT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E5",
+ "tlb": "#E5"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "type": "cc"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEAT, but it is applied to the current continuation cc.
\n",
+ "fift": "REPEATEND\nREPEAT:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "E5",
+ "stack": "n - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat_end",
+ "line": 501,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEATEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E6",
+ "tlb": "#E6"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Executes continuation c, then pops an integer x from the resulting stack. If x is zero, performs another iteration of this loop. The actual implementation of this primitive involves an extraordinary continuation ec_until with its arguments set to the body of the loop (continuation c) and the original current continuation cc. This extraordinary continuation is then saved into the savelist of c as c.c0 and the modified c is then executed. The other loop primitives are implemented similarly with the aid of suitable extraordinary continuations.
\n",
+ "fift": "UNTIL",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `UNTIL`.",
+ "fift": "UNTIL:<{ code }> <{ code }>UNTIL"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E6",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until",
+ "line": 513,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTIL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E7",
+ "tlb": "#E7"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "type": "cc"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ }
+ },
+ "type": "cc"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to UNTIL, but executes the current continuation cc in a loop. When the loop exit condition is satisfied, performs a RET.
\n",
+ "fift": "UNTILEND\nUNTIL:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "E7",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until_end",
+ "line": 520,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTILEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E8",
+ "tlb": "#E8"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ },
+ "cond": {
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "name": "while",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Executes c' and pops an integer x from the resulting stack. If x is zero, exists the loop and transfers control to the original cc. If x is non-zero, executes c, and then begins a new iteration.
\n",
+ "fift": "WHILE",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ cond }> CONT` `<{ code }> CONT` `WHILE`.",
+ "fift": "WHILE:<{ cond }>DO<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E8",
+ "stack": "c' c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while",
+ "line": 526,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E9",
+ "tlb": "#E9"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "type": "cc"
+ },
+ "cond": {
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "name": "while",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to WHILE, but uses the current continuation cc as the loop body.
\n",
+ "fift": "WHILEEND",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "E9",
+ "stack": "c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while_end",
+ "line": 535,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILEEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EA",
+ "tlb": "#EA"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ }
+ },
+ "name": "again",
+ "type": "special"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEAT, but executes c infinitely many times. A RET only begins a new iteration of the infinite loop, which can be exited only by an exception, or a RETALT (or an explicit JMPX).
\n",
+ "fift": "AGAIN",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `AGAIN`.",
+ "fift": "AGAIN:<{ code }> <{ code }>AGAIN"
+ }
+ ],
+ "gas": "18",
+ "opcode": "EA",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again",
+ "line": 542,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EB",
+ "tlb": "#EB"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "body": {
+ "type": "cc"
+ }
+ },
+ "name": "again",
+ "type": "special"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to AGAIN, but performed with respect to the current continuation cc.
\n",
+ "fift": "AGAINEND\nAGAIN:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "EB",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again_end",
+ "line": 550,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAINEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E314",
+ "tlb": "#E314"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEAT, but also sets c1 to the original cc after saving the old value of c1 into the savelist of the original cc. In this way RETALT could be used to break out of the loop body.
\n",
+ "fift": "REPEATBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `REPEATBRK`.",
+ "fift": "REPEATBRK:<{ code }> <{ code }>REPEATBRK"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E314",
+ "stack": "n c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat",
+ "line": 489,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEATBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E315",
+ "tlb": "#E315"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEATEND, but also sets c1 to the original c0 after saving the old value of c1 into the savelist of the original c0. Equivalent to SAMEALTSAVE REPEATEND.
\n",
+ "fift": "REPEATENDBRK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E315",
+ "stack": "n -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat_end",
+ "line": 501,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEATENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E316",
+ "tlb": "#E316"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ },
+ "c1": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to UNTIL, but also modifies c1 in the same way as REPEATBRK.
\n",
+ "fift": "UNTILBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `UNTILBRK`.",
+ "fift": "UNTILBRK:<{ code }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E316",
+ "stack": "c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until",
+ "line": 513,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTILBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E317",
+ "tlb": "#E317"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ },
+ "c1": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Equivalent to SAMEALTSAVE UNTILEND.
\n",
+ "fift": "UNTILENDBRK\nUNTILBRK:",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E317",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until_end",
+ "line": 520,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTILENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E318",
+ "tlb": "#E318"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ },
+ "cond": {
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "name": "while",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to WHILE, but also modifies c1 in the same way as REPEATBRK.
\n",
+ "fift": "WHILEBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ cond }> CONT` `<{ code }> CONT` `WHILEBRK`.",
+ "fift": "WHILEBRK:<{ cond }>DO<{ code }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E318",
+ "stack": "c' c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while",
+ "line": 526,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILEBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E319",
+ "tlb": "#E319"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Equivalent to SAMEALTSAVE WHILEEND.
\n",
+ "fift": "WHILEENDBRK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E319",
+ "stack": "c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while_end",
+ "line": 535,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILEENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E31A",
+ "tlb": "#E31A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to AGAIN, but also modifies c1 in the same way as REPEATBRK.
\n",
+ "fift": "AGAINBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `AGAINBRK`.",
+ "fift": "AGAINBRK:<{ code }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E31A",
+ "stack": "c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again",
+ "line": 542,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAINBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E31B",
+ "tlb": "#E31B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Equivalent to SAMEALTSAVE AGAINEND.
\n",
+ "fift": "AGAINENDBRK\nAGAINBRK:",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E31B",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again_end",
+ "line": 550,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAINENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "optional_nargs"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EC",
+ "tlb": "#EC r:uint4 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Pushes 0 <= r <= 15 values x_1...x_r into the stack of (a copy of) the continuation c, starting with x_1. When n is 15 (-1 in Fift notation), does nothing with c.nargs. For 0 <= n <= 14, sets c.nargs to the final size of the stack of c' plus n. In other words, transforms c into a closure or a partially applied function, with 0 <= n <= 14 arguments missing.
\n",
+ "fift": "[r] [n] SETCONTARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ECrn",
+ "stack": "x_1 x_2...x_r c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcontargs",
+ "line": 665,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTARGS_N",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED0",
+ "tlb": "#ED0 p:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Leaves only the top 0 <= p <= 15 values in the current stack (somewhat similarly to ONLYTOPX), with all the unused bottom values not discarded, but saved into continuation c0 in the same way as SETCONTARGS does.
\n",
+ "fift": "[p] RETURNARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED0p",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_return_args",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETURNARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED10",
+ "tlb": "#ED10"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Similar to RETURNARGS, but with Integer 0 <= p <= 255 taken from the stack.
\n",
+ "fift": "RETURNVARARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED10",
+ "stack": "p -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_return_varargs",
+ "line": 728,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETURNVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED11",
+ "tlb": "#ED11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Similar to SETCONTARGS, but with 0 <= r <= 255 and -1 <= n <= 255 taken from the stack.
\n",
+ "fift": "SETCONTVARARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED11",
+ "stack": "x_1 x_2...x_r c r n - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_varargs",
+ "line": 678,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED12",
+ "tlb": "#ED12"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "-1 <= n <= 255\nIf n=-1, this operation does nothing (c'=c).\nOtherwise its action is similar to [n] SETNUMARGS, but with n taken from the stack.
\n",
+ "fift": "SETNUMVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED12",
+ "stack": "c n - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setnum_varargs",
+ "line": 687,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETNUMVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED1E",
+ "tlb": "#ED1E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_create",
+ "description": "Transforms a Slice s into a simple ordinary continuation c, with c.code=s and an empty stack and savelist.
\n",
+ "fift": "BLESS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED1E",
+ "stack": "s - c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_bless",
+ "line": 733,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BLESS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED1F",
+ "tlb": "#ED1F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_create",
+ "description": "Equivalent to ROT BLESS ROTREV SETCONTVARARGS.
\n",
+ "fift": "BLESSVARARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED1F",
+ "stack": "x_1...x_r s r n - c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_bless_varargs",
+ "line": 750,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BLESSVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "optional_nargs"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EE",
+ "tlb": "#EE r:uint4 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_create",
+ "description": "0 <= r <= 15, -1 <= n <= 14\nEquivalent to BLESS [r] [n] SETCONTARGS.\nThe value of n is represented inside the instruction by the 4-bit integer n mod 16.
\n",
+ "fift": "[r] [n] BLESSARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EErn",
+ "stack": "x_1...x_r s - c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_bless_args",
+ "line": 759,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BLESSARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED4",
+ "tlb": "#ED4 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Pushes the current value of control register c(i). If the control register is not supported in the current codepage, or if it does not have a value, an exception is triggered.
\n",
+ "fift": "c[i] PUSHCTR\nc[i] PUSH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED4i",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_push_ctr",
+ "line": 765,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED5",
+ "tlb": "#ED5 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Pops a value x from the stack and stores it into control register c(i), if supported in the current codepage. Notice that if a control register accepts only values of a specific type, a type-checking exception may occur.
\n",
+ "fift": "c[i] POPCTR\nc[i] POP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED5i",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_pop_ctr",
+ "line": 794,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "POPCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED6",
+ "tlb": "#ED6 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Stores x into the savelist of continuation c as c(i), and returns the resulting continuation c'. Almost all operations with continuations may be expressed in terms of SETCONTCTR, POPCTR, and PUSHCTR.
\n",
+ "fift": "c[i] SETCONT\nc[i] SETCONTCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED6i",
+ "stack": "x c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr",
+ "line": 807,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED7",
+ "tlb": "#ED7 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Equivalent to c0 PUSHCTR c[i] SETCONTCTR c0 POPCTR.
\n",
+ "fift": "c[i] SETRETCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED7i",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setret_ctr",
+ "line": 818,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETRETCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED8",
+ "tlb": "#ED8 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Equivalent to c1 PUSHCTR c[i] SETCONTCTR c1 POPCTR.
\n",
+ "fift": "c[i] SETALTCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED8i",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setalt_ctr",
+ "line": 827,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETALTCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED9",
+ "tlb": "#ED9 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] POPCTR, but also saves the old value of c[i] into continuation c0.\nEquivalent (up to exceptions) to c[i] SAVECTR c[i] POPCTR.
\n",
+ "fift": "c[i] POPSAVE\nc[i] POPCTRSAVE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED9i",
+ "stack": "x -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_popsave_ctr",
+ "line": 836,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "POPSAVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDA",
+ "tlb": "#EDA i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Saves the current value of c(i) into the savelist of continuation c0. If an entry for c[i] is already present in the savelist of c0, nothing is done. Equivalent to c[i] PUSHCTR c[i] SETRETCTR.
\n",
+ "fift": "c[i] SAVE\nc[i] SAVECTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDAi",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_savealt_ctr",
+ "line": 873,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDB",
+ "tlb": "#EDB i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] SAVE, but saves the current value of c[i] into the savelist of c1, not c0.
\n",
+ "fift": "c[i] SAVEALT\nc[i] SAVEALTCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDBi",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_samealt",
+ "line": 862,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAVEALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDC",
+ "tlb": "#EDC i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Equivalent to c[i] SAVE c[i] SAVEALT.
\n",
+ "fift": "c[i] SAVEBOTH\nc[i] SAVEBOTHCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDCi",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_saveboth_ctr",
+ "line": 882,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAVEBOTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE0",
+ "tlb": "#EDE0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] PUSHCTR, but with i, 0 <= i <= 255, taken from the stack.\nNotice that this primitive is one of the few ''exotic'' primitives, which are not polymorphic like stack manipulation primitives, and at the same time do not have well-defined types of parameters and return values, because the type of x depends on i.
\n",
+ "fift": "PUSHCTRX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE0",
+ "stack": "i - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_push_ctr_var",
+ "line": 894,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHCTRX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE1",
+ "tlb": "#EDE1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] POPCTR, but with 0 <= i <= 255 from the stack.
\n",
+ "fift": "POPCTRX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE1",
+ "stack": "x i - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_pop_ctr_var",
+ "line": 904,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "POPCTRX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE2",
+ "tlb": "#EDE2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] SETCONTCTR, but with 0 <= i <= 255 from the stack.
\n",
+ "fift": "SETCONTCTRX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE2",
+ "stack": "x c i - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr_var",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTRX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "mask",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDE3",
+ "tlb": "#EDE3 mask:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Takes continuation, performs the equivalent of c[i] PUSHCTR SWAP c[i] SETCONTCNR for each i that is set in mask (mask is in 0..255).
\n",
+ "fift": "SETCONTCTRMANY\nSETCONTMANY",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "EDE3mm",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr_many",
+ "line": 926,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTRMANY",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE4",
+ "tlb": "#EDE4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Takes continuation, performs the equivalent of c[i] PUSHCTR SWAP c[i] SETCONTCNR for each i that is set in mask (mask is in 0..255).
\n",
+ "fift": "SETCONTCTRMANYX\nSETCONTMANYX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE4",
+ "stack": "c mask - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr_many_var",
+ "line": 943,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTRMANYX",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "mask",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF0",
+ "tlb": "#EDF0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes the composition compose0(c, c'), which has the meaning of ''perform c, and, if successful, perform c''' (if c is a boolean circuit) or simply ''perform c, then c'''. Equivalent to SWAP c0 SETCONT.
\n",
+ "fift": "COMPOS\nBOOLAND",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF0",
+ "stack": "c c' - c''"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_compos",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "COMPOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c3",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF1",
+ "tlb": "#EDF1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes the alternative composition compose1(c, c'), which has the meaning of ''perform c, and, if not successful, perform c''' (if c is a boolean circuit). Equivalent to SWAP c1 SETCONT.
\n",
+ "fift": "COMPOSALT\nBOOLOR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF1",
+ "stack": "c c' - c''"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_compos",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "COMPOSALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c3",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF2",
+ "tlb": "#EDF2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes composition compose1(compose0(c, c'), c'), which has the meaning of ''compute boolean circuit c, then compute c', regardless of the result of c''.
\n",
+ "fift": "COMPOSBOTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF2",
+ "stack": "c c' - c''"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_compos",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "COMPOSBOTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c3",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF3",
+ "tlb": "#EDF3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c0 to compose0(c, c0). In other words, c will be executed before exiting current subroutine.
\n",
+ "fift": "ATEXIT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `ATEXIT`.",
+ "fift": "ATEXIT:<{ code }> <{ code }>ATEXIT"
+ }
+ ],
+ "gas": "26",
+ "opcode": "EDF3",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_atexit",
+ "line": 983,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "ATEXIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF4",
+ "tlb": "#EDF4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to compose1(c, c1). In other words, c will be executed before exiting current subroutine by its alternative return path.
\n",
+ "fift": "ATEXITALT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `ATEXITALT`.",
+ "fift": "ATEXITALT:<{ code }> <{ code }>ATEXITALT"
+ }
+ ],
+ "gas": "26",
+ "opcode": "EDF4",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_atexit_alt",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "ATEXITALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF5",
+ "tlb": "#EDF5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to compose1(compose0(c, c0), c1),\nIn this way, a subsequent RETALT will first execute c, then transfer control to the original c0. This can be used, for instance, to exit from nested loops.
\n",
+ "fift": "SETEXITALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF5",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setexit_alt",
+ "line": 1001,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETEXITALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF6",
+ "tlb": "#EDF6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes compose0(c, c0).
\n",
+ "fift": "THENRET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF6",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_thenret",
+ "line": 1011,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THENRET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF7",
+ "tlb": "#EDF7"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes compose0(c, c1)
\n",
+ "fift": "THENRETALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF7",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_thenret_alt",
+ "line": 1020,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THENRETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF8",
+ "tlb": "#EDF8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Interchanges c0 and c1.
\n",
+ "fift": "INVERT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF8",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_invert",
+ "line": 1029,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "INVERT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF9",
+ "tlb": "#EDF9"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "next": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "value": -1
+ },
+ "name": "pushint",
+ "type": "special"
+ },
+ "c1": {
+ "args": {
+ "next": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "value": 0
+ },
+ "name": "pushint",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Performs cc:=compose1(compose0(c, compose0(-1 PUSHINT, cc)), compose0(0 PUSHINT, cc)). If c represents a boolean circuit, the net effect is to evaluate it and push either -1 or 0 into the stack before continuing.
\n",
+ "fift": "BOOLEVAL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF9",
+ "stack": "c - ?"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_booleval",
+ "line": 1037,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BOOLEVAL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDFA",
+ "tlb": "#EDFA"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to c0. Equivalent to c0 PUSHCTR c1 POPCTR.
\n",
+ "fift": "SAMEALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDFA",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_samealt",
+ "line": 862,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAMEALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDFB",
+ "tlb": "#EDFB"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to c0, but first saves the old value of c1 into the savelist of c0.\nEquivalent to c1 SAVE SAMEALT.
\n",
+ "fift": "SAMEALTSAVE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDFB",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_samealt",
+ "line": 862,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAMEALTSAVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "n",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F0",
+ "tlb": "#F0 n:uint8"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 3,
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "Calls the continuation in c3, pushing integer 0 <= nn <= 255 into its stack as an argument.\nApproximately equivalent to [nn] PUSHINT c3 PUSHCTR EXECUTE.
\n",
+ "fift": "[nn] CALL\n[nn] CALLDICT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F0nn",
+ "stack": "- nn"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_calldict_short",
+ "line": 1092,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 16383,
+ "min_value": 0,
+ "name": "n",
+ "size": 14,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F12_",
+ "tlb": "#F12_ n:uint14"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 3,
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "For 0 <= n < 2^14, an encoding of [n] CALL for larger values of n.
\n",
+ "fift": "[n] CALL\n[n] CALLDICT",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F12_n",
+ "stack": "- n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_calldict",
+ "line": 1099,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLDICT_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 16383,
+ "min_value": 0,
+ "name": "n",
+ "size": 14,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F16_",
+ "tlb": "#F16_ n:uint14"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 3,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "Jumps to the continuation in c3, pushing integer 0 <= n < 2^14 as its argument.\nApproximately equivalent to n PUSHINT c3 PUSHCTR JMPX.
\n",
+ "fift": "[n] JMP",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F16_n",
+ "stack": " - n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpdict",
+ "line": 1106,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 16383,
+ "min_value": 0,
+ "name": "n",
+ "size": 14,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F1A_",
+ "tlb": "#F1A_ n:uint14"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "Equivalent to n PUSHINT c3 PUSHCTR, for 0 <= n < 2^14.\nIn this way, [n] CALL is approximately equivalent to [n] PREPARE EXECUTE, and [n] JMP is approximately equivalent to [n] PREPARE JMPX.\nOne might use, for instance, CALLXARGS or CALLCC instead of EXECUTE here.
\n",
+ "fift": "[n] PREPARE\n[n] PREPAREDICT",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F1A_n",
+ "stack": " - n c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_preparedict",
+ "line": 1113,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "PREPAREDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 3,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 63,
+ "min_value": 0,
+ "name": "n",
+ "size": 6,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F22_",
+ "tlb": "#F22_ n:uint6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n <= 63 with parameter zero.\nIn other words, it transfers control to the continuation in c2, pushing 0 and n into its stack, and discarding the old stack altogether.
\n",
+ "fift": "[n] THROW",
+ "fift_examples": [],
+ "gas": "76",
+ "opcode": "F22_n",
+ "stack": " - 0 n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROW_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 63,
+ "min_value": 0,
+ "name": "n",
+ "size": 6,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F26_",
+ "tlb": "#F26_ n:uint6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n <= 63 with parameter zero only if integer f!=0.
\n",
+ "fift": "[n] THROWIF",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F26_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIF_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 63,
+ "min_value": 0,
+ "name": "n",
+ "size": 6,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2A_",
+ "tlb": "#F2A_ n:uint6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n <= 63 with parameter zero only if integer f=0.
\n",
+ "fift": "[n] THROWIFNOT",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2A_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIFNOT_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2C4_",
+ "tlb": "#F2C4_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "For 0 <= n < 2^11, an encoding of [n] THROW for larger values of n.
\n",
+ "fift": "[n] THROW",
+ "fift_examples": [],
+ "gas": "84",
+ "opcode": "F2C4_n",
+ "stack": "- 0 nn"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROW",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2CC_",
+ "tlb": "#F2CC_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^11 with parameter x, by copying x and n into the stack of c2 and transferring control to c2.
\n",
+ "fift": "[n] THROWARG",
+ "fift_examples": [],
+ "gas": "84",
+ "opcode": "F2CC_n",
+ "stack": "x - x nn"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_arg_fixed",
+ "line": 1140,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2D4_",
+ "tlb": "#F2D4_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "For 0 <= n < 2^11, an encoding of [n] THROWIF for larger values of n.
\n",
+ "fift": "[n] THROWIF",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2D4_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2DC_",
+ "tlb": "#F2DC_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= nn < 2^11 with parameter x only if integer f!=0.
\n",
+ "fift": "[n] THROWARGIF",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2DC_n",
+ "stack": "x f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_arg_fixed",
+ "line": 1140,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2E4_",
+ "tlb": "#F2E4_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "For 0 <= n < 2^11, an encoding of [n] THROWIFNOT for larger values of n.
\n",
+ "fift": "[n] THROWIFNOT",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2E4_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2EC_",
+ "tlb": "#F2EC_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^11 with parameter x only if integer f=0.
\n",
+ "fift": "[n] THROWARGIFNOT",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2EC_n",
+ "stack": "x f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_arg_fixed",
+ "line": 1140,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F0",
+ "tlb": "#F2F0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^16 with parameter zero.\nApproximately equivalent to ZERO SWAP THROWARGANY.
\n",
+ "fift": "THROWANY",
+ "fift_examples": [],
+ "gas": "76",
+ "opcode": "F2F0",
+ "stack": "n - 0 n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWANY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F1",
+ "tlb": "#F2F1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^16 with parameter x, transferring control to the continuation in c2.\nApproximately equivalent to c2 PUSHCTR 2 JMPXARGS.
\n",
+ "fift": "THROWARGANY",
+ "fift_examples": [],
+ "gas": "76",
+ "opcode": "F2F1",
+ "stack": "x n - x n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGANY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F2",
+ "tlb": "#F2F2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^16 with parameter zero only if f!=0.
\n",
+ "fift": "THROWANYIF",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F2",
+ "stack": "n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWANYIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F3",
+ "tlb": "#F2F3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n<2^16 with parameter x only if f!=0.
\n",
+ "fift": "THROWARGANYIF",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F3",
+ "stack": "x n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGANYIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F4",
+ "tlb": "#F2F4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n<2^16 with parameter zero only if f=0.
\n",
+ "fift": "THROWANYIFNOT",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F4",
+ "stack": "n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWANYIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F5",
+ "tlb": "#F2F5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n<2^16 with parameter x only if f=0.
\n",
+ "fift": "THROWARGANYIFNOT",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F5",
+ "stack": "x n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGANYIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2FF",
+ "tlb": "#F2FF"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Sets c2 to c', first saving the old value of c2 both into the savelist of c' and into the savelist of the current continuation, which is stored into c.c0 and c'.c0. Then runs c similarly to EXECUTE. If c does not throw any exceptions, the original value of c2 is automatically restored on return from c. If an exception occurs, the execution is transferred to c', but the original value of c2 is restored in the process, so that c' can re-throw the exception by THROWANY if it cannot handle it by itself.
\n",
+ "fift": "TRY",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code1 }> CONT` `<{ code2 }> CONT` `TRY`.",
+ "fift": "TRY:<{ code1 }>CATCH<{ code2 }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "F2FF",
+ "stack": "c c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_try",
+ "line": 1186,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "TRY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F3",
+ "tlb": "#F3 p:uint4 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Similar to TRY, but with [p] [r] CALLXARGS internally used instead of EXECUTE.\nIn this way, all but the top 0 <= p <= 15 stack elements will be saved into current continuation's stack, and then restored upon return from either c or c', with the top 0 <= r <= 15 values of the resulting stack of c or c' copied as return values.
\n",
+ "fift": "[p] [r] TRYARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F3pr",
+ "stack": "c c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_try",
+ "line": 1186,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "TRYARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F400",
+ "tlb": "#F400"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Stores dictionary D into Builder b, returning the resulting Builder b'.\nIn other words, if D is a cell, performs STONE and STREF; if D is Null, performs NIP and STZERO; otherwise throws a type checking exception.
\n",
+ "fift": "STDICT\nSTOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F400",
+ "stack": "D b - b'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_store_dict",
+ "line": 53,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "STDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F401",
+ "tlb": "#F401"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Equivalent to LDDICT NIP.
\n",
+ "fift": "SKIPDICT\nSKIPOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F401",
+ "stack": "s - s'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_skip_dict",
+ "line": 82,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SKIPDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F402",
+ "tlb": "#F402"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Loads (parses) a (Slice-represented) dictionary s' from Slice s, and returns the remainder of s as s''.\nThis is a ''split function'' for all HashmapE(n,X) dictionary types.
\n",
+ "fift": "LDDICTS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F402",
+ "stack": "s - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict_slice",
+ "line": 121,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "LDDICTS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F403",
+ "tlb": "#F403"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Preloads a (Slice-represented) dictionary s' from Slice s.\nApproximately equivalent to LDDICTS DROP.
\n",
+ "fift": "PLDDICTS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F403",
+ "stack": "s - s'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict_slice",
+ "line": 121,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PLDDICTS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F404",
+ "tlb": "#F404"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Loads (parses) a dictionary D from Slice s, and returns the remainder of s as s'. May be applied to dictionaries or to values of arbitrary (^Y)? types.
\n",
+ "fift": "LDDICT\nLDOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F404",
+ "stack": "s - D s'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "LDDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F405",
+ "tlb": "#F405"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Preloads a dictionary D from Slice s.\nApproximately equivalent to LDDICT DROP.
\n",
+ "fift": "PLDDICT\nPLDOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F405",
+ "stack": "s - D"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PLDDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F406",
+ "tlb": "#F406"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "A quiet version of LDDICT.
\n",
+ "fift": "LDDICTQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F406",
+ "stack": "s - D s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "LDDICTQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F407",
+ "tlb": "#F407"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "A quiet version of PLDDICT.
\n",
+ "fift": "PLDDICTQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F407",
+ "stack": "s - D -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PLDDICTQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40A",
+ "tlb": "#F40A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Looks up key k (represented by a Slice, the first 0 <= n <= 1023 data bits of which are used as a key) in dictionary D of type HashmapE(n,X) with n-bit keys.\nOn success, returns the value found as a Slice x.
\n",
+ "fift": "DICTGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40A",
+ "stack": "k D n - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get",
+ "line": 207,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40B",
+ "tlb": "#F40B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTGET, but with a LDREF ENDS applied to x on success.\nThis operation is useful for dictionaries of type HashmapE(n,^Y).
\n",
+ "fift": "DICTGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40B",
+ "stack": "k D n - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40C",
+ "tlb": "#F40C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTGET, but with a signed (big-endian) n-bit Integer i as a key. If i does not fit into n bits, returns 0. If i is a NaN, throws an integer overflow exception.
\n",
+ "fift": "DICTIGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40C",
+ "stack": "i D n - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get",
+ "line": 207,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40D",
+ "tlb": "#F40D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Combines DICTIGET with DICTGETREF: it uses signed n-bit Integer i as a key and returns a Cell instead of a Slice on success.
\n",
+ "fift": "DICTIGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40D",
+ "stack": "i D n - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40E",
+ "tlb": "#F40E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTIGET, but with unsigned (big-endian) n-bit Integer i used as a key.
\n",
+ "fift": "DICTUGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40E",
+ "stack": "i D n - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get",
+ "line": 207,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40F",
+ "tlb": "#F40F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTIGETREF, but with an unsigned n-bit Integer key i.
\n",
+ "fift": "DICTUGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40F",
+ "stack": "i D n - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F412",
+ "tlb": "#F412"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Sets the value associated with n-bit key k (represented by a Slice as in DICTGET) in dictionary D (also represented by a Slice) to value x (again a Slice), and returns the resulting dictionary as D'.
\n",
+ "fift": "DICTSET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F412",
+ "stack": "x k D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F413",
+ "tlb": "#F413"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTSET, but with the value set to a reference to Cell c.
\n",
+ "fift": "DICTSETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F413",
+ "stack": "c k D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F414",
+ "tlb": "#F414"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTSET, but with the key represented by a (big-endian) signed n-bit integer i. If i does not fit into n bits, a range check exception is generated.
\n",
+ "fift": "DICTISET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F414",
+ "stack": "x i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F415",
+ "tlb": "#F415"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTSETREF, but with the key a signed n-bit integer as in DICTISET.
\n",
+ "fift": "DICTISETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F415",
+ "stack": "c i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F416",
+ "tlb": "#F416"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTISET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUSET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F416",
+ "stack": "x i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F417",
+ "tlb": "#F417"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTISETREF, but with i unsigned.
\n",
+ "fift": "DICTUSETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F417",
+ "stack": "c i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41A",
+ "tlb": "#F41A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Combines DICTSET with DICTGET: it sets the value corresponding to key k to x, but also returns the old value y associated with the key in question, if present.
\n",
+ "fift": "DICTSETGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41A",
+ "stack": "x k D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41B",
+ "tlb": "#F41B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Combines DICTSETREF with DICTGETREF similarly to DICTSETGET.
\n",
+ "fift": "DICTSETGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41B",
+ "stack": "c k D n - D' c' -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41C",
+ "tlb": "#F41C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTISETGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41C",
+ "stack": "x i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41D",
+ "tlb": "#F41D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTISETGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41D",
+ "stack": "c i D n - D' c' -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41E",
+ "tlb": "#F41E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUSETGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41E",
+ "stack": "x i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41F",
+ "tlb": "#F41F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUSETGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41F",
+ "stack": "c i D n - D' c' -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F422",
+ "tlb": "#F422"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace operation, which is similar to DICTSET, but sets the value of key k in dictionary D to x only if the key k was already present in D.
\n",
+ "fift": "DICTREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F422",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F423",
+ "tlb": "#F423"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace counterpart of DICTSETREF.
\n",
+ "fift": "DICTREPLACEREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F423",
+ "stack": "c k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F424",
+ "tlb": "#F424"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACE, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F424",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F425",
+ "tlb": "#F425"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACEREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F425",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F426",
+ "tlb": "#F426"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACE, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F426",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F427",
+ "tlb": "#F427"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACEREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F427",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42A",
+ "tlb": "#F42A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace counterpart of DICTSETGET: on success, also returns the old value associated with the key in question.
\n",
+ "fift": "DICTREPLACEGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42A",
+ "stack": "x k D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42B",
+ "tlb": "#F42B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace counterpart of DICTSETGETREF.
\n",
+ "fift": "DICTREPLACEGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42B",
+ "stack": "c k D n - D' c' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42C",
+ "tlb": "#F42C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACEGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42C",
+ "stack": "x i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42D",
+ "tlb": "#F42D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACEGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42D",
+ "stack": "c i D n - D' c' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42E",
+ "tlb": "#F42E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACEGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42E",
+ "stack": "x i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42F",
+ "tlb": "#F42F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACEGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42F",
+ "stack": "c i D n - D' c' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F432",
+ "tlb": "#F432"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSET: sets the value associated with key k in dictionary D to x, but only if it is not already present in D.
\n",
+ "fift": "DICTADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F432",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F433",
+ "tlb": "#F433"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSETREF.
\n",
+ "fift": "DICTADDREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F433",
+ "stack": "c k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F434",
+ "tlb": "#F434"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADD, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F434",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F435",
+ "tlb": "#F435"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADDREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F435",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F436",
+ "tlb": "#F436"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADD, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F436",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F437",
+ "tlb": "#F437"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADDREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F437",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43A",
+ "tlb": "#F43A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSETGET: sets the value associated with key k in dictionary D to x, but only if key k is not already present in D. Otherwise, just returns the old value y without changing the dictionary.
\n",
+ "fift": "DICTADDGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43A",
+ "stack": "x k D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43B",
+ "tlb": "#F43B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSETGETREF.
\n",
+ "fift": "DICTADDGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43B",
+ "stack": "c k D n - D' -1 or D c' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43C",
+ "tlb": "#F43C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADDGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43C",
+ "stack": "x i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43D",
+ "tlb": "#F43D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADDGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43D",
+ "stack": "c i D n - D' -1 or D c' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43E",
+ "tlb": "#F43E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADDGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43E",
+ "stack": "x i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43F",
+ "tlb": "#F43F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADDGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43F",
+ "stack": "c i D n - D' -1 or D c' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F441",
+ "tlb": "#F441"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTSETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F441",
+ "stack": "b k D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F442",
+ "tlb": "#F442"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTISETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F442",
+ "stack": "b i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F443",
+ "tlb": "#F443"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUSETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F443",
+ "stack": "b i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F445",
+ "tlb": "#F445"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTSETGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F445",
+ "stack": "b k D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F446",
+ "tlb": "#F446"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTISETGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F446",
+ "stack": "b i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F447",
+ "tlb": "#F447"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUSETGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F447",
+ "stack": "b i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F449",
+ "tlb": "#F449"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTREPLACEB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F449",
+ "stack": "b k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44A",
+ "tlb": "#F44A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIREPLACEB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44A",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44B",
+ "tlb": "#F44B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUREPLACEB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44B",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44D",
+ "tlb": "#F44D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTREPLACEGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44D",
+ "stack": "b k D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44E",
+ "tlb": "#F44E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIREPLACEGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44E",
+ "stack": "b i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44F",
+ "tlb": "#F44F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUREPLACEGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44F",
+ "stack": "b i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F451",
+ "tlb": "#F451"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTADDB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F451",
+ "stack": "b k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F452",
+ "tlb": "#F452"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIADDB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F452",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F453",
+ "tlb": "#F453"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUADDB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F453",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F455",
+ "tlb": "#F455"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTADDGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F455",
+ "stack": "b k D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F456",
+ "tlb": "#F456"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIADDGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F456",
+ "stack": "b i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F457",
+ "tlb": "#F457"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUADDGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F457",
+ "stack": "b i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F459",
+ "tlb": "#F459"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Deletes n-bit key, represented by a Slice k, from dictionary D. If the key is present, returns the modified dictionary D' and the success flag -1. Otherwise, returns the original dictionary D and 0.
\n",
+ "fift": "DICTDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F459",
+ "stack": "k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_delete",
+ "line": 374,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F45A",
+ "tlb": "#F45A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "A version of DICTDEL with the key represented by a signed n-bit Integer i. If i does not fit into n bits, simply returns D 0 (''key not found, dictionary unmodified'').
\n",
+ "fift": "DICTIDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F45A",
+ "stack": "i D n - D' ?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_delete",
+ "line": 374,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F45B",
+ "tlb": "#F45B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Similar to DICTIDEL, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F45B",
+ "stack": "i D n - D' ?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_delete",
+ "line": 374,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F462",
+ "tlb": "#F462"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Deletes n-bit key, represented by a Slice k, from dictionary D. If the key is present, returns the modified dictionary D', the original value x associated with the key k (represented by a Slice), and the success flag -1. Otherwise, returns the original dictionary D and 0.
\n",
+ "fift": "DICTDELGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F462",
+ "stack": "k D n - D' x -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTDELGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F463",
+ "tlb": "#F463"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Similar to DICTDELGET, but with LDREF ENDS applied to x on success, so that the value returned c is a Cell.
\n",
+ "fift": "DICTDELGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F463",
+ "stack": "k D n - D' c -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTDELGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F464",
+ "tlb": "#F464"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIDELGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F464",
+ "stack": "i D n - D' x -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIDELGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F465",
+ "tlb": "#F465"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIDELGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F465",
+ "stack": "i D n - D' c -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIDELGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F466",
+ "tlb": "#F466"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUDELGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F466",
+ "stack": "i D n - D' x -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUDELGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F467",
+ "tlb": "#F467"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUDELGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F467",
+ "stack": "i D n - D' c -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUDELGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F469",
+ "tlb": "#F469"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "A variant of DICTGETREF that returns Null instead of the value c^? if the key k is absent from dictionary D.
\n",
+ "fift": "DICTGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F469",
+ "stack": "k D n - c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46A",
+ "tlb": "#F46A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "DICTGETOPTREF, but with i a signed n-bit integer. If the key i is out of range, also returns Null.
\n",
+ "fift": "DICTIGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46A",
+ "stack": "i D n - c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46B",
+ "tlb": "#F46B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "DICTGETOPTREF, but with i an unsigned n-bit integer. If the key i is out of range, also returns Null.
\n",
+ "fift": "DICTUGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46B",
+ "stack": "i D n - c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46D",
+ "tlb": "#F46D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "A variant of both DICTGETOPTREF and DICTSETGETREF that sets the value corresponding to key k in dictionary D to c^? (if c^? is Null, then the key is deleted instead), and returns the old value ~c^? (if the key k was absent before, returns Null instead).
\n",
+ "fift": "DICTSETGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46D",
+ "stack": "c^? k D n - D' ~c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget_optref",
+ "line": 442,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46E",
+ "tlb": "#F46E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "Similar to primitive DICTSETGETOPTREF, but using signed n-bit Integer i as a key. If i does not fit into n bits, throws a range checking exception.
\n",
+ "fift": "DICTISETGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46E",
+ "stack": "c^? i D n - D' ~c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget_optref",
+ "line": 442,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46F",
+ "tlb": "#F46F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "Similar to primitive DICTSETGETOPTREF, but using unsigned n-bit Integer i as a key.
\n",
+ "fift": "DICTUSETGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46F",
+ "stack": "c^? i D n - D' ~c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget_optref",
+ "line": 442,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F470",
+ "tlb": "#F470"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTSET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F470",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_set",
+ "line": 566,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTSET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F471",
+ "tlb": "#F471"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F471",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_set",
+ "line": 566,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F472",
+ "tlb": "#F472"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F472",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_set",
+ "line": 566,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F473",
+ "tlb": "#F473"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F473",
+ "stack": "k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_delete",
+ "line": 580,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F474",
+ "tlb": "#F474"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Computes the minimal key k' in dictionary D that is lexicographically greater than k, and returns k' (represented by a Slice) along with associated value x' (also represented by a Slice).
\n",
+ "fift": "DICTGETNEXT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F474",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETNEXT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F475",
+ "tlb": "#F475"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but computes the minimal key k' that is lexicographically greater than or equal to k.
\n",
+ "fift": "DICTGETNEXTEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F475",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETNEXTEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F476",
+ "tlb": "#F476"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but computes the maximal key k' lexicographically smaller than k.
\n",
+ "fift": "DICTGETPREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F476",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETPREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F477",
+ "tlb": "#F477"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREV, but computes the maximal key k' lexicographically smaller than or equal to k.
\n",
+ "fift": "DICTGETPREVEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F477",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETPREVEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F478",
+ "tlb": "#F478"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but interprets all keys in dictionary D as big-endian signed n-bit integers, and computes the minimal key i' that is larger than Integer i (which does not necessarily fit into n bits).
\n",
+ "fift": "DICTIGETNEXT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F478",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETNEXT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F479",
+ "tlb": "#F479"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXTEQ, but interprets keys as signed n-bit integers.
\n",
+ "fift": "DICTIGETNEXTEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F479",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETNEXTEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47A",
+ "tlb": "#F47A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREV, but interprets keys as signed n-bit integers.
\n",
+ "fift": "DICTIGETPREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47A",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETPREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47B",
+ "tlb": "#F47B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREVEQ, but interprets keys as signed n-bit integers.
\n",
+ "fift": "DICTIGETPREVEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47B",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETPREVEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47C",
+ "tlb": "#F47C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but interprets all keys in dictionary D as big-endian unsigned n-bit integers, and computes the minimal key i' that is larger than Integer i (which does not necessarily fit into n bits, and is not necessarily non-negative).
\n",
+ "fift": "DICTUGETNEXT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47C",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETNEXT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47D",
+ "tlb": "#F47D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXTEQ, but interprets keys as unsigned n-bit integers.
\n",
+ "fift": "DICTUGETNEXTEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47D",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETNEXTEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47E",
+ "tlb": "#F47E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREV, but interprets keys as unsigned n-bit integers.
\n",
+ "fift": "DICTUGETPREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47E",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETPREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47F",
+ "tlb": "#F47F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREVEQ, but interprets keys a unsigned n-bit integers.
\n",
+ "fift": "DICTUGETPREVEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47F",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETPREVEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F482",
+ "tlb": "#F482"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the minimal key k (represented by a Slice with n data bits) in dictionary D, and returns k along with the associated value x.
\n",
+ "fift": "DICTMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F482",
+ "stack": "D n - x k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F483",
+ "tlb": "#F483"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMIN, but returns the only reference in the value as a Cell c.
\n",
+ "fift": "DICTMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F483",
+ "stack": "D n - c k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F484",
+ "tlb": "#F484"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMIN, but computes the minimal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTMIN and DICTUMIN.
\n",
+ "fift": "DICTIMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F484",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F485",
+ "tlb": "#F485"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTIMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F485",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F486",
+ "tlb": "#F486"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMIN, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F486",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F487",
+ "tlb": "#F487"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTUMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F487",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48A",
+ "tlb": "#F48A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the maximal key k (represented by a Slice with n data bits) in dictionary D, and returns k along with the associated value x.
\n",
+ "fift": "DICTMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48A",
+ "stack": "D n - x k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48B",
+ "tlb": "#F48B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48B",
+ "stack": "D n - c k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48C",
+ "tlb": "#F48C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMAX, but computes the maximal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTMAX and DICTUMAX.
\n",
+ "fift": "DICTIMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48C",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48D",
+ "tlb": "#F48D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTIMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48D",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48E",
+ "tlb": "#F48E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMAX, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48E",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48F",
+ "tlb": "#F48F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTUMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48F",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F492",
+ "tlb": "#F492"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the minimal key k (represented by a Slice with n data bits) in dictionary D, removes k from the dictionary, and returns k along with the associated value x and the modified dictionary D'.
\n",
+ "fift": "DICTREMMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F492",
+ "stack": "D n - D' x k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F493",
+ "tlb": "#F493"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMIN, but returns the only reference in the value as a Cell c.
\n",
+ "fift": "DICTREMMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F493",
+ "stack": "D n - D' c k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F494",
+ "tlb": "#F494"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMIN, but computes the minimal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTREMMIN and DICTUREMMIN.
\n",
+ "fift": "DICTIREMMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F494",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F495",
+ "tlb": "#F495"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIREMMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTIREMMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F495",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F496",
+ "tlb": "#F496"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMIN, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUREMMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F496",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F497",
+ "tlb": "#F497"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUREMMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTUREMMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F497",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49A",
+ "tlb": "#F49A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the maximal key k (represented by a Slice with n data bits) in dictionary D, removes k from the dictionary, and returns k along with the associated value x and the modified dictionary D'.
\n",
+ "fift": "DICTREMMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49A",
+ "stack": "D n - D' x k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49B",
+ "tlb": "#F49B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMAX, but returns the only reference in the value as a Cell c.
\n",
+ "fift": "DICTREMMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49B",
+ "stack": "D n - D' c k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49C",
+ "tlb": "#F49C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMAX, but computes the minimal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTREMMAX and DICTUREMMAX.
\n",
+ "fift": "DICTIREMMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49C",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49D",
+ "tlb": "#F49D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIREMMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTIREMMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49D",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49E",
+ "tlb": "#F49E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMAX, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUREMMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49E",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49F",
+ "tlb": "#F49F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUREMMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTUREMMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49F",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A0",
+ "tlb": "#F4A0"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTIGET, but with x BLESSed into a continuation with a subsequent JMPX to it on success. On failure, does nothing. This is useful for implementing switch/case constructions.
\n",
+ "fift": "DICTIGETJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A0",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A1",
+ "tlb": "#F4A1"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTIGETJMP, but performs DICTUGET instead of DICTIGET.
\n",
+ "fift": "DICTUGETJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A1",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A2",
+ "tlb": "#F4A2"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTIGETJMP, but with EXECUTE instead of JMPX.
\n",
+ "fift": "DICTIGETEXEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A2",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETEXEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A3",
+ "tlb": "#F4A3"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTUGETJMP, but with EXECUTE instead of JMPX.
\n",
+ "fift": "DICTUGETEXEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A3",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETEXEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "size_var": "n",
+ "type": "dictionary"
+ }
+ ],
+ "name": "d",
+ "type": "ref"
+ },
+ {
+ "display_hints": [],
+ "max_value": 1023,
+ "min_value": 0,
+ "name": "n",
+ "size": 10,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F4A6_",
+ "tlb": "#F4A6_ d:^Cell n:uint10"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Pushes a non-empty constant dictionary D (as a Cell^?) along with its key length 0 <= n <= 1023, stored as a part of the instruction. The dictionary itself is created from the first of remaining references of the current continuation. In this way, the complete DICTPUSHCONST instruction can be obtained by first serializing xF4A4_, then the non-empty dictionary itself (one 1 bit and a cell reference), and then the unsigned 10-bit integer n (as if by a STU 10 instruction). An empty dictionary can be pushed by a NEWDICT primitive instead.
\n",
+ "fift": "[ref] [n] DICTPUSHCONST",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F4A6_n",
+ "stack": " - D n"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_push_const_dict",
+ "line": 620,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTPUSHCONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A8",
+ "tlb": "#F4A8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Looks up the unique prefix of Slice s present in the prefix code dictionary represented by Cell^? D and 0 <= n <= 1023. If found, the prefix of s is returned as s', and the corresponding value (also a Slice) as x. The remainder of s is returned as a Slice s''. If no prefix of s is a key in prefix code dictionary D, returns the unchanged s and a zero flag to indicate failure.
\n",
+ "fift": "PFXDICTGETQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A8",
+ "stack": "s D n - s' x s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGETQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A9",
+ "tlb": "#F4A9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to PFXDICTGET, but throws a cell deserialization failure exception on failure.
\n",
+ "fift": "PFXDICTGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A9",
+ "stack": "s D n - s' x s''"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4AA",
+ "tlb": "#F4AA"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to PFXDICTGETQ, but on success BLESSes the value x into a Continuation and transfers control to it as if by a JMPX. On failure, returns s unchanged and continues execution.
\n",
+ "fift": "PFXDICTGETJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4AA",
+ "stack": "s D n - s' s'' or s"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4AB",
+ "tlb": "#F4AB"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to PFXDICTGETJMP, but EXECutes the continuation found instead of jumping to it. On failure, throws a cell deserialization exception.
\n",
+ "fift": "PFXDICTGETEXEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4AB",
+ "stack": "s D n - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGETEXEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "size_var": "n",
+ "type": "dictionary"
+ }
+ ],
+ "name": "d",
+ "type": "ref"
+ },
+ {
+ "display_hints": [],
+ "max_value": 1023,
+ "min_value": 0,
+ "name": "n",
+ "size": 10,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F4AE_",
+ "tlb": "#F4AE_ d:^Cell n:uint10"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Combines [n] DICTPUSHCONST for 0 <= n <= 1023 with PFXDICTGETJMP.
\n",
+ "fift": "[ref] [n] PFXDICTCONSTGETJMP\n[ref] [n] PFXDICTSWITCH",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F4AE_n",
+ "stack": "s - s' s'' or s"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_const_pfx_dict_switch",
+ "line": 692,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTCONSTGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BC",
+ "tlb": "#F4BC"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTIGETJMP that returns index i on failure.
\n",
+ "fift": "DICTIGETJMPZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BC",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETJMPZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BD",
+ "tlb": "#F4BD"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTUGETJMP that returns index i on failure.
\n",
+ "fift": "DICTUGETJMPZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BD",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETJMPZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BE",
+ "tlb": "#F4BE"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTIGETEXEC that returns index i on failure.
\n",
+ "fift": "DICTIGETEXECZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BE",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETEXECZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BF",
+ "tlb": "#F4BF"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTUGETEXEC that returns index i on failure.
\n",
+ "fift": "DICTUGETEXECZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BF",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETEXECZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B1",
+ "tlb": "#F4B1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Constructs a subdictionary consisting of all keys beginning with prefix k (represented by a Slice, the first 0 <= l <= n <= 1023 data bits of which are used as a key) of length l in dictionary D of type HashmapE(n,X) with n-bit keys. On success, returns the new subdictionary of the same type HashmapE(n,X) as a Slice D'.
\n",
+ "fift": "SUBDICTGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B1",
+ "stack": "k l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B2",
+ "tlb": "#F4B2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTGET with the prefix represented by a signed big-endian l-bit Integer x, where necessarily l <= 257.
\n",
+ "fift": "SUBDICTIGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B2",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTIGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B3",
+ "tlb": "#F4B3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTGET with the prefix represented by an unsigned big-endian l-bit Integer x, where necessarily l <= 256.
\n",
+ "fift": "SUBDICTUGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B3",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTUGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B5",
+ "tlb": "#F4B5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Similar to SUBDICTGET, but removes the common prefix k from all keys of the new dictionary D', which becomes of type HashmapE(n-l,X).
\n",
+ "fift": "SUBDICTRPGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B5",
+ "stack": "k l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTRPGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B6",
+ "tlb": "#F4B6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTRPGET with the prefix represented by a signed big-endian l-bit Integer x, where necessarily l <= 257.
\n",
+ "fift": "SUBDICTIRPGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B6",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTIRPGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B7",
+ "tlb": "#F4B7"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTRPGET with the prefix represented by an unsigned big-endian l-bit Integer x, where necessarily l <= 256.
\n",
+ "fift": "SUBDICTURPGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B7",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTURPGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F800",
+ "tlb": "#F800"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Sets current gas limit g_l to its maximal allowed value g_m, and resets the gas credit g_c to zero, decreasing the value of g_r by g_c in the process.\nIn other words, the current smart contract agrees to buy some gas to finish the current transaction. This action is required to process external messages, which bring no value (hence no gas) with themselves.
\n",
+ "fift": "ACCEPT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F800",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_accept",
+ "line": 81,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "ACCEPT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F801",
+ "tlb": "#F801"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Sets current gas limit g_l to the minimum of g and g_m, and resets the gas credit g_c to zero. If the gas consumed so far (including the present instruction) exceeds the resulting value of g_l, an (unhandled) out of gas exception is thrown before setting new gas limits. Notice that SETGASLIMIT with an argument g >= 2^63-1 is equivalent to ACCEPT.
\n",
+ "fift": "SETGASLIMIT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F801",
+ "stack": "g - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_gas_limit",
+ "line": 86,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETGASLIMIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": [
+ {
+ "name": "g",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F807",
+ "tlb": "#F807"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Returns gas consumed by VM so far (including this instruction).
\n",
+ "fift": "GASCONSUMED",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F807",
+ "stack": "- g_c"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_gas_consumed",
+ "line": 96,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GASCONSUMED",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": [
+ {
+ "name": "g_c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F80F",
+ "tlb": "#F80F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Commits the current state of registers c4 (''persistent data'') and c5 (''actions'') so that the current execution is considered ''successful'' with the saved values even if an exception is thrown later.
\n",
+ "fift": "COMMIT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F80F",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_commit",
+ "line": 102,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "COMMIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 4,
+ "type": "constant"
+ },
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "cstate",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F810",
+ "tlb": "#F810"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Generates a new pseudo-random unsigned 256-bit Integer x. The algorithm is as follows: if r is the old value of the random seed, considered as a 32-byte array (by constructing the big-endian representation of an unsigned 256-bit integer), then its sha512(r) is computed; the first 32 bytes of this hash are stored as the new value r' of the random seed, and the remaining 32 bytes are returned as the next random value x.
\n",
+ "fift": "RANDU256",
+ "fift_examples": [],
+ "gas": "26+|c7|+|c1_1|",
+ "opcode": "F810",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_randu256",
+ "line": 542,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RANDU256",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F811",
+ "tlb": "#F811"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Generates a new pseudo-random integer z in the range 0...y-1 (or y...-1, if y<0). More precisely, an unsigned random value x is generated as in RAND256U; then z:=floor(x*y/2^256) is computed.\nEquivalent to RANDU256 256 MULRSHIFT.
\n",
+ "fift": "RAND",
+ "fift_examples": [],
+ "gas": "26+|c7|+|c1_1|",
+ "opcode": "F811",
+ "stack": "y - z"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rand_int",
+ "line": 548,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F814",
+ "tlb": "#F814"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Sets the random seed to unsigned 256-bit Integer x.
\n",
+ "fift": "SETRAND",
+ "fift_examples": [],
+ "gas": "26+|c7|+|c1_1|",
+ "opcode": "F814",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_rand",
+ "line": 561,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETRAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F815",
+ "tlb": "#F815"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Mixes unsigned 256-bit Integer x into the random seed r by setting the random seed to Sha of the concatenation of two 32-byte strings: the first with the big-endian representation of the old seed r, and the second with the big-endian representation of x.
\n",
+ "fift": "ADDRAND\nRANDOMIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F815",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_rand",
+ "line": 561,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F82",
+ "tlb": "#F82 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the i-th parameter from the Tuple provided at c7 for 0 <= i <= 15. Equivalent to c7 PUSHCTR FIRST [i] INDEX.\nIf one of these internal operations fails, throws an appropriate type checking or range checking exception.
\n",
+ "fift": "[i] GETPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F82i",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_var_param",
+ "line": 152,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETPARAM",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F830",
+ "tlb": "#F830"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the global configuration dictionary along with its key length (32).\nEquivalent to CONFIGROOT 32 PUSHINT.
\n",
+ "fift": "CONFIGDICT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F830",
+ "stack": " - D 32"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_config_dict",
+ "line": 182,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CONFIGDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "type": "const",
+ "value": 32,
+ "value_type": "Integer"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F832",
+ "tlb": "#F832"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the value of the global configuration parameter with integer index i as a Cell c, and a flag to indicate success.\nEquivalent to CONFIGDICT DICTIGETREF.
\n",
+ "fift": "CONFIGPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F832",
+ "stack": "i - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_config_param",
+ "line": 188,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CONFIGPARAM",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F833",
+ "tlb": "#F833"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the value of the global configuration parameter with integer index i as a Maybe Cell c^?.\nEquivalent to CONFIGDICT DICTIGETOPTREF.
\n",
+ "fift": "CONFIGOPTPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F833",
+ "stack": "i - c^?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_config_param",
+ "line": 188,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CONFIGOPTPARAM",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83400",
+ "tlb": "#F83400"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrives last_mc_blocks part of PrevBlocksInfo from c7 (parameter 13).
\n",
+ "fift": "PREVMCBLOCKS",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F83400",
+ "stack": "- t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_prev_blocks_info",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PREVMCBLOCKS",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83401",
+ "tlb": "#F83401"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrives prev_key_block part of PrevBlocksInfo from c7 (parameter 13).
\n",
+ "fift": "PREVKEYBLOCK",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F83401",
+ "stack": "- t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_prev_blocks_info",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PREVKEYBLOCK",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83402",
+ "tlb": "#F83402"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrives last_mc_blocks_divisible_by_100 part of PrevBlocksInfo from c7 (parameter 13).
\n",
+ "fift": "PREVMCBLOCKS_100",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F83402",
+ "stack": "- t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_prev_blocks_info",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PREVMCBLOCKS_100",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F835",
+ "tlb": "#F835"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrieves global_id from 19 network config.
\n",
+ "fift": "GLOBALID",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F835",
+ "stack": "- i"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_global_id",
+ "line": 276,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GLOBALID",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F836",
+ "tlb": "#F836"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculates gas fee
\n",
+ "fift": "GETGASFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F836",
+ "stack": "gas_used is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_gas_fee",
+ "line": 306,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGASFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "gas_used",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F837",
+ "tlb": "#F837"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculates storage fees (only current StoragePrices entry is used).
\n",
+ "fift": "GETSTORAGEFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F837",
+ "stack": "cells bits seconds is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_storage_fee",
+ "line": 317,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETSTORAGEFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "cells",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "bits",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "seconds",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F838",
+ "tlb": "#F838"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculates forward fee.
\n",
+ "fift": "GETFORWARDFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F838",
+ "stack": "cells bits is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_forward_fee",
+ "line": 331,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETFORWARDFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "cells",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "bits",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F839",
+ "tlb": "#F839"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns gas usage for the current contract if it is precompiled, null otherwise.
\n",
+ "fift": "GETPRECOMPILEDGAS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F839",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_precompiled_gas",
+ "line": 343,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETPRECOMPILEDGAS",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83A",
+ "tlb": "#F83A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculate (fwd_fee * 2^16) / (2^16 - first_frac). Can be used to get the original fwd_fee of the message.
\n",
+ "fift": "GETORIGINALFWDFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F83A",
+ "stack": "fwd_fee is_mc - orig_fwd_fee"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_original_fwd_fee",
+ "line": 350,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETORIGINALFWDFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "fwd_fee",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "orig_fwd_fee",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83B",
+ "tlb": "#F83B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Same as GETGASFEE, but without flat price (just (gas_used * price) / 2^16).
\n",
+ "fift": "GETGASFEESIMPLE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F83B",
+ "stack": "gas_used is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_gas_fee_simple",
+ "line": 364,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGASFEESIMPLE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "gas_used",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83C",
+ "tlb": "#F83C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Same as GETFORWARDFEE, but without lump price (just (bits*bit_price + cells*cell_price) / 2^16).
\n",
+ "fift": "GETFORWARDFEESIMPLE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F83C",
+ "stack": "cells bits is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_forward_fee_simple",
+ "line": 375,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETFORWARDFEESIMPLE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "cells",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "bits",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F840",
+ "tlb": "#F840"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Returns the k-th global variable for 0 <= k < 255.\nEquivalent to c7 PUSHCTR SWAP INDEXVARQ.
\n",
+ "fift": "GETGLOBVAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F840",
+ "stack": "k - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_global_var",
+ "line": 221,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGLOBVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 1,
+ "name": "k",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 5,
+ "to": 31
+ },
+ "prefix": "F85_",
+ "tlb": "#F85_ k:(## 5) {1 <= k}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Returns the k-th global variable for 1 <= k <= 31.\nEquivalent to c7 PUSHCTR [k] INDEXQ.
\n",
+ "fift": "[k] GETGLOB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F85_k",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_global",
+ "line": 215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGLOB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F860",
+ "tlb": "#F860"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Assigns x to the k-th global variable for 0 <= k < 255.\nEquivalent to c7 PUSHCTR ROTREV SETINDEXVARQ c7 POPCTR.
\n",
+ "fift": "SETGLOBVAR",
+ "fift_examples": [],
+ "gas": "26+|c7'|",
+ "opcode": "F860",
+ "stack": "x k - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_global_var",
+ "line": 252,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETGLOBVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 1,
+ "name": "k",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 5,
+ "to": 31
+ },
+ "prefix": "F87_",
+ "tlb": "#F87_ k:(## 5) {1 <= k}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Assigns x to the k-th global variable for 1 <= k <= 31.\nEquivalent to c7 PUSHCTR SWAP k SETINDEXQ c7 POPCTR.
\n",
+ "fift": "[k] SETGLOB",
+ "fift_examples": [],
+ "gas": "26+|c7'|",
+ "opcode": "F87_k",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_global",
+ "line": 245,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETGLOB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F880",
+ "tlb": "#F880"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Takes id of the extra currency (integer in range 0..2^32-1), returns the amount of this extra currency on the account balance. The first 5 executions of GETEXTRABALANCE consume at most 26 + 200 gas each. The subsequent executions incur the full gas cost of 26 (normal instruction cost) plus gas for loading cells (up to 3300 if the dictionary has maximum depth).
\n",
+ "fift": "GETEXTRABALANCE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F880",
+ "stack": "id - amount"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_extra_currency_balance",
+ "line": 388,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETEXTRABALANCE",
+ "since_version": 10,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "id",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "amount",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "i",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F881",
+ "tlb": "#F881 i:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the i-th parameter from the Tuple provided at c7 for 0 <= i <= 255. Equivalent to c7 PUSHCTR FIRST [i] INDEX.\nIf one of these internal operations fails, throws an appropriate type checking or range checking exception.
\n",
+ "fift": "[i] GETPARAMLONG",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F881ii",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_var_param_long",
+ "line": 158,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETPARAMLONG",
+ "since_version": 11,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F89",
+ "tlb": "#F89 i:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Equivalent to INMSGPARAMS i INDEX
\n",
+ "fift": "[i] INMSGPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F89i",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_var_in_msg_param",
+ "line": 176,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "INMSGPARAM",
+ "since_version": 11,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F900",
+ "tlb": "#F900"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Computes the representation hash of a Cell c and returns it as a 256-bit unsigned integer x. Useful for signing and checking signatures of arbitrary entities represented by a tree of cells.
\n",
+ "fift": "HASHCU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F900",
+ "stack": "c - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_hash",
+ "line": 612,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHCU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F901",
+ "tlb": "#F901"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Computes the hash of a Slice s and returns it as a 256-bit unsigned integer x. The result is the same as if an ordinary cell containing only data and references from s had been created and its hash computed by HASHCU.
\n",
+ "fift": "HASHSU",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "F901",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_hash",
+ "line": 612,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHSU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F902",
+ "tlb": "#F902"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Computes Sha of the data bits of Slice s. If the bit length of s is not divisible by eight, throws a cell underflow exception. The hash value is returned as a 256-bit unsigned integer x.
\n",
+ "fift": "SHA256U",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F902",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_sha256",
+ "line": 634,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SHA256U",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90400",
+ "tlb": "#F90400"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90400",
+ "stack": "s_1 ... s_n n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90401",
+ "tlb": "#F90401"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90401",
+ "stack": "s_1 ... s_n n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90402",
+ "tlb": "#F90402"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90402",
+ "stack": "s_1 ... s_n n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90403",
+ "tlb": "#F90403"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90403",
+ "stack": "s_1 ... s_n n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90404",
+ "tlb": "#F90404"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90404",
+ "stack": "s_1 ... s_n n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90500",
+ "tlb": "#F90500"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90500",
+ "stack": "s_n ... s_1 n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90501",
+ "tlb": "#F90501"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90501",
+ "stack": "s_n ... s_1 n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90502",
+ "tlb": "#F90502"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90502",
+ "stack": "s_n ... s_1 n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90503",
+ "tlb": "#F90503"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90503",
+ "stack": "s_n ... s_1 n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90504",
+ "tlb": "#F90504"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90504",
+ "stack": "s_n ... s_1 n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90600",
+ "tlb": "#F90600"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90600",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90601",
+ "tlb": "#F90601"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90601",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90602",
+ "tlb": "#F90602"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90602",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90603",
+ "tlb": "#F90603"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90603",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90604",
+ "tlb": "#F90604"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/6 gas per byte",
+ "opcode": "F90604",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90700",
+ "tlb": "#F90700"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90700",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90701",
+ "tlb": "#F90701"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90701",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90702",
+ "tlb": "#F90702"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90702",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90703",
+ "tlb": "#F90703"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90703",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90704",
+ "tlb": "#F90704"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/6 gas per byte",
+ "opcode": "F90704",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F910",
+ "tlb": "#F910"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks the Ed25519-signature s of a hash h (a 256-bit unsigned integer, usually computed as the hash of some data) using public key k (also represented by a 256-bit unsigned integer).\nThe signature s must be a Slice containing at least 512 data bits; only the first 512 bits are used. The result is -1 if the signature is valid, 0 otherwise.\nNotice that CHKSIGNU is equivalent to ROT NEWC 256 STU ENDC ROTREV CHKSIGNS, i.e., to CHKSIGNS with the first argument d set to 256-bit Slice containing h. Therefore, if h is computed as the hash of some data, these data are hashed twice, the second hashing occurring inside CHKSIGNS.
\n",
+ "fift": "CHKSIGNU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F910",
+ "stack": "h s k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ed25519_check_signature",
+ "line": 724,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CHKSIGNU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F911",
+ "tlb": "#F911"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks whether s is a valid Ed25519-signature of the data portion of Slice d using public key k, similarly to CHKSIGNU. If the bit length of Slice d is not divisible by eight, throws a cell underflow exception. The verification of Ed25519 signatures is the standard one, with Sha used to reduce d to the 256-bit number that is actually signed.
\n",
+ "fift": "CHKSIGNS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F911",
+ "stack": "d s k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ed25519_check_signature",
+ "line": 724,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CHKSIGNS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "d",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F912",
+ "tlb": "#F912"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Recovers the public key from a secp256k1 signature, identical to Bitcoin/Ethereum operations. Takes a 32-byte hash as uint256 hash and a 65-byte signature as uint8 v, uint256 r, and uint256 s. In TON, the v value is strictly 0 or 1; no extra flags or extended values are supported. If the public key cannot be recovered, the instruction returns 0. On success, it returns the recovered 65-byte public key as uint8 h, uint256 x1, and uint256 x2, followed by -1.
\n",
+ "fift": "ECRECOVER",
+ "fift_examples": [],
+ "gas": "1526",
+ "opcode": "F912",
+ "stack": "hash v r s - 0 or h x1 x2 -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ecrecover",
+ "line": 760,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "ECRECOVER",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "v",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F913",
+ "tlb": "#F913"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "performs secp256k1_xonly_pubkey_tweak_add. key and tweak are 256-bit unsigned integers. 65-byte public key is returned as uint8 f, uint256 x, y (as in ECRECOVER).
\n",
+ "fift": "SECP256K1_XONLY_PUBKEY_TWEAK_ADD",
+ "fift_examples": [],
+ "gas": "1576",
+ "opcode": "F913",
+ "stack": "key tweak - 0 or f x y -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_secp256k1_xonly_pubkey_tweak_add",
+ "line": 798,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SECP256K1_XONLY_PUBKEY_TWEAK_ADD",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "key",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "tweak",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F914",
+ "tlb": "#F914"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks seck256r1-signature sig of a number h (a 256-bit unsigned integer, usually computed as the hash of some data) and public key k. Returns -1 on success, 0 on failure. Public key is a 33-byte slice (encoded according to Sec. 2.3.4 point 2 of SECG SEC 1). Signature sig is a 64-byte slice (two 256-bit unsigned integers r and s).
\n",
+ "fift": "P256_CHKSIGNU",
+ "fift_examples": [],
+ "gas": "3526",
+ "opcode": "F914",
+ "stack": "h sig k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_p256_chksign",
+ "line": 829,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "P256_CHKSIGNU",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "d",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F915",
+ "tlb": "#F915"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks seck256r1-signature sig of data portion of slice d and public key k. Returns -1 on success, 0 on failure. Public key is a 33-byte slice (encoded according to Sec. 2.3.4 point 2 of SECG SEC 1). Signature sig is a 64-byte slice (two 256-bit unsigned integers r and s).
\n",
+ "fift": "P256_CHKSIGNS",
+ "fift_examples": [],
+ "gas": "3526",
+ "opcode": "F915",
+ "stack": "d sig k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_p256_chksign",
+ "line": 829,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "P256_CHKSIGNS",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "d",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F916",
+ "tlb": "#F916"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Same as ENDC HASHCU, but without gas cost for cell creation.
\n",
+ "fift": "HASHBU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F916",
+ "stack": "b - hash"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_hash",
+ "line": 612,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHBU",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F920",
+ "tlb": "#F920"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Deterministically generates a valid point x from a 512-bit hash (given as two 256-bit integers).
\n",
+ "fift": "RIST255_FROMHASH",
+ "fift_examples": [],
+ "gas": "626",
+ "opcode": "F920",
+ "stack": "h1 h2 - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_from_hash",
+ "line": 874,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_FROMHASH",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F921",
+ "tlb": "#F921"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that integer x is a valid representation of some curve point. Throws range_chk on error.
\n",
+ "fift": "RIST255_VALIDATE",
+ "fift_examples": [],
+ "gas": "226",
+ "opcode": "F921",
+ "stack": "x -"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_validate",
+ "line": 895,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_VALIDATE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F922",
+ "tlb": "#F922"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition of two points on a curve.
\n",
+ "fift": "RIST255_ADD",
+ "fift_examples": [],
+ "gas": "626",
+ "opcode": "F922",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_add",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_ADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F923",
+ "tlb": "#F923"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction of two points on curve.
\n",
+ "fift": "RIST255_SUB",
+ "fift_examples": [],
+ "gas": "626",
+ "opcode": "F923",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_sub",
+ "line": 938,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_SUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F924",
+ "tlb": "#F924"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies point x by a scalar n. Any n is valid, including negative.
\n",
+ "fift": "RIST255_MUL",
+ "fift_examples": [],
+ "gas": "2026",
+ "opcode": "F924",
+ "stack": "x n - x*n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul",
+ "line": 976,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_MUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F925",
+ "tlb": "#F925"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies the generator point g by a scalar n. Any n is valid, including negative.
\n",
+ "fift": "RIST255_MULBASE",
+ "fift_examples": [],
+ "gas": "776",
+ "opcode": "F925",
+ "stack": "n - g*n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul_base",
+ "line": 1007,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_MULBASE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F926",
+ "tlb": "#F926"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes integer l=2^252+27742317777372353535851937790883648493, which is the order of the group.
\n",
+ "fift": "RIST255_PUSHL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F926",
+ "stack": "- l"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_push_l",
+ "line": 1032,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_PUSHL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F921",
+ "tlb": "#B7F921"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that integer x is a valid representation of some curve point. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QVALIDATE",
+ "fift_examples": [],
+ "gas": "234",
+ "opcode": "B7F921",
+ "stack": "x - 0 or -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_validate",
+ "line": 895,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QVALIDATE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F922",
+ "tlb": "#B7F922"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition of two points on a curve. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QADD",
+ "fift_examples": [],
+ "gas": "634",
+ "opcode": "B7F922",
+ "stack": "x y - 0 or x+y -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_add",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F923",
+ "tlb": "#B7F923"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction of two points on curve. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QSUB",
+ "fift_examples": [],
+ "gas": "634",
+ "opcode": "B7F923",
+ "stack": "x y - 0 or x-y -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_sub",
+ "line": 938,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QSUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F924",
+ "tlb": "#B7F924"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies point x by a scalar n. Any n is valid, including negative. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QMUL",
+ "fift_examples": [],
+ "gas": "2034",
+ "opcode": "B7F924",
+ "stack": "x n - 0 or x*n -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul",
+ "line": 976,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QMUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F925",
+ "tlb": "#B7F925"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies the generator point g by a scalar n. Any n is valid, including negative.
\n",
+ "fift": "RIST255_QMULBASE",
+ "fift_examples": [],
+ "gas": "784",
+ "opcode": "B7F925",
+ "stack": "n - 0 or g*n -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul_base",
+ "line": 1007,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QMULBASE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93000",
+ "tlb": "#F93000"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks BLS signature, return true on success, false otherwise.
\n",
+ "fift": "BLS_VERIFY",
+ "fift_examples": [],
+ "gas": "61034",
+ "opcode": "F93000",
+ "stack": "pk msg sgn - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_verify",
+ "line": 1095,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_VERIFY",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "pk",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "msg",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sgn",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93001",
+ "tlb": "#F93001"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Aggregates signatures. n>0. Throw exception if n=0 or if some sig_i is not a valid signature.
\n",
+ "fift": "BLS_AGGREGATE",
+ "fift_examples": [],
+ "gas": "n*4350-2616",
+ "opcode": "F93001",
+ "stack": "sig_1 ... sig_n n - sig"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_aggregate",
+ "line": 1107,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_AGGREGATE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "signatures",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93002",
+ "tlb": "#F93002"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks aggregated BLS signature for keys pk_1...pk_n and message msg. Return true on success, false otherwise. Return false if n=0.
\n",
+ "fift": "BLS_FASTAGGREGATEVERIFY",
+ "fift_examples": [],
+ "gas": "58034+n*3000",
+ "opcode": "F93002",
+ "stack": "pk_1 ... pk_n n msg sig - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_fast_aggregate_verify",
+ "line": 1121,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_FASTAGGREGATEVERIFY",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "pk",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "public_keys",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "msg",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93003",
+ "tlb": "#F93003"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks aggregated BLS signature for key-message pairs pk_1 msg_1...pk_n msg_n. Return true on success, false otherwise. Return false if n=0.
\n",
+ "fift": "BLS_AGGREGATEVERIFY",
+ "fift_examples": [],
+ "gas": "38534+n*22500",
+ "opcode": "F93003",
+ "stack": "pk_1 msg_1 ... pk_n msg_n n sgn - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_aggregate_verify",
+ "line": 1138,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_AGGREGATEVERIFY",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "pk",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "msg",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "key_message_pairs",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "sgn",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93010",
+ "tlb": "#F93010"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition on G1.
\n",
+ "fift": "BLS_G1_ADD",
+ "fift_examples": [],
+ "gas": "3934",
+ "opcode": "F93010",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_add",
+ "line": 1155,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_ADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93011",
+ "tlb": "#F93011"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction on G1.
\n",
+ "fift": "BLS_G1_SUB",
+ "fift_examples": [],
+ "gas": "3934",
+ "opcode": "F93011",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_sub",
+ "line": 1166,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_SUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93012",
+ "tlb": "#F93012"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Negation on G1.
\n",
+ "fift": "BLS_G1_NEG",
+ "fift_examples": [],
+ "gas": "784",
+ "opcode": "F93012",
+ "stack": "x - -x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_neg",
+ "line": 1177,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_NEG",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93013",
+ "tlb": "#F93013"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies G1 point x by scalar s. Any s is valid, including negative.
\n",
+ "fift": "BLS_G1_MUL",
+ "fift_examples": [],
+ "gas": "5234",
+ "opcode": "F93013",
+ "stack": "x s - x*s"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_mul",
+ "line": 1186,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_MUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93014",
+ "tlb": "#F93014"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates x_1*s_1+...+x_n*s_n for G1 points x_i and scalars s_i. Returns zero point if n=0. Any s_i is valid, including negative.
\n",
+ "fift": "BLS_G1_MULTIEXP",
+ "fift_examples": [],
+ "gas": "11409+n*630+n/floor(max(log2(n),4))*8820",
+ "opcode": "F93014",
+ "stack": "x_1 s_1 ... x_n s_n n - x_1*s_1+...+x_n*s_n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_multiexp",
+ "line": 1197,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_MULTIEXP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "components",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93015",
+ "tlb": "#F93015"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes zero point in G1.
\n",
+ "fift": "BLS_G1_ZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93015",
+ "stack": "- zero"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_zero",
+ "line": 1213,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_ZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "zero",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93016",
+ "tlb": "#F93016"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Converts FP element f to a G1 point.
\n",
+ "fift": "BLS_MAP_TO_G1",
+ "fift_examples": [],
+ "gas": "2384",
+ "opcode": "F93016",
+ "stack": "f - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_map_to_g1",
+ "line": 1220,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_MAP_TO_G1",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93017",
+ "tlb": "#F93017"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that slice x represents a valid element of G1.
\n",
+ "fift": "BLS_G1_INGROUP",
+ "fift_examples": [],
+ "gas": "2984",
+ "opcode": "F93017",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_in_group",
+ "line": 1229,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_INGROUP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93018",
+ "tlb": "#F93018"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that G1 point x is equal to zero.
\n",
+ "fift": "BLS_G1_ISZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93018",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_is_zero",
+ "line": 1238,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_ISZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93020",
+ "tlb": "#F93020"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition on G2.
\n",
+ "fift": "BLS_G2_ADD",
+ "fift_examples": [],
+ "gas": "6134",
+ "opcode": "F93020",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_add",
+ "line": 1246,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_ADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93021",
+ "tlb": "#F93021"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction on G2.
\n",
+ "fift": "BLS_G2_SUB",
+ "fift_examples": [],
+ "gas": "6134",
+ "opcode": "F93021",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_sub",
+ "line": 1257,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_SUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93022",
+ "tlb": "#F93022"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Negation on G2.
\n",
+ "fift": "BLS_G2_NEG",
+ "fift_examples": [],
+ "gas": "1584",
+ "opcode": "F93022",
+ "stack": "x - -x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_neg",
+ "line": 1268,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_NEG",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93023",
+ "tlb": "#F93023"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies G2 point x by scalar s. Any s is valid, including negative.
\n",
+ "fift": "BLS_G2_MUL",
+ "fift_examples": [],
+ "gas": "10584",
+ "opcode": "F93023",
+ "stack": "x s - x*s"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_mul",
+ "line": 1277,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_MUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93024",
+ "tlb": "#F93024"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates x_1*s_1+...+x_n*s_n for G2 points x_i and scalars s_i. Returns zero point if n=0. Any s_i is valid, including negative.
\n",
+ "fift": "BLS_G2_MULTIEXP",
+ "fift_examples": [],
+ "gas": "30422+n*1280+n/floor(max(log2(n),4))*22840",
+ "opcode": "F93024",
+ "stack": "x_1 s_1 ... x_n s_n n - x_1*s_1+...+x_n*s_n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_multiexp",
+ "line": 1288,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_MULTIEXP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "components",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93025",
+ "tlb": "#F93025"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes zero point in G2.
\n",
+ "fift": "BLS_G2_ZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93025",
+ "stack": "- zero"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_zero",
+ "line": 1304,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_ZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "zero",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93026",
+ "tlb": "#F93026"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Converts FP2 element f to a G2 point.
\n",
+ "fift": "BLS_MAP_TO_G2",
+ "fift_examples": [],
+ "gas": "7984",
+ "opcode": "F93026",
+ "stack": "f - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_map_to_g2",
+ "line": 1311,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_MAP_TO_G2",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93027",
+ "tlb": "#F93027"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that slice x represents a valid element of G2.
\n",
+ "fift": "BLS_G2_INGROUP",
+ "fift_examples": [],
+ "gas": "4284",
+ "opcode": "F93027",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_in_group",
+ "line": 1320,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_INGROUP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93028",
+ "tlb": "#F93028"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that G2 point x is equal to zero.
\n",
+ "fift": "BLS_G2_ISZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93028",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_is_zero",
+ "line": 1329,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_ISZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93030",
+ "tlb": "#F93030"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Given G1 points x_i and G2 points y_i, calculates and multiply pairings of x_i,y_i. Returns true if the result is the multiplicative identity in FP12, false otherwise. Returns false if n=0.
\n",
+ "fift": "BLS_PAIRING",
+ "fift_examples": [],
+ "gas": "20034+n*11800",
+ "opcode": "F93030",
+ "stack": "x_1 y_1 ... x_n y_n n - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_pairing",
+ "line": 1337,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_PAIRING",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "components",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93031",
+ "tlb": "#F93031"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes the order of G1 and G2 (approx. 2^255).
\n",
+ "fift": "BLS_PUSHR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93031",
+ "stack": "- r"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_push_r",
+ "line": 1351,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_PUSHR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F940",
+ "tlb": "#F940"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "Recursively computes the count of distinct cells x, data bits y, and cell references z in the dag rooted at Cell c, effectively returning the total storage used by this dag taking into account the identification of equal cells. The values of x, y, and z are computed by a depth-first traversal of this dag, with a hash table of visited cell hashes used to prevent visits of already-visited cells. The total count of visited cells x cannot exceed non-negative Integer n; otherwise the computation is aborted before visiting the (n+1)-st cell and a zero is returned to indicate failure. If c is Null, returns x=y=z=0.
\n",
+ "fift": "CDATASIZEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F940",
+ "stack": "c n - x y z -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CDATASIZEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F941",
+ "tlb": "#F941"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "A non-quiet version of CDATASIZEQ that throws a cell overflow exception (8) on failure.
\n",
+ "fift": "CDATASIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F941",
+ "stack": "c n - x y z"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CDATASIZE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F942",
+ "tlb": "#F942"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "Similar to CDATASIZEQ, but accepting a Slice s instead of a Cell. The returned value of x does not take into account the cell that contains the slice s itself; however, the data bits and the cell references of s are accounted for in y and z.
\n",
+ "fift": "SDATASIZEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F942",
+ "stack": "s n - x y z -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SDATASIZEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F943",
+ "tlb": "#F943"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "A non-quiet version of SDATASIZEQ that throws a cell overflow exception (8) on failure.
\n",
+ "fift": "SDATASIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F943",
+ "stack": "s n - x y z"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SDATASIZE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA00",
+ "tlb": "#FA00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Loads (deserializes) a Gram or VarUInteger 16 amount from Slice s, and returns the amount as Integer x along with the remainder s' of s. The expected serialization of x consists of a 4-bit unsigned big-endian integer l, followed by an 8l-bit unsigned big-endian representation of x.\nThe net effect is approximately equivalent to 4 LDU SWAP 3 LSHIFT# LDUX.
\n",
+ "fift": "LDGRAMS\nLDVARUINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA00",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDGRAMS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA01",
+ "tlb": "#FA01"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to LDVARUINT16, but loads a signed Integer x.\nApproximately equivalent to 4 LDU SWAP 3 LSHIFT# LDIX.
\n",
+ "fift": "LDVARINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA01",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDVARINT16",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA02",
+ "tlb": "#FA02"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Stores (serializes) an Integer x in the range 0...2^120-1 into Builder b, and returns the resulting Builder b'. The serialization of x consists of a 4-bit unsigned big-endian integer l, which is the smallest integer l>=0, such that x<2^(8l), followed by an 8l-bit unsigned big-endian representation of x. If x does not belong to the supported range, a range check exception is thrown.
\n",
+ "fift": "STGRAMS\nSTVARUINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA02",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STGRAMS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA03",
+ "tlb": "#FA03"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to STVARUINT16, but serializes a signed Integer x in the range -2^119...2^119-1.
\n",
+ "fift": "STVARINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA03",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STVARINT16",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA04",
+ "tlb": "#FA04"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Loads (deserializes) a VarUInteger 32 amount from Slice s, and returns the amount as Integer x along with the remainder s' of s. The expected serialization of x consists of a 5-bit unsigned big-endian integer l, followed by an 8l-bit unsigned big-endian representation of x.\nThe net effect is approximately equivalent to 4 LDU SWAP 3 LSHIFT# LDUX.
\n",
+ "fift": "LDVARUINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA04",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDVARUINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA05",
+ "tlb": "#FA05"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to LDVARUINT32, but loads a signed Integer x.\nApproximately equivalent to 5 LDU SWAP 3 LSHIFT# LDIX.
\n",
+ "fift": "LDVARINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA05",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDVARINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA06",
+ "tlb": "#FA06"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Stores (serializes) an Integer x in the range 0...2^248-1 into Builder b, and returns the resulting Builder b'. The serialization of x consists of a 5-bit unsigned big-endian integer l, which is the smallest integer l>=0, such that x<2^(8l), followed by an 8l-bit unsigned big-endian representation of x. If x does not belong to the supported range, a range check exception is thrown.
\n",
+ "fift": "STVARUINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA06",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STVARUINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA07",
+ "tlb": "#FA07"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to STVARUINT32, but serializes a signed Integer x in the range -2^247...2^247-1.
\n",
+ "fift": "STVARINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA07",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STVARINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA40",
+ "tlb": "#FA40"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Loads from Slice s the only prefix that is a valid MsgAddress, and returns both this prefix s' and the remainder s'' of s as slices.
\n",
+ "fift": "LDMSGADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA40",
+ "stack": "s - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_message_addr",
+ "line": 1536,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDMSGADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA41",
+ "tlb": "#FA41"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of LDMSGADDR: on success, pushes an extra -1; on failure, pushes the original s and a zero.
\n",
+ "fift": "LDMSGADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA41",
+ "stack": "s - s' s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_message_addr",
+ "line": 1536,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDMSGADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA42",
+ "tlb": "#FA42"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Decomposes Slice s containing a valid MsgAddress into a Tuple t with separate fields of this MsgAddress. If s is not a valid MsgAddress, a cell deserialization exception is thrown.
\n",
+ "fift": "PARSEMSGADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA42",
+ "stack": "s - t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_parse_message_addr",
+ "line": 1629,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PARSEMSGADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA43",
+ "tlb": "#FA43"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of PARSEMSGADDR: returns a zero on error instead of throwing an exception.
\n",
+ "fift": "PARSEMSGADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA43",
+ "stack": "s - t -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_parse_message_addr",
+ "line": 1629,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PARSEMSGADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA44",
+ "tlb": "#FA44"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Parses Slice s containing a valid MsgAddressInt (usually a msg_addr_std), applies rewriting from the anycast (if present) to the same-length prefix of the address, and returns both the workchain x and the 256-bit address y as integers. If the address is not 256-bit, or if s is not a valid serialization of MsgAddressInt, throws a cell deserialization exception.
\n",
+ "fift": "REWRITESTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA44",
+ "stack": "s - x y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITESTDADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA45",
+ "tlb": "#FA45"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive REWRITESTDADDR.
\n",
+ "fift": "REWRITESTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA45",
+ "stack": "s - x y -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITESTDADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA46",
+ "tlb": "#FA46"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "msg_addr_var not allowed since TVM v10, so it behaves like REWRITESTDADDR, but returns account id in Slice, not Integer: parses address s into workchain x and account id s.
\n",
+ "fift": "REWRITEVARADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA46",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITEVARADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA47",
+ "tlb": "#FA47"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive REWRITEVARADDR.
\n",
+ "fift": "REWRITEVARADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA47",
+ "stack": "s - x s' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITEVARADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s'",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA48",
+ "tlb": "#FA48"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Loads addr_std$10, if address is not addr_std, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "LDSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA48",
+ "stack": "s - a s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_std_message_addr",
+ "line": 1568,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA49",
+ "tlb": "#FA49"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive LDSTDADDR.
\n",
+ "fift": "LDSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA49",
+ "stack": "s - a s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_std_message_addr",
+ "line": 1568,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s'",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA50",
+ "tlb": "#FA50"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Loads addr_std$10 or addr_none$00, if address is addr_none$00 pushes a Null, if address is not addr_std or addr_none, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "LDOPTSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA50",
+ "stack": "s - a s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_opt_std_message_addr",
+ "line": 1586,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDOPTSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA51",
+ "tlb": "#FA51"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive LDOPTSTDADDR.
\n",
+ "fift": "LDOPTSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA51",
+ "stack": "s - a s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_opt_std_message_addr",
+ "line": 1586,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDOPTSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "s'",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA52",
+ "tlb": "#FA52"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Stores addr_std$10, if address is not addr_std, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "STSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA52",
+ "stack": "a b - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_std_address",
+ "line": 1822,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA53",
+ "tlb": "#FA53"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive STSTDADDR.
\n",
+ "fift": "STSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA53",
+ "stack": "a b - b' 0 or a b -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_std_address",
+ "line": 1822,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA54",
+ "tlb": "#FA54"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "stores addr_std$10 or Null. Null is stored as addr_none$00, if address is not addr_std, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "STOPTSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA54",
+ "stack": "a b - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_opt_std_address",
+ "line": 1855,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STOPTSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA55",
+ "tlb": "#FA55"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive STOPTSTDADDR.
\n",
+ "fift": "STOPTSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA55",
+ "stack": "a b - b' 0 or a b -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_opt_std_address",
+ "line": 1855,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STOPTSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB00",
+ "tlb": "#FB00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Sends a raw message contained in Cell c, which should contain a correctly serialized object Message X, with the only exception that the source address is allowed to have dummy value addr_none (to be automatically replaced with the current smart-contract address), and ihr_fee, fwd_fee, created_lt and created_at fields can have arbitrary values (to be rewritten with correct values during the action phase of the current transaction). Integer parameter x contains the flags. Currently x=0 is used for ordinary messages; x=128 is used for messages that are to carry all the remaining balance of the current smart contract (instead of the value originally indicated in the message); x=64 is used for messages that carry all the remaining value of the inbound message in addition to the value initially indicated in the new message (if bit 0 is not set, the gas fees are deducted from this amount); x'=x+1 means that the sender wants to pay transfer fees separately; x'=x+2 means that any errors arising while processing this message during the action phase should be ignored. Finally, x'=x+32 means that the current account must be destroyed if its resulting balance is zero. This flag is usually employed together with +128.
\n",
+ "fift": "SENDRAWMSG",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB00",
+ "stack": "c x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_send_raw_message",
+ "line": 1762,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SENDRAWMSG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB02",
+ "tlb": "#FB02"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action which would reserve exactly x nanograms (if y=0), at most x nanograms (if y=2), or all but x nanograms (if y=1 or y=3), from the remaining balance of the account. It is roughly equivalent to creating an outbound message carrying x nanograms (or b-x nanograms, where b is the remaining balance) to oneself, so that the subsequent output actions would not be able to spend more money than the remainder. Bit +2 in y means that the external action does not fail if the specified amount cannot be reserved; instead, all remaining balance is reserved. Bit +8 in y means x:=-x before performing any further actions. Bit +4 in y means that x is increased by the original balance of the current account (before the compute phase), including all extra currencies, before performing any other checks and actions. Currently x must be a non-negative integer, and y must be in the range 0...15.
\n",
+ "fift": "RAWRESERVE",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB02",
+ "stack": "x y - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_reserve_raw",
+ "line": 2035,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RAWRESERVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB03",
+ "tlb": "#FB03"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Similar to RAWRESERVE, but also accepts a dictionary D (represented by a Cell or Null) with extra currencies. In this way currencies other than Grams can be reserved.
\n",
+ "fift": "RAWRESERVEX",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB03",
+ "stack": "x D y - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_reserve_raw",
+ "line": 2035,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RAWRESERVEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB04",
+ "tlb": "#FB04"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action that would change this smart contract code to that given by Cell c. Notice that this change will take effect only after the successful termination of the current run of the smart contract.
\n",
+ "fift": "SETCODE",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB04",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_code",
+ "line": 2059,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETCODE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB06",
+ "tlb": "#FB06"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action that would modify the collection of this smart contract libraries by adding or removing library with code given in Cell c. If x=0, the library is actually removed if it was previously present in the collection (if not, this action does nothing). If x=1, the library is added as a private library, and if x=2, the library is added as a public library (and becomes available to all smart contracts if the current smart contract resides in the masterchain); if the library was present in the collection before, its public/private status is changed according to x. Values of x other than 0...2 are invalid.
\n",
+ "fift": "SETLIBCODE",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB06",
+ "stack": "c x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_lib_code",
+ "line": 2071,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETLIBCODE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB07",
+ "tlb": "#FB07"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action similarly to SETLIBCODE, but instead of the library code accepts its hash as an unsigned 256-bit integer h. If x!=0 and the library with hash h is absent from the library collection of this smart contract, this output action will fail.
\n",
+ "fift": "CHANGELIB",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB07",
+ "stack": "h x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_change_lib",
+ "line": 2095,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CHANGELIB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB08",
+ "tlb": "#FB08"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action and returns a fee for creating a message. Mode has the same effect as in the case of SENDRAWMSG. Additionally +1024 means - do not create an action, only estimate fee. Other modes affect the fee calculation as follows: +64 substitutes the entire balance of the incoming message as an outcoming value (slightly inaccurate, gas expenses that cannot be estimated before the computation is completed are not taken into account), +128 substitutes the value of the entire balance of the contract before the start of the computation phase (slightly inaccurate, since gas expenses that cannot be estimated before the completion of the computation phase are not taken into account).
\n",
+ "fift": "SENDMSG",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB08",
+ "stack": "c x - fee"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_send_message",
+ "line": 1800,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SENDMSG",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "fee",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 14,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 4,
+ "to": 14
+ },
+ "prefix": "FE",
+ "tlb": "#FE i:(#<= 14) j:(## 4)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "debug",
+ "description": "",
+ "fift": "{i*16+j} DEBUG",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FEij",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "debugops.cpp",
+ "function_name": "exec_dummy_debug",
+ "line": 35,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/debugops.cpp"
+ }
+ ],
+ "mnemonic": "DEBUG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 4,
+ "bits_padding": 8,
+ "completion_tag": false,
+ "display_hints": [],
+ "max_bits": 128,
+ "max_refs": 0,
+ "min_bits": 8,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "FEF",
+ "tlb": "#FEF n:(## 4) ssss:((n * 8 + 8) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "debug",
+ "description": "0 <= n < 16. Length of ssss is n+1 bytes.\n{string} is a string literal.\nDEBUGSTR: ssss is the given string.\nDEBUGSTRI: ssss is one-byte integer 0 <= x <= 255 followed by the given string.
\n",
+ "fift": "{string} DEBUGSTR\n{string} {x} DEBUGSTRI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FEFnssss",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "debugops.cpp",
+ "function_name": "exec_dummy_debug_str",
+ "line": 41,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/debugops.cpp"
+ }
+ ],
+ "mnemonic": "DEBUGSTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 239,
+ "min_value": 0,
+ "name": "n",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 8,
+ "to": 239
+ },
+ "prefix": "FF",
+ "tlb": "#FF nn:(#<= 239)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "codepage",
+ "description": "Selects TVM codepage 0 <= nn < 240. If the codepage is not supported, throws an invalid opcode exception.
\n",
+ "fift": "[nn] SETCP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FFnn",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_set_cp",
+ "line": 1237,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": -16
+ }
+ ],
+ "max_value": 15,
+ "min_value": 1,
+ "name": "z",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "FFF",
+ "tlb": "#FFF z:(## 4) {1 <= z}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "codepage",
+ "description": "Selects TVM codepage z-16 for 1 <= z <= 15. Negative codepages -13...-1 are reserved for restricted versions of TVM needed to validate runs of TVM in other codepages. Negative codepage -14 is reserved for experimental codepages, not necessarily compatible between different TVM implementations, and should be disabled in the production versions of TVM.
\n",
+ "fift": "[z-16] SETCP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FFFz",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_set_cp",
+ "line": 1237,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCP_SPECIAL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FFF0",
+ "tlb": "#FFF0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "codepage",
+ "description": "Selects codepage c with -2^15 <= c < 2^15 passed in the top of the stack.
\n",
+ "fift": "SETCPX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FFF0",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_set_cp_any",
+ "line": 1243,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCPX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Output.vue b/src/Output.vue
index dbdf0e1..81c1c42 100644
--- a/src/Output.vue
+++ b/src/Output.vue
@@ -33,7 +33,7 @@ function makeDefaultState(): OutputState {
const store = inject('store') as Store
-const { fiftModule } = useFift();
+const { fiftModule } = useFift(store);
const state = ref(makeDefaultState())
const tabs = ref();
diff --git a/src/monaco/Monaco.vue b/src/monaco/Monaco.vue
index 3dc8cc0..256ca24 100644
--- a/src/monaco/Monaco.vue
+++ b/src/monaco/Monaco.vue
@@ -11,16 +11,14 @@ import { getOrCreateModel } from './utils';
import fiftGrammar from './fift.tmLanguage.json';
const registry = new Registry({
- getGrammarDefinition: async _ => {
- return {
- format: 'json',
- content: fiftGrammar
- };
- }
+ getGrammarDefinition: async () => ({
+ format: 'json',
+ content: fiftGrammar
+ })
});
const grammars = new Map();
-grammars.set('fift', 'source.fif');
+grammars.set('fift', 'source.fift');
const props = withDefaults(
defineProps<{
@@ -51,6 +49,9 @@ onMounted(async () => {
throw new Error('Cannot find containerRef');
}
+ // Wait for WASM to load before creating editor
+ await initPromise;
+
const editorInstance = monaco.editor.create(containerRef.value, {
...(props.readonly
? { value: props.value, language: lang.value, wordWrap: 'on' }
@@ -134,7 +135,8 @@ onMounted(async () => {
)
}
- initPromise.then(() => wireTmGrammars(monaco as any, registry, grammars, editorInstance as any));
+ // Wire TextMate grammars (initPromise already resolved above)
+ await wireTmGrammars(monaco as any, registry, grammars, editorInstance as any);
editorInstance.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, () => {
// ignore save event
diff --git a/src/monaco/env.ts b/src/monaco/env.ts
index 25b017f..454df1a 100644
--- a/src/monaco/env.ts
+++ b/src/monaco/env.ts
@@ -6,6 +6,7 @@ import { watchEffect } from 'vue';
import { Store } from '../store';
import { getOrCreateModel } from './utils';
+import { createCompletionProvider, createHoverProvider } from './opcodes';
const URI_PREFIX_LEN = 'file:///'.length;
@@ -53,4 +54,8 @@ export function loadMonacoEnv() {
};
languages.register({ id: 'fift', extensions: ['.fif'] });
+
+ // Register completion and hover providers for TVM opcodes
+ languages.registerCompletionItemProvider('fift', createCompletionProvider());
+ languages.registerHoverProvider('fift', createHoverProvider());
}
diff --git a/src/monaco/opcodes.ts b/src/monaco/opcodes.ts
new file mode 100644
index 0000000..3e5ca65
--- /dev/null
+++ b/src/monaco/opcodes.ts
@@ -0,0 +1,308 @@
+import { languages } from 'monaco-editor-core';
+import cp0Data from '../../cp0.json';
+
+const fiftWordsWithStdlib = new Set();
+const fiftWordsWithoutStdlib = new Set();
+let fiftWordsWithStdlibLoaded = false;
+let fiftWordsWithoutStdlibLoaded = false;
+let currentIncludeStdlib = true;
+
+export interface OpcodeInfo {
+ mnemonic: string;
+ fift: string;
+ stack: string;
+ description: string;
+ category?: string;
+ gas?: string;
+ opcode?: string;
+ isAlias?: boolean;
+ aliasOf?: string;
+ snippet?: string;
+ hasOperands?: boolean;
+}
+
+const opcodeMap = new Map();
+
+function stripHtml(html: string): string {
+ return html
+ .replace(/<[^>]*>/g, '')
+ .replace(/</g, '<')
+ .replace(/>/g, '>')
+ .replace(/&/g, '&')
+ .replace(/"/g, '"')
+ .replace(/'/g, "'")
+ .replace(/ /g, ' ')
+ .trim();
+}
+
+/**
+ * Convert fift syntax like "s[i] s[j] XCHG" to snippet "s${1:i} s${2:j} XCHG"
+ */
+function createSnippet(fiftSyntax: string): { snippet: string; hasOperands: boolean } {
+ let snippet = fiftSyntax.trim();
+ let placeholderIndex = 1;
+ let hasOperands = false;
+
+ // Replace [var] patterns with ${n:var} placeholders
+ // Handle patterns like: [i], [j], [k], [n], [x], [y], [c], [args], etc.
+ snippet = snippet.replace(/\[([a-zA-Z_][a-zA-Z0-9_]*(?:\+\d+)?)\]/g, (_, varName) => {
+ hasOperands = true;
+ return `\${${placeholderIndex++}:${varName}}`;
+ });
+
+ return { snippet, hasOperands };
+}
+
+// Interface for Fift module (matches @fift exports)
+interface FiftModule {
+ interpret(
+ fileProvider: { fileExists(name: string): boolean; readFile(name: string): ArrayBuffer },
+ code: string,
+ includeStdlib: boolean
+ ): { success: boolean; stdout: string; stderr?: string };
+}
+
+const emptyFileProvider = {
+ fileExists: () => false,
+ readFile: () => { throw new Error('No files'); }
+};
+
+/**
+ * Load Fift words dynamically from the interpreter
+ */
+export function loadFiftWords(fiftModule: FiftModule, includeStdlib: boolean): void {
+ const targetSet = includeStdlib ? fiftWordsWithStdlib : fiftWordsWithoutStdlib;
+ const isLoaded = includeStdlib ? fiftWordsWithStdlibLoaded : fiftWordsWithoutStdlibLoaded;
+
+ if (isLoaded) return;
+
+ try {
+ const result = fiftModule.interpret(emptyFileProvider, 'words', includeStdlib);
+ if (result.success && result.stdout) {
+ const words = result.stdout.trim().split(/\s+/).filter(w => w.length > 0);
+ targetSet.clear();
+ for (const word of words) {
+ targetSet.add(word);
+ }
+ if (includeStdlib) {
+ fiftWordsWithStdlibLoaded = true;
+ } else {
+ fiftWordsWithoutStdlibLoaded = true;
+ }
+ console.log(`Loaded ${targetSet.size} Fift words from interpreter (stdlib=${includeStdlib})`);
+ }
+ } catch (e) {
+ console.error('Failed to load Fift words:', e);
+ }
+}
+
+/**
+ * Set the current includeStdlib preference for completions
+ */
+export function setIncludeStdlib(includeStdlib: boolean): void {
+ currentIncludeStdlib = includeStdlib;
+}
+
+function initOpcodes() {
+ if (opcodeMap.size > 0) return;
+
+ // Process aliases
+ for (const alias of (cp0Data as any).aliases || []) {
+ const fiftNames = (alias.doc_fift || alias.mnemonic || '').split('\n');
+ for (const fiftSyntax of fiftNames) {
+ const trimmedSyntax = fiftSyntax.trim();
+ if (!trimmedSyntax) continue;
+
+ // Extract the opcode name (last word without brackets)
+ const cleanName = trimmedSyntax.replace(/\[.*?\]/g, '').replace(/\s+/g, ' ').trim();
+ const parts = cleanName.split(' ');
+ const key = parts[parts.length - 1].toUpperCase();
+
+ const { snippet, hasOperands } = createSnippet(trimmedSyntax);
+
+ opcodeMap.set(key, {
+ mnemonic: alias.mnemonic,
+ fift: alias.doc_fift || alias.mnemonic,
+ stack: alias.doc_stack || '',
+ description: stripHtml(alias.description || ''),
+ isAlias: true,
+ aliasOf: alias.alias_of,
+ snippet,
+ hasOperands,
+ });
+ }
+ }
+
+ // Process instructions
+ for (const instr of (cp0Data as any).instructions || []) {
+ const doc = instr.doc || {};
+ const fiftNames = (doc.fift || instr.mnemonic || '').split('\n');
+
+ for (const fiftSyntax of fiftNames) {
+ const trimmedSyntax = fiftSyntax.trim();
+ if (!trimmedSyntax) continue;
+
+ // Extract the opcode name (last word without brackets)
+ const cleanName = trimmedSyntax.replace(/\[.*?\]/g, '').replace(/\s+/g, ' ').trim();
+ const parts = cleanName.split(' ');
+ const key = parts[parts.length - 1].toUpperCase();
+
+ if (opcodeMap.has(key)) continue; // Don't override aliases
+
+ const { snippet, hasOperands } = createSnippet(trimmedSyntax);
+
+ opcodeMap.set(key, {
+ mnemonic: instr.mnemonic,
+ fift: doc.fift || instr.mnemonic,
+ stack: doc.stack || '',
+ description: stripHtml(doc.description || ''),
+ category: doc.category,
+ gas: doc.gas,
+ opcode: doc.opcode,
+ snippet,
+ hasOperands,
+ });
+ }
+ }
+}
+
+export function createCompletionProvider(): languages.CompletionItemProvider {
+ return {
+ triggerCharacters: [],
+ provideCompletionItems(model, position) {
+ initOpcodes();
+
+ const word = model.getWordUntilPosition(position);
+ const range = {
+ startLineNumber: position.lineNumber,
+ endLineNumber: position.lineNumber,
+ startColumn: word.startColumn,
+ endColumn: word.endColumn,
+ };
+
+ const suggestions: languages.CompletionItem[] = [];
+
+ // Add TVM opcodes
+ for (const [name, info] of opcodeMap) {
+ let detail = '';
+ if (info.stack) {
+ detail = info.stack;
+ }
+
+ let documentation = '';
+ if (info.fift && info.hasOperands) {
+ documentation += `**Syntax:** \`${info.fift}\`\n\n`;
+ }
+ if (info.description) {
+ documentation += info.description;
+ }
+ if (info.gas) {
+ documentation += `\n\n**Gas:** ${info.gas}`;
+ }
+ if (info.isAlias && info.aliasOf) {
+ documentation += `\n\n**Alias of:** ${info.aliasOf}`;
+ }
+ if (info.category) {
+ documentation += `\n\n**Category:** ${info.category.replace(/_/g, ' ')}`;
+ }
+
+ // Use snippet if the opcode has operands
+ const useSnippet = info.hasOperands && info.snippet;
+
+ suggestions.push({
+ label: {
+ label: name,
+ detail: info.hasOperands ? ` ${info.fift.split('\n')[0]}` : undefined,
+ description: 'TVM',
+ },
+ kind: useSnippet ? languages.CompletionItemKind.Snippet : languages.CompletionItemKind.Keyword,
+ detail,
+ documentation: {
+ value: documentation,
+ },
+ insertText: useSnippet ? info.snippet! : name,
+ insertTextRules: useSnippet ? 4 : undefined, // InsertAsSnippet
+ range,
+ });
+ }
+
+ // Add Fift built-in words (respecting current stdlib setting)
+ const fiftWordSet = currentIncludeStdlib ? fiftWordsWithStdlib : fiftWordsWithoutStdlib;
+ for (const word of fiftWordSet) {
+ suggestions.push({
+ label: {
+ label: word,
+ description: 'Fift',
+ },
+ kind: languages.CompletionItemKind.Function,
+ insertText: word,
+ range,
+ });
+ }
+
+ return { suggestions };
+ },
+ };
+}
+
+export function createHoverProvider(): languages.HoverProvider {
+ return {
+ provideHover(model, position) {
+ initOpcodes();
+
+ const word = model.getWordAtPosition(position);
+ if (!word) return null;
+
+ const info = opcodeMap.get(word.word.toUpperCase());
+ if (!info) return null;
+
+ const contents: { value: string }[] = [];
+
+ // Main title with stack effect
+ let header = `**${word.word.toUpperCase()}**`;
+ if (info.stack) {
+ header += ` \`${info.stack}\``;
+ }
+ contents.push({ value: header });
+
+ // Syntax with operands
+ if (info.hasOperands && info.fift) {
+ contents.push({ value: `Syntax: \`${info.fift.split('\n')[0]}\`` });
+ }
+
+ // Description
+ if (info.description) {
+ contents.push({ value: info.description });
+ }
+
+ // Additional info
+ const details: string[] = [];
+ if (info.gas) {
+ details.push(`**Gas:** ${info.gas}`);
+ }
+ if (info.opcode) {
+ details.push(`**Opcode:** \`${info.opcode}\``);
+ }
+ if (info.category) {
+ details.push(`**Category:** ${info.category.replace(/_/g, ' ')}`);
+ }
+ if (info.isAlias && info.aliasOf) {
+ details.push(`**Alias of:** ${info.aliasOf}`);
+ }
+
+ if (details.length > 0) {
+ contents.push({ value: details.join(' | ') });
+ }
+
+ return {
+ range: {
+ startLineNumber: position.lineNumber,
+ endLineNumber: position.lineNumber,
+ startColumn: word.startColumn,
+ endColumn: word.endColumn,
+ },
+ contents,
+ };
+ },
+ };
+}
diff --git a/src/providers/useFift.ts b/src/providers/useFift.ts
index 4a14f71..827829a 100644
--- a/src/providers/useFift.ts
+++ b/src/providers/useFift.ts
@@ -1,17 +1,35 @@
-import { shallowRef } from 'vue';
+import { shallowRef, watch } from 'vue';
import init, * as wasm from '@fift';
+import { loadFiftWords, setIncludeStdlib } from '../monaco/opcodes';
+import type { Store } from '../store';
let startedLoading = false;
let fiftModule = shallowRef();
+let storeWatcherSetup = false;
-export function useFift() {
+export function useFift(store?: Store) {
if (!startedLoading) {
startedLoading = true;
init().then(() => {
fiftModule.value = wasm;
+ // Load Fift words for autocompletion (for both stdlib settings)
+ loadFiftWords(wasm, true);
+ loadFiftWords(wasm, false);
});
}
+ // Set up watcher for includeStdlib changes (only once)
+ if (store && !storeWatcherSetup) {
+ storeWatcherSetup = true;
+ watch(
+ () => store.state.includeStdlib,
+ (includeStdlib) => {
+ setIncludeStdlib(includeStdlib);
+ },
+ { immediate: true }
+ );
+ }
+
return {
fiftModule
};
From 4119997f634101f00171c29ce059f5c02aa180cb Mon Sep 17 00:00:00 2001
From: pavelkhachatrian
Date: Fri, 16 Jan 2026 15:45:18 +0100
Subject: [PATCH 2/2] Add script to update TVM opcodes
---
package.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/package.json b/package.json
index 52f63fc..79ab75e 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"dev": "vite",
"wasm": "wasm-pack build fift-wasm --release --target web",
"build": "vue-tsc --noEmit && vite build",
+ "update-opcodes": "wget -O cp0.json https://raw.githubusercontent.com/ton-org/docs/refs/heads/main/resources/tvm/cp0.txt",
"preview": "vite preview"
},
"dependencies": {