diff --git a/package.json b/package.json index 9025152..1d4158e 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,16 @@ "@types/jest": "^27.4.0", "jest": "^27.4.7", "release-it": "^15.5.1", - "ton": "^12.3.3", + "ton": "^13.2.0", "ton-compiler": "^1.0.0", + "ton-core": "^0.36.1", + "ton-crypto": "^3.2.0", "ts-jest": "^27.1.3", "tsc": "^2.0.3", "typescript": "^4.5.5" }, "peerDependencies": { - "ton": "*" + "ton-core": ">=0.27.0" }, "release-it": { "git": { diff --git a/src/__snapshots__/EQBRrTk63wHpvreMs7_cDKWh6zrYmQcSBOjKz1i6GcbRTLZX.boc b/src/__snapshots__/EQBRrTk63wHpvreMs7_cDKWh6zrYmQcSBOjKz1i6GcbRTLZX.boc new file mode 100644 index 0000000..c600835 Binary files /dev/null and b/src/__snapshots__/EQBRrTk63wHpvreMs7_cDKWh6zrYmQcSBOjKz1i6GcbRTLZX.boc differ diff --git a/src/__snapshots__/EQBmG4YwsdGsUHG46rL-_GtGxsUrdmn-8Tau1DKkzQMNsGaW.boc b/src/__snapshots__/EQBmG4YwsdGsUHG46rL-_GtGxsUrdmn-8Tau1DKkzQMNsGaW.boc new file mode 100644 index 0000000..8ee4ce2 Binary files /dev/null and b/src/__snapshots__/EQBmG4YwsdGsUHG46rL-_GtGxsUrdmn-8Tau1DKkzQMNsGaW.boc differ diff --git a/src/__snapshots__/Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF.boc b/src/__snapshots__/Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF.boc new file mode 100644 index 0000000..d47e09d Binary files /dev/null and b/src/__snapshots__/Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF.boc differ diff --git a/src/__snapshots__/Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn.boc b/src/__snapshots__/Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn.boc new file mode 100644 index 0000000..32c2f56 Binary files /dev/null and b/src/__snapshots__/Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn.boc differ diff --git a/src/__snapshots__/disassembler.spec.ts.snap b/src/__snapshots__/disassembler.spec.ts.snap new file mode 100644 index 0000000..bc311c1 --- /dev/null +++ b/src/__snapshots__/disassembler.spec.ts.snap @@ -0,0 +1,7819 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`disassembler should disassemble config 1`] = ` +"SETCP0 +(:methods + recv_internal: + s0 s1 XCHG + CTOS + 4 LDU + LDMSGADDR + s0 POP + s0 PUSH + REWRITESTDADDR + s0 s1 XCHG + INC + s0 s3 XCHG + 1 PUSHINT + AND + s1 s3 XCHG + OR + s3 PUSH + SEMPTY + OR + <{ + 4 BLKDROP + }> PUSHCONT + IFJMP + s0 s2 XCHG + 32 LDU + 64 LDU + s2 PUSH + 1314280276 PUSHINT + EQUAL + <{ + s2 POP + s4 POP + LDREF + ENDS + 1 PUSHINT + CONFIGOPTPARAM + s0 PUSH + ISNULL + <{ + s0 POP + -1 PUSHINT + }> PUSHCONT + <{ + CTOS + 256 PLDU + }> PUSHCONT + IFELSE + s0 s2 XCHG + 0 PUSHINT + s0 s3 XCHG + EQUAL + <{ + s1 POP + s0 PUSH + 7 CALLDICT + s1 PUSH + NOW + GREATER + s0 s2 XCHG + GREATER + AND + s0 s1 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + <{ + 36 PUSHINT + s0 s1 XCHG + 1 CALLDICT + s0 s1 XCHG + 4000730955 PUSHINT + 64 PUSHINT + 8 CALLDICT + }> PUSHCONT + IFJMP + s0 POP + s0 s1 XCHG + 4000730991 PUSHINT + 64 PUSHINT + 8 CALLDICT + }> PUSHCONT + IFJMP + s3 POP + s1 PUSH + 1851150418 PUSHINT + EQUAL + <{ + s1 POP + s0 s3 XCHG + <{ + s0 s1 XCHG + 32 LDU + LDREF + 1 LDI + s0 POP + s2 PUSH + 30 RSHIFT + <{ + s0 s2 XCHG + NOW + SUB + s0 s2 XCHG + }> PUSHCONT + IF + s1 PUSH + <{ + CTOS + 8 LDI + s0 s1 XCHG + -13 EQINT + 44 THROWIFNOT + 32 LDI + LDDICT + 1 LDI + s0 s1 XCHG + <{ + 256 LDU + }> PUSHCONT + <{ + -1 PUSHINT + s0 s1 XCHG + }> PUSHCONT + IFELSE + ENDS + }> CALLREF + s0 PUSH + -1 GTINT + <{ + s2 PUSH + CONFIGOPTPARAM + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + <{ + HASHCU + }> PUSHCONT + IFELSE + s1 PUSH + NEQ + <{ + s0 POP + -3798229846 PUSHINT + }> PUSHCONT + IF + }> PUSHCONT + <{ + -7 PUSHINT + CONFIGOPTPARAM + s3 s-1 PUXC + 32 PUSHINT + DICTIGET + NULLSWAPIFNOT + s1 POP + <{ + s0 POP + -3444600428 PUSHINT + }> PUSHCONT + IF + }> PUSHCONT + IFELSE + s1 PUSH + CDEPTH + 8 PUSHPOW2 + GEQ + <{ + s0 POP + -3261162582 PUSHINT + }> PUSHCONT + IF + s0 PUSH + -1 LESSINT + <{ + 6 1 BLKDROP2 + }> PUSHCONT + IFJMP + s3 PUSH + <{ + s2 POP + }> PUSHCONT + <{ + -6 PUSHINT + CONFIGOPTPARAM + s1 s3 XCHG + 32 PUSHINT + DICTIGET + NULLSWAPIFNOT + s1 POP + <{ + -3279055188 PUSHINT + s2 POP + }> PUSHCONT + IF + }> PUSHCONT + IFELSE + s1 PUSH + -1 LESSINT + <{ + s1 s5 XCHG + 5 BLKDROP + }> PUSHCONT + IFJMP + s1 POP + s1 PUSH + 11 PUSHINT + CONFIGOPTPARAM + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + s4 POP + s4 POP + s5 POP + s8 s-1 PUXC + LESS + <{ + 9 BLKDROP + -3313004649 PUSHINT + }> PUSHCONT + IFJMP + s7 s3 XCHG2 + MIN + s0 s3 XCHG + 10 PUSHPOW2 + CDATASIZE + s2 POP + 10 PUSHPOW2 + ADD + s1 s7 XCHG + MUL + s0 s6 XCHG + 2 ADDCONST + s1 s2 XCHG + MUL + s1 s5 XCHG + ADD + s0 s1 PUSH2 + MUL + s0 s2 XCHG + NOW + ADD + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + s8 PUSH + HASHCU + s0 s1 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + s8 POP + s9 POP + s9 POP + s0 s5 XCHG + <{ + 8 LDI + s0 s1 XCHG + -50 EQINT + 44 THROWIFNOT + 32 LDU + LDREF + 1 LDI + LDDICT + 64 LDI + 256 LDU + }> CALLREF + s4 s12 PUXC + NEQ + <{ + 15 BLKDROP + -3279055189 PUSHINT + }> PUSHCONT + IFJMP + s5 s8 PUSH2 + GEQ + <{ + 15 BLKDROP + -3245109829 PUSHINT + }> PUSHCONT + IFJMP + s8 s5 PUXC + SUB + 14 PUSHPOW2 + ADD + s1 s9 XCHG + MUL + s13 s13 XCPU + SUB + 30 PUSHPOW2 + LESS + <{ + 13 BLKDROP + -4032919844 PUSHINT + }> PUSHCONT + IFJMP + s5 s6 XCHG + s0 s1 s4 XCHG3 + s7 s7 XCHG2 + s0 s3 XCHG + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s0 s4 XCHG2 + STSLICER + s0 s4 s5 XCHG3 + 8 PUSHPOW2 + DICTUSETB + s1 s3 XCHG + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + }> IFJMPREF + s0 POP + s6 POP + s10 s6 XCPU + SUB + 30 PUSHPOW2 + LESS + <{ + 10 BLKDROP + -4032919844 PUSHINT + }> PUSHCONT + IFJMP + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s0 POP + 3 PUSHINT + RSHIFT 2 QOUT + 0 PUSHINT + PUSHNULL + s0 s3 XCHG + HASHCU + s5 s7 XCHG + s4 s11 XCHG + s1 s10 XCHG + s3 s3 s0 XCHG3 + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s1 s7 XCHG + 8 STU + s1 s4 XCHG + 16 STU + s0 s1 s6 XCHG3 + 8 PUSHPOW2 + DICTUSETB + s1 s2 XCHG + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + }> CALLREF + 64 PUSHINT + s1 PUSH + NEGATE + s2 PUSH + -1 GTINT + <{ + 2DROP + 4 PUSHINT + RAWRESERVE + 3998634066 PUSHINT + 7 PUSHPOW2 + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s2 s3 XCHG + 8 CALLDICT + }> IFJMPREF + s4 POP + s0 PUSH + 1450144869 PUSHINT + EQUAL + <{ + s0 POP + 9 PUSHPOW2 + LDSLICEX + s0 PUSH + 32 LDU + 16 LDU + 256 LDU + ENDS + s0 s2 XCHG + 1450144837 PUSHINT + EQUAL + 37 THROWIFNOT + s0 PUSH + <{ + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s2 POP + ROTREV + 16 PUSHINT + DICTUGET + NULLSWAPIFNOT + s0 POP + s0 s1 XCHG + }> CALLREF + s0 POP + 8 LDU + 32 PUSHINT + NOT + s1 s2 XCHG + AND + 83 EQINT + 41 THROWIFNOT + 32 LDU + s0 s1 XCHG + 2390828938 PUSHINT + EQUAL + 41 THROWIFNOT + 256 LDU + 64 LDU + s0 POP + s4 s5 s5 XCHG3 + CHKSIGNS + 34 THROWIFNOT + s0 s2 XCHG + <{ + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + s6 s1 s3 XCHG3 + s5 s4 XCHG2 + <{ + s2 s3 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + 4 BLKDROP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFNOTJMP + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s0 POP + s0 s1 XCHG + HASHCU + s0 s2 XCHG + <{ + 8 LDI + s0 s1 XCHG + -50 EQINT + 44 THROWIFNOT + 32 LDU + LDREF + 1 LDI + LDDICT + 64 LDI + 256 LDU + }> CALLREF + s6 PUSH + NOW + LEQ + <{ + 11 BLKDROP + s0 s1 XCHG + 8 PUSHPOW2 + DICTUDEL + s0 POP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFJMP + s1 s8 PUSH2 + NEQ + <{ + s1 POP + s2 POP + s2 PUSH + <{ + 11 PUSHINT + CONFIGOPTPARAM + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + s4 s7 XCHG + 7 BLKDROP + s0 s2 XCHG + 8 LDU + 8 LDU + 8 LDU + s0 POP + s0 s3 XCHG + -1 GTINT + s1 s3 XCHG + SUB + s0 s3 PUXC + GREATER + <{ + 3 BLKDROP + PUSHNULL + }> PUSHCONT + IFJMP + DEC + s0 PUSH + 0 LESSINT + <{ + 3 BLKDROP + PUSHNULL + }> PUSHCONT + IFJMP + NEWC + 8 STU + 8 STU + 8 STU + ENDC + CTOS + }> CALLREF + PUSHNULL + s0 s5 XCHG + 3 PUSHINT + RSHIFT 2 QOUT + s1 s5 XCHG + }> PUSHCONT + <{ + s7 POP + s7 POP + }> PUSHCONT + IFELSE + s5 PUSH + ISNULL + <{ + 9 BLKDROP + s0 s1 XCHG + 8 PUSHPOW2 + DICTUDEL + s0 POP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFJMP + s8 s1 PUSH2 + 16 PUSHINT + DICTUGET + NULLSWAPIFNOT + s1 POP + <{ + 10 BLKDROP + PUSHNULL + -2 PUSHINT + }> PUSHCONT + IFJMP + NOW + NEWC + 32 STU + s9 s2 XCHG2 + 16 PUSHINT + DICTUSETB + s7 PUSH + s8 s7 XCHG2 + SUB + s0 s6 PUXC + XOR + -1 GTINT + <{ + 3 4 BLKSWAP + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s0 s1 XCHG + STSLICER + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + PUSHNULL + 2 PUSHINT + }> PUSHCONT + IFJMP + s0 PUSH + 11 PUSHINT + CONFIGOPTPARAM + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + s5 s7 XCHG + 7 BLKDROP + s0 s4 XCHG + 8 LDU + 8 LDU + 8 LDU + s0 POP + s0 s1 XCHG + INC + s0 s6 PUXC + GEQ + <{ + 2DROP + s5 s6 XCHG2 + 5 BLKDROP + s2 s3 XCHG2 + 8 PUSHPOW2 + DICTUDEL + s0 POP + 6 PUSHINT + ROT + SUB + s1 s2 XCHG + }> PUSHCONT + IFJMP + s4 s5 XCHG + s3 s4 XCHG + s2 s3 XCHG + s8 s7 s6 XCHG3 + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s1 s2 XCHG + 8 STU + s1 s2 XCHG + 8 STU + 8 STU + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + PUSHNULL + 2 PUSHINT + }> CALLREF + 3 5 4 PUSH3 + s5 PUSH + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + s1 PUSH + ISNULL + <{ + 5 1 BLKDROP2 + }> PUSHCONT + <{ + 6 PUSHINT + s1 PUSH + SUB + s4 s4 s0 XCHG3 + <{ + s0 s1 XCHG + <{ + CTOS + 8 LDI + s0 s1 XCHG + -13 EQINT + 44 THROWIFNOT + 32 LDI + LDDICT + 1 LDI + s0 s1 XCHG + <{ + 256 LDU + }> PUSHCONT + <{ + -1 PUSHINT + s0 s1 XCHG + }> PUSHCONT + IFELSE + ENDS + }> CALLREF + s2 s4 PUSH2 + 32 PUSHINT + DICTIGETOPTREF + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + <{ + HASHCU + }> PUSHCONT + IFELSE + s1 PUSH + NEQ + s0 s1 XCHG + -1 GTINT + AND + <{ + 3 BLKDROP + 0 PUSHINT + PUSHNULL + }> PUSHCONT + IFJMP + -7 PUSHINT + s4 PUSH + 32 PUSHINT + DICTIGETOPTREF + s2 s-1 PUXC + 32 PUSHINT + DICTIGET + NULLSWAPIFNOT + s1 POP + s1 PUSH + ISNULL + AND + <{ + 3 BLKDROP + 0 PUSHINT + PUSHNULL + }> PUSHCONT + IFJMP + -6 PUSHINT + s4 PUSH + 32 PUSHINT + DICTIGETOPTREF + s2 s-1 PUXC + 32 PUSHINT + DICTIGET + NULLSWAPIFNOT + s1 POP + s0 s3 XCHG2 + LESS + <{ + 2DROP + 0 PUSHINT + PUSHNULL + }> PUSHCONT + IFJMP + 1 -1 2 PU2XC + 32 PUSHINT + DICTISETREF + ROTREV + }> CALLREF + 2 6 5 PUSH3 + s6 PUSH + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + s1 PUSH + <{ + COMMIT + s2 s3 XCHG + s2 s5 XCHG + <{ + s1 PUSH + -999 PUSHINT + EQUAL + <{ + 2 1 BLKDROP2 + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + <{ + CTOS + 256 PLDU + }> PUSHCONT + IFELSE + }> PUSHCONT + IFJMP + s0 PUSH + ISNULL + <{ + 2DROP + }> PUSHCONT + IFJMP + s1 PUSH + -1000 PUSHINT + EQUAL + <{ + s1 POP + CTOS + LDREF + s1 PUSH + SETCODE + c3 PUSH + s0 s2 XCHG + CTOS + BLESS + c3 POP + s0 s1 XCHG + 1666 CALL + 0 THROW + }> PUSHCONT + IFJMP + s0 s1 XCHG + -1001 PUSHINT + EQUAL + <{ + CTOS + 11 CALLDICT + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + }> CALLREF + s4 s0 s3 XCHG3 + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + }> PUSHCONT + <{ + s4 s6 XCHG + 6 BLKDROP + }> PUSHCONT + IFELSE + }> PUSHCONT + IFELSE + }> CALLREF + 3597947456 PUSHINT + ADD + s1 s2 XCHG + 64 PUSHINT + 8 CALLDICT + }> PUSHCONT + IFJMP + 3 1 BLKDROP2 + s0 PUSH + 0 EQINT + s0 s1 XCHG + 31 PUSHPOW2 + AND + OR + 37 THROWIFNOT + + 1: + c4 PUSH + CTOS + LDREF + s3 s3 XCHG2 + 32 PUSHINT + DICTISETREF + NEWC + STREF + s0 s1 XCHG + STSLICER + ENDC + c4 POP + + 7: + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 9 THROWIFNOT + 32 LDU + 32 LDU + 16 LDU + 16 LDU + s0 POP + s0 PUSH + 0 GTINT + 9 THROWIFNOT + GEQ + 9 THROWIFNOT + + 8: + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s5 XCHG2 + STSLICER + s1 s4 XCHG + 111 STU + 32 STU + 64 STU + ENDC + s0 s1 XCHG + SENDRAWMSG + + 11: + 1 PUSHINT + CONFIGOPTPARAM + CTOS + 256 PLDU + NOW + 1313042276 PUSHINT + 0 PUSHINT + 50431 PUSHINT + NEWC + 17 STU + s1 s4 XCHG + 256 STU + 30 PUSHPOW2 + STGRAMS + s1 s3 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s0 s1 XCHG + STSLICER + ENDC + 0 PUSHINT + SENDRAWMSG + + 1666: + 2DROP + + 75077: + c4 PUSH + CTOS + 0 PLDREFIDX + 11 PUSHINT + s0 s1 XCHG + 32 PUSHINT + DICTIGETOPTREF + s1 s4 XCHG + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + 4 4 BLKDROP2 + s5 s3 PUXC + LESS + <{ + 6 BLKDROP + -1 PUSHINT + }> PUSHCONT + IFJMP + s4 s4 XCHG2 + MIN + s0 s2 XCHG + 10 PUSHPOW2 + ADD + s1 s3 XCHG + MUL + s0 s3 XCHG + 2 ADDCONST + s1 s2 XCHG + MUL + s1 s2 XCHG + ADD + s0 s1 XCHG + MUL + + seqno: + c4 PUSH + CTOS + 32 PLDU + + 94347: + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + 3 1 BLKDROP2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + s0 POP + PUSHNULL + }> PUSHCONT + IFNOTJMP + <{ + <{ + 8 LDI + s0 s1 XCHG + -50 EQINT + 44 THROWIFNOT + 32 LDU + LDREF + 1 LDI + LDDICT + 64 LDI + 256 LDU + }> CALLREF + PUSHNULL + 32 PUSHPOW2 + <{ + s5 PUSH + 16 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s2 POP + s1 PUSH + <{ + s0 s2 PUXC + PAIR + s0 s2 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s4 POP + 8 LDU + 8 LDU + 8 LDU + ENDS + s0 s7 XCHG + <{ + CTOS + 8 LDI + s0 s1 XCHG + -13 EQINT + 44 THROWIFNOT + 32 LDI + LDDICT + 1 LDI + s0 s1 XCHG + <{ + 256 LDU + }> PUSHCONT + <{ + -1 PUSHINT + s0 s1 XCHG + }> PUSHCONT + IFELSE + ENDS + }> CALLREF + TRIPLE + s0 s6 XCHG + s0 s7 XCHG + s3 s5 XCHG + s3 s4 XCHG + 9 TUPLE + }> CALLREF + + 107394: + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + 3 1 BLKDROP2 + 256 PUSHPOW2DEC + PUSHNULL + <{ + s1 s2 XCPU + 8 PUSHPOW2 + DICTUGETPREV + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + <{ + <{ + 8 LDI + s0 s1 XCHG + -50 EQINT + 44 THROWIFNOT + 32 LDU + LDREF + 1 LDI + LDDICT + 64 LDI + 256 LDU + }> CALLREF + PUSHNULL + 32 PUSHPOW2 + <{ + s5 PUSH + 16 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s2 POP + s1 PUSH + <{ + s0 s2 PUXC + PAIR + s0 s2 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s4 POP + 8 LDU + 8 LDU + 8 LDU + ENDS + s0 s7 XCHG + <{ + CTOS + 8 LDI + s0 s1 XCHG + -13 EQINT + 44 THROWIFNOT + 32 LDI + LDDICT + 1 LDI + s0 s1 XCHG + <{ + 256 LDU + }> PUSHCONT + <{ + -1 PUSHINT + s0 s1 XCHG + }> PUSHCONT + IFELSE + ENDS + }> CALLREF + TRIPLE + s0 s6 XCHG + s0 s7 XCHG + s3 s5 XCHG + s3 s4 XCHG + 9 TUPLE + }> CALLREF + s1 s-1 PUXC + PAIR + s0 s3 XCHG2 + PAIR + s0 s2 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + s1 s2 XCHG + }> PUSHCONT + UNTIL + 2 1 BLKDROP2 + + run_ticktock: + s0 POP + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + 32 PUSHINT + 36 PUSHINT + s5 s1 PUSH2 + DICTIGETOPTREF + 0 PUSHINT + s1 PUSH + ISNULL + <{ + 2 1 BLKDROP2 + }> PUSHCONT + <{ + s1 PUSH + CTOS + s0 PUSH + SBITS + 39 GTINT + <{ + 8 LDU + 32 PLDU + NOW + LEQ + s0 s1 XCHG + 18 EQINT + AND + <{ + s0 POP + 34 PUSHINT + ROT + s6 s6 XCPU + DICTISETGETOPTREF + 5 1 0 PUXCPU + DICTISETGETOPTREF + s0 POP + 36 PUSHINT + s0 s1 s5 XCHG3 + DICTIDEL + s0 POP + s0 s3 XCHG + -1 PUSHINT + }> PUSHCONT + <{ + 2 1 BLKDROP2 + }> PUSHCONT + IFELSE + }> PUSHCONT + <{ + s1 s3 XCHG + 3 BLKDROP + }> PUSHCONT + IFELSE + }> PUSHCONT + IFELSE + <{ + <{ + RANDU256 + s1 PUSH + 8 PUSHPOW2 + DICTUGETNEXTEQ + NULLSWAPIFNOT2 + <{ + 2DROP + }> PUSHCONT + IFNOTJMP + s0 s1 PUXC + <{ + s1 POP + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s0 POP + s0 s1 XCHG + HASHCU + s2 PUSH + <{ + 8 LDI + s0 s1 XCHG + -50 EQINT + 44 THROWIFNOT + 32 LDU + LDREF + 1 LDI + LDDICT + 64 LDI + 256 LDU + }> CALLREF + s3 POP + s5 PUSH + NOW + LEQ + <{ + 9 BLKDROP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFJMP + s6 PUSH + EQUAL + <{ + 7 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + s7 POP + 0 6 6 XC2PU + <{ + 11 PUSHINT + CONFIGOPTPARAM + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + s4 s7 XCHG + 7 BLKDROP + s0 s2 XCHG + 8 LDU + 8 LDU + 8 LDU + s0 POP + s0 s3 XCHG + -1 GTINT + s1 s3 XCHG + SUB + s0 s3 PUXC + GREATER + <{ + 3 BLKDROP + PUSHNULL + }> PUSHCONT + IFJMP + DEC + s0 PUSH + 0 LESSINT + <{ + 3 BLKDROP + PUSHNULL + }> PUSHCONT + IFJMP + NEWC + 8 STU + 8 STU + 8 STU + ENDC + CTOS + }> CALLREF + PUSHNULL + s0 s5 XCHG + 3 PUSHINT + RSHIFT 2 QOUT + s1 PUSH + ISNULL + <{ + 7 BLKDROP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFJMP + s3 s5 XCHG + s2 s4 XCHG + s3 s6 XCHG + s6 s0 s6 XCHG3 + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s0 s1 XCHG + STSLICER + ENDC + CTOS + -1 PUSHINT + }> CALLREF + <{ + s0 PUSH + ISNULL + <{ + s0 POP + s0 s1 XCHG + 8 PUSHPOW2 + DICTUDEL + s0 POP + }> PUSHCONT + <{ + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSET + }> PUSHCONT + IFELSE + }> PUSHCONT + <{ + 2DROP + }> PUSHCONT + IFELSE + }> CALLREF + }> PUSHCONT + IFNOT + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + + recv_external: + 9 PUSHPOW2 + LDSLICEX + s0 PUSH + 32 LDU + 32 LDU + 32 LDU + s0 s1 XCHG + NOW + LESS + 35 THROWIF + s0 PUSH + SDEPTH + 7 PUSHPOW2 + GREATER + 39 THROWIF + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + s5 s2 XCPU + EQUAL + 33 THROWIFNOT + s5 PUSH + 1450144869 PUSHINT + EQUAL + <{ + s5 POP + s0 s2 XCHG + 16 LDU + 256 LDU + ENDS + s1 PUSH + <{ + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s2 POP + ROTREV + 16 PUSHINT + DICTUGET + NULLSWAPIFNOT + s0 POP + s0 s1 XCHG + }> CALLREF + s0 POP + 8 LDU + 32 PUSHINT + NOT + s1 s2 XCHG + AND + 83 EQINT + 41 THROWIFNOT + 32 LDU + s0 s1 XCHG + 2390828938 PUSHINT + EQUAL + 41 THROWIFNOT + 256 LDU + 64 LDU + s0 POP + s8 s9 s9 XCHG3 + CHKSIGNS + 34 THROWIFNOT + ACCEPT + s0 s2 XCHG + INC + RSHIFT 32 REM + 2 3 BLKSWAP + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + COMMIT + ROT + <{ + c4 PUSH + CTOS + LDREF + 32 LDU + 256 LDU + LDDICT + ENDS + s6 s1 s3 XCHG3 + s5 s4 XCHG2 + <{ + s2 s3 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + 4 BLKDROP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFNOTJMP + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s0 POP + s0 s1 XCHG + HASHCU + s0 s2 XCHG + <{ + 8 LDI + s0 s1 XCHG + -50 EQINT + 44 THROWIFNOT + 32 LDU + LDREF + 1 LDI + LDDICT + 64 LDI + 256 LDU + }> CALLREF + s6 PUSH + NOW + LEQ + <{ + 11 BLKDROP + s0 s1 XCHG + 8 PUSHPOW2 + DICTUDEL + s0 POP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFJMP + s1 s8 PUSH2 + NEQ + <{ + s1 POP + s2 POP + s2 PUSH + <{ + 11 PUSHINT + CONFIGOPTPARAM + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + s4 s7 XCHG + 7 BLKDROP + s0 s2 XCHG + 8 LDU + 8 LDU + 8 LDU + s0 POP + s0 s3 XCHG + -1 GTINT + s1 s3 XCHG + SUB + s0 s3 PUXC + GREATER + <{ + 3 BLKDROP + PUSHNULL + }> PUSHCONT + IFJMP + DEC + s0 PUSH + 0 LESSINT + <{ + 3 BLKDROP + PUSHNULL + }> PUSHCONT + IFJMP + NEWC + 8 STU + 8 STU + 8 STU + ENDC + CTOS + }> CALLREF + PUSHNULL + s0 s5 XCHG + 3 PUSHINT + RSHIFT 2 QOUT + s1 s5 XCHG + }> PUSHCONT + <{ + s7 POP + s7 POP + }> PUSHCONT + IFELSE + s5 PUSH + ISNULL + <{ + 9 BLKDROP + s0 s1 XCHG + 8 PUSHPOW2 + DICTUDEL + s0 POP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFJMP + s8 s1 PUSH2 + 16 PUSHINT + DICTUGET + NULLSWAPIFNOT + s1 POP + <{ + 10 BLKDROP + PUSHNULL + -2 PUSHINT + }> PUSHCONT + IFJMP + NOW + NEWC + 32 STU + s9 s2 XCHG2 + 16 PUSHINT + DICTUSETB + s7 PUSH + s8 s7 XCHG2 + SUB + s0 s6 PUXC + XOR + -1 GTINT + <{ + 3 4 BLKSWAP + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s0 s1 XCHG + STSLICER + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + PUSHNULL + 2 PUSHINT + }> PUSHCONT + IFJMP + s0 PUSH + 11 PUSHINT + CONFIGOPTPARAM + <{ + CTOS + 8 LDU + s0 s1 XCHG + 145 PUSHINT + EQUAL + 44 THROWIFNOT + s0 s1 XCHG + <{ + LDREF + s1 POP + }> PUSHCONT + IF + 0 PLDREFIDX + CTOS + 8 LDU + s0 s1 XCHG + 54 EQINT + 44 THROWIFNOT + 8 LDU + 8 LDU + 8 LDU + 8 LDU + 32 LDU + 32 LDU + 32 LDU + 32 LDU + ENDS + }> CALLREF + s5 s7 XCHG + 7 BLKDROP + s0 s4 XCHG + 8 LDU + 8 LDU + 8 LDU + s0 POP + s0 s1 XCHG + INC + s0 s6 PUXC + GEQ + <{ + 2DROP + s5 s6 XCHG2 + 5 BLKDROP + s2 s3 XCHG2 + 8 PUSHPOW2 + DICTUDEL + s0 POP + 6 PUSHINT + ROT + SUB + s1 s2 XCHG + }> PUSHCONT + IFJMP + s4 s5 XCHG + s3 s4 XCHG + s2 s3 XCHG + s8 s7 s6 XCHG3 + -50 PUSHINT + NEWC + 8 STI + s1 s6 XCHG + 32 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + 1 STI + STDICT + 64 STI + 256 STU + s1 s2 XCHG + 8 STU + s1 s2 XCHG + 8 STU + 8 STU + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + PUSHNULL + 2 PUSHINT + }> CALLREF + 3 5 4 PUSH3 + s5 PUSH + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + s1 PUSH + ISNULL + <{ + 5 1 BLKDROP2 + }> PUSHCONT + <{ + 6 PUSHINT + s1 PUSH + SUB + s4 s4 s0 XCHG3 + <{ + s0 s1 XCHG + <{ + CTOS + 8 LDI + s0 s1 XCHG + -13 EQINT + 44 THROWIFNOT + 32 LDI + LDDICT + 1 LDI + s0 s1 XCHG + <{ + 256 LDU + }> PUSHCONT + <{ + -1 PUSHINT + s0 s1 XCHG + }> PUSHCONT + IFELSE + ENDS + }> CALLREF + s2 s4 PUSH2 + 32 PUSHINT + DICTIGETOPTREF + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + <{ + HASHCU + }> PUSHCONT + IFELSE + s1 PUSH + NEQ + s0 s1 XCHG + -1 GTINT + AND + <{ + 3 BLKDROP + 0 PUSHINT + PUSHNULL + }> PUSHCONT + IFJMP + -7 PUSHINT + s4 PUSH + 32 PUSHINT + DICTIGETOPTREF + s2 s-1 PUXC + 32 PUSHINT + DICTIGET + NULLSWAPIFNOT + s1 POP + s1 PUSH + ISNULL + AND + <{ + 3 BLKDROP + 0 PUSHINT + PUSHNULL + }> PUSHCONT + IFJMP + -6 PUSHINT + s4 PUSH + 32 PUSHINT + DICTIGETOPTREF + s2 s-1 PUXC + 32 PUSHINT + DICTIGET + NULLSWAPIFNOT + s1 POP + s0 s3 XCHG2 + LESS + <{ + 2DROP + 0 PUSHINT + PUSHNULL + }> PUSHCONT + IFJMP + 1 -1 2 PU2XC + 32 PUSHINT + DICTISETREF + ROTREV + }> CALLREF + 2 6 5 PUSH3 + s6 PUSH + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + s1 PUSH + <{ + COMMIT + s2 s3 XCHG + s2 s5 XCHG + <{ + s1 PUSH + -999 PUSHINT + EQUAL + <{ + 2 1 BLKDROP2 + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + <{ + CTOS + 256 PLDU + }> PUSHCONT + IFELSE + }> PUSHCONT + IFJMP + s0 PUSH + ISNULL + <{ + 2DROP + }> PUSHCONT + IFJMP + s1 PUSH + -1000 PUSHINT + EQUAL + <{ + s1 POP + CTOS + LDREF + s1 PUSH + SETCODE + c3 PUSH + s0 s2 XCHG + CTOS + BLESS + c3 POP + s0 s1 XCHG + 1666 CALL + 0 THROW + }> PUSHCONT + IFJMP + s0 s1 XCHG + -1001 PUSHINT + EQUAL + <{ + CTOS + 11 CALLDICT + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + }> CALLREF + s4 s0 s3 XCHG3 + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + }> PUSHCONT + <{ + s4 s6 XCHG + 6 BLKDROP + }> PUSHCONT + IFELSE + }> PUSHCONT + IFELSE + }> CALLREF + s0 POP + }> IFJMPREF + s0 s6 XCHG + HASHSU + 0 7 6 XC2PU + CHKSIGNU + 34 THROWIFNOT + ACCEPT + s0 s5 XCHG + INC + RSHIFT 32 REM + 5 0 4 PUSH3 + s5 PUSH + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP + COMMIT + s3 s5 XCHG + s4 s5 s5 XCHG3 + <{ + s1 PUSH + 1130778657 PUSHINT + EQUAL + <{ + s1 POP + 32 LDI + LDREF + ENDS + s0 s1 s3 XCHG3 + 32 PUSHINT + DICTISETREF + s0 s1 XCHG + }> PUSHCONT + IFJMP + s1 PUSH + 1313042276 PUSHINT + EQUAL + <{ + s1 POP + LDREF + s1 PUSH + SETCODE + c3 PUSH + s0 s2 XCHG + CTOS + BLESS + c3 POP + s0 s1 XCHG + 1666 CALL + 0 THROW + }> PUSHCONT + IFJMP + s1 PUSH + 1348619041 PUSHINT + EQUAL + <{ + 2 1 BLKDROP2 + 256 LDU + ENDS + }> PUSHCONT + IFJMP + s1 PUSH + 1313074949 PUSHINT + EQUAL + <{ + s1 POP + 11 CALLDICT + }> PUSHCONT + IFJMP + s0 POP + 32 THROWIF + }> CALLREF + s3 s0 s3 XCHG3 + s0 s3 XCHG + NEWC + STREF + s1 s2 XCHG + 32 STU + 256 STU + STDICT + ENDC + c4 POP +) 19 DICTPUSHCONST +DICTIGETJMPZ +11 THROWARG +" +`; + +exports[`disassembler should disassemble contract 1`] = ` +"SETCP0 +(:methods + recv_internal: + s0 PUSH + SEMPTY + <{ + 4 BLKDROP + }> PUSHCONT + IFJMP + s0 s1 XCHG + CTOS + 4 LDU + s0 s1 XCHG + 1 PUSHINT + AND + <{ + 4 BLKDROP + }> PUSHCONT + IFJMP + c4 PUSH + CTOS + LDMSGADDR + LDREF + LDREF + LDREF + s0 POP + s0 s4 XCHG + LDMSGADDR + LDMSGADDR + s1 POP + LDGRAMS + s1 POP + 1 PUSHINT + SDSKIPFIRST + LDGRAMS + s1 POP + LDGRAMS + s0 POP + 0 PUSHINT + s2 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + s0 s6 XCHG + 32 LDU + 64 LDU + s2 PUSH + 1117846339 PUSHINT + EQUAL + <{ + s3 s5 XCHG + 5 BLKDROP + 1 2 BLKDROP2 + s1 PUSH + SDEQ + 82 THROWIFNOT + ROTREV + GREATER + 83 THROWIFNOT + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + ROT + STSLICER + s0 s2 XCHG + 100000 PUSHINT + SUB + s1 s2 XCHG + STGRAMS + 107 STU + ENDC + 0 PUSHINT + SENDRAWMSG + }> PUSHCONT + IFJMP + s2 PUSH + 4138374967 PUSHINT + EQUAL + <{ + s2 POP + s3 POP + s3 POP + 4 4 BLKDROP2 + s0 s3 XCHG2 + SDEQ + 82 THROWIFNOT + LDMSGADDR + s0 POP + 1117846339 PUSHINT + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + s2 PUSH + STGRAMS + s1 s2 XCHG + 107 STU + 32 STU + 64 STU + ENDC + 64 PUSHINT + SENDRAWMSG + }> PUSHCONT + IFJMP + s2 PUSH + 4181439551 PUSHINT + EQUAL + <{ + s2 POP + s5 POP + s6 POP + s7 POP + s5 PUSH + 20000000 PUSHINT + GREATER + 83 THROWIFNOT + s0 s4 XCHG + LDMSGADDR + LDREF + s0 POP + CTOS + LDGRAMS + LDMSGADDR + LDGRAMS + LDMSGADDR + s0 POP + 0 2 1 PU2XC + s7 s10 s9 XCHG3 + 0 PUSHINT + NEWC + 2 STU + s1 s2 XCHG + STDICT + s4 PUSH + HASHSU + s4 PUSH + HASHSU + GREATER + <{ + 4 1 BLKSWAP + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + <{ + s4 s4 s4 XCHG3 + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + IFELSE + 0 PUSHINT + s0 s1 XCHG + 1 STU + ENDC + 0 PUSHINT + s1 PUSH + HASHCU + 4 PUSHINT + NEWC + 3 STU + s1 s2 XCHG + 8 STU + 256 STU + ENDC + CTOS + s1 POP + s0 s8 XCHG2 + SDEQ + 82 THROWIFNOT + 0 PUSHINT + 64 PUSHINT + s7 PUSH + 5 PUSHINT + DIV QOUT + 2 LSHIFT + s9 PUSH + 0 GTINT + s7 PUSH + 0 GTINT + AND + <{ + s8 POP + }> PUSHCONT + <{ + 2 1 BLKDROP2 + s0 s6 XCHG + 20000000 PUSHINT + SUB + 1 RSHIFT + 0 PUSHINT + s0 s7 XCHG + 1 RSHIFT + s0 s7 XCHG + }> IFREFELSE + s8 PUSH + 0 GTINT + <{ + 0 PUSHINT + s0 PUSH + 260734629 PUSHINT + NEWC + 32 STU + s7 s-1 PUXC + 64 STU + s0 s11 XCHG2 + STGRAMS + s4 PUSH + STSLICER + s4 PUSH + STSLICER + s1 s10 XCHG + 1 STU + s8 PUSH + STGRAMS + s1 s9 XCHG + 2 STU + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s8 XCHG2 + STSLICER + s2 PUSH + STGRAMS + s1 s7 XCHG + 107 STU + s1 s6 XCHG + STREF + ENDC + s7 PUSH + 2 ADDCONST + SENDRAWMSG + s4 s6 XCHG + }> PUSHCONT + <{ + s6 POP + s7 POP + }> PUSHCONT + IFELSE + s3 PUSH + 0 GTINT + <{ + 7 BLKDROP + }> PUSHCONT + <{ + 0 PUSHINT + s0 PUSH + 260734629 PUSHINT + NEWC + 32 STU + s1 s5 XCHG + 64 STU + s0 s5 XCHG2 + STGRAMS + s1 PUSH + STSLICER + s0 s1 XCHG + STSLICER + s1 s2 XCHG + 1 STU + s0 s4 XCHG2 + STGRAMS + 2 STU + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s4 XCHG2 + STSLICER + s0 s4 XCHG2 + STGRAMS + s1 s2 XCHG + 107 STU + s1 s2 XCHG + STREF + ENDC + s0 s1 XCHG + 2 ADDCONST + SENDRAWMSG + }> IFREFELSE + }> IFJMPREF + s2 PUSH + 894706661 PUSHINT + EQUAL + <{ + s2 POP + s3 POP + s3 POP + 4 4 BLKDROP2 + s0 s3 XCHG2 + SDEQ + 82 THROWIFNOT + LDMSGADDR + 10 LDU + 10 LDU + LDMSGADDR + 10 LDU + LDMSGADDR + s0 POP + 533429565 PUSHINT + NEWC + 32 STU + s1 s7 XCHG + 64 STU + s1 s4 XCHG + 10 STU + s1 s2 XCHG + 10 STU + s0 s1 XCHG + STSLICER + 10 STU + ROT + STSLICER + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s2 XCHG + 108 STU + STREF + ENDC + 64 PUSHINT + SENDRAWMSG + }> IFJMPREF + s2 PUSH + 533429565 PUSHINT + EQUAL + <{ + s2 POP + s3 POP + s3 POP + 4 4 BLKDROP2 + s0 s3 XCHG2 + SDEQ + 82 THROWIFNOT + LDMSGADDR + s0 POP + 533429565 PUSHINT + NEWC + 32 STU + s1 s2 XCHG + 64 STU + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s2 XCHG + 108 STU + STREF + ENDC + 64 PUSHINT + SENDRAWMSG + }> IFJMPREF + s2 PUSH + 3899322356 PUSHINT + EQUAL + <{ + s8 POP + 2DROP + s6 POP + s6 POP + s4 s4 XCHG2 + SDEQ + 82 THROWIFNOT + s0 s1 XCHG + LDMSGADDR + s0 POP + s3 s3 XCHG2 + NEWC + s0 s4 XCHG2 + STSLICER + s1 s2 XCHG + STREF + STREF + STREF + ENDC + c4 POP + }> PUSHCONT + IFJMP + s2 PUSH + 2032889151 PUSHINT + EQUAL + <{ + s4 POP + 2DROP + s2 POP + 3 3 BLKDROP2 + s3 POP + s0 s1 XCHG + SDEQ + 82 THROWIFNOT + LDREF + LDREF + s0 POP + SETCODE + c4 POP + }> PUSHCONT + IFJMP + s6 POP + s1 PUSH + 3520829083 PUSHINT + EQUAL + <{ + s1 POP + s6 POP + s7 s6 XCHG2 + SUB + 2 PUSHINT + RAWRESERVE + s0 s1 XCHG + LDMSGADDR + LDMSGADDR + s0 POP + 2DUP + SDEQ + 86 THROWIF + 0 PUSHINT + s2 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + 0 PUSHINT + s1 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + s4 s3 XCHG2 + s1 s6 XCHG + 0 PUSHINT + NEWC + 2 STU + s1 s2 XCHG + STDICT + s4 PUSH + HASHSU + s4 PUSH + HASHSU + GREATER + <{ + 4 1 BLKSWAP + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + <{ + s4 s4 s4 XCHG3 + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + IFELSE + 0 PUSHINT + s0 s1 XCHG + 1 STU + ENDC + 0 PUSHINT + s1 PUSH + HASHCU + 4 PUSHINT + NEWC + 3 STU + s1 s2 XCHG + 8 STU + 256 STU + ENDC + CTOS + s1 POP + 3520829083 PUSHINT + NEWC + 32 STU + s1 s3 XCHG + 64 STU + ROT + STSLICER + ENDC + <{ + 1 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s2 XCHG + 107 STU + STREF + ENDC + 66 PUSHINT + SENDRAWMSG + }> CALLREF + }> IFJMPREF + s9 POP + s0 s4 XCHG + LDGRAMS + LDMSGADDR + LDREF + s0 POP + CTOS + 32 LDU + s7 PUSH + 1935855772 PUSHINT + EQUAL + s2 PUSH + 630424929 PUSHINT + EQUAL + AND + <{ + s1 POP + s6 POP + s0 s5 XCHG + LDMSGADDR + LDGRAMS + LDMSGADDR + 2 LDU + s6 s4 PUSH2 + SDEQ + 86 THROWIF + s5 PUSH + 0 GTINT + 87 THROWIFNOT + 0 PUSHINT + s5 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + 0 PUSHINT + s3 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + s0 s11 XCHG + 2 LSHIFT + s0 s12 XCHG2 + GREATER + <{ + 3 BLKDROP + s5 POP + s5 POP + 2DROP + s3 POP + 0 PUSHINT + s0 s0 PUSH2 + 260734629 PUSHINT + NEWC + 32 STU + s1 s7 XCHG + 64 STU + s0 s3 XCHG2 + STGRAMS + s0 s4 XCHG2 + STSLICER + s1 s4 XCHG + 2 STU + s1 s3 XCHG + 1 STU + s1 PUSH + STGRAMS + 2 STU + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s2 XCHG + 107 STU + STREF + ENDC + 64 PUSHINT + SENDRAWMSG + }> PUSHCONT + IFJMP + s7 POP + 2 0 3 XC2PU + s6 s5 s8 XCHG3 + 0 PUSHINT + NEWC + 2 STU + s1 s2 XCHG + STDICT + s4 PUSH + HASHSU + s4 PUSH + HASHSU + GREATER + <{ + 4 1 BLKSWAP + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + <{ + s4 s4 s4 XCHG3 + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + IFELSE + 0 PUSHINT + s0 s1 XCHG + 1 STU + ENDC + 0 PUSHINT + s1 PUSH + HASHCU + 4 PUSHINT + NEWC + 3 STU + s1 s2 XCHG + 8 STU + 256 STU + ENDC + CTOS + s1 POP + 630424929 PUSHINT + NEWC + 32 STU + s1 s8 XCHG + 64 STU + s0 s3 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + ROT + STGRAMS + s0 s1 XCHG + STGRAMS + s2 s-1 PUXC + 2 STU + s0 s2 XCHG + 1 EQINT + <{ + LDMSGADDR + s0 POP + NEWC + s0 s1 XCHG + STSLICER + ENDC + s0 s1 XCHG + STREF + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s2 XCHG + 107 STU + STREF + ENDC + 64 PUSHINT + SENDRAWMSG + }> IFJMPREF + s0 s7 XCHG + 1935855772 PUSHINT + EQUAL + s0 s1 XCHG + 4244235663 PUSHINT + EQUAL + AND + <{ + s0 s5 XCHG + LDMSGADDR + 256 LDU + s0 POP + s3 s1 PUSH2 + SDEQ + 86 THROWIF + s2 PUSH + 0 GTINT + 87 THROWIFNOT + 0 PUSHINT + s7 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + 0 PUSHINT + s2 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + s0 s8 XCHG + 6 MULCONST + s0 s9 XCHG2 + GREATER + <{ + s5 POP + s5 POP + 2DROP + s3 POP + 0 PUSHINT + s0 s0 PUSH2 + 260734629 PUSHINT + NEWC + 32 STU + s1 s7 XCHG + 64 STU + s0 s3 XCHG2 + STGRAMS + s0 s4 XCHG2 + STSLICER + s1 s4 XCHG + 2 STU + s1 s3 XCHG + 1 STU + s1 PUSH + STGRAMS + 2 STU + ENDC + 1 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s2 XCHG + 107 STU + STREF + ENDC + 64 PUSHINT + SENDRAWMSG + }> PUSHCONT + IFJMP + 1 0 2 PUXC2 + s8 PUSH + s5 s1 s3 XCHG3 + s0 s7 XCHG + 0 PUSHINT + NEWC + 2 STU + s1 s2 XCHG + STDICT + s4 PUSH + HASHSU + s4 PUSH + HASHSU + GREATER + <{ + 4 1 BLKSWAP + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + <{ + s4 s4 s4 XCHG3 + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + IFELSE + 0 PUSHINT + s0 s1 XCHG + 1 STU + ENDC + 0 PUSHINT + s1 PUSH + HASHCU + 4 PUSHINT + NEWC + 3 STU + s1 s2 XCHG + 8 STU + 256 STU + ENDC + CTOS + 7 PUSHINT + 24 PUSHINT + NEWC + 6 STU + ROT + STSLICER + 0 PUSHINT + STGRAMS + 108 STU + STREF + 4244235663 PUSHINT + NEWC + 32 STU + s1 s7 XCHG + 64 STU + ROT + STSLICER + s1 s3 XCHG + 256 STU + s0 s1 XCHG + HASHSU + s0 s3 XCHG + HASHSU + s1 s3 XCHG + GREATER + <{ + STGRAMS + 0 PUSHINT + STGRAMS + }> PUSHCONT + <{ + s0 s1 XCHG + 0 PUSHINT + STGRAMS + s0 s1 XCHG + STGRAMS + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + STREF + ENDC + 64 PUSHINT + SENDRAWMSG + }> IFJMPREF + 10 BLKDROP + 16 PUSHPOW2DEC + THROWANY + + 101789: + c4 PUSH + CTOS + LDMSGADDR + LDREF + LDREF + LDREF + s0 POP + s3 POP + s4 s3 PUSH2 + SDEQ + 86 THROWIF + 0 PUSHINT + s5 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + 0 PUSHINT + s4 PUSH + 85 PUSHINT + s0 s1 XCHG + REWRITESTDADDR + s0 POP + ROT + EQUAL + THROWANYIFNOT + ROT + 0 PUSHINT + NEWC + 2 STU + s1 s2 XCHG + STDICT + s4 PUSH + HASHSU + s4 PUSH + HASHSU + GREATER + <{ + 4 1 BLKSWAP + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + <{ + s4 s4 s4 XCHG3 + <{ + NEWC + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + PUSHSLICE + STSLICER + 0 PUSHINT + STGRAMS + 0 PUSHINT + STGRAMS + ENDC + 999 PUSHINT + 1000 PUSHINT + 998 PUSHINT + NEWC + MYADDR + STSLICER + 10 STU + 10 STU + 10 STU + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STSLICER + 0 PUSHINT + STGRAMS + s1 s3 XCHG + STREF + s1 s2 XCHG + STREF + STREF + ENDC + }> CALLREF + s0 s1 XCHG + STDICT + }> PUSHCONT + IFELSE + 0 PUSHINT + s0 s1 XCHG + 1 STU + ENDC + 0 PUSHINT + s1 PUSH + HASHCU + 4 PUSHINT + NEWC + 3 STU + s1 s2 XCHG + 8 STU + 256 STU + ENDC + CTOS + s1 POP +) 19 DICTPUSHCONST +DICTIGETJMPZ +11 THROWARG +" +`; + +exports[`disassembler should disassemble elector 1`] = ` +"SETCP0 +(:methods + recv_internal: + s0 s1 XCHG + CTOS + 4 LDU + s0 s1 XCHG + 1 PUSHINT + AND + <{ + 3 BLKDROP + }> PUSHCONT + IFJMP + LDMSGADDR + s0 POP + s1 PUSH + SEMPTY + <{ + s1 POP + s0 s1 XCHG + <{ + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s0 s7 XCHG + REWRITESTDADDR + s0 s1 XCHG + INC + OR + s1 PUSH + 0 EQINT + OR + <{ + s0 s5 XCHG + ADD + s3 s5 XCHG + 2 3 BLKSWAP + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + }> PUSHCONT + IFJMP + s0 s2 PUSH2 + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + s0 POP + s0 s5 XCHG + ADD + s0 s1 XCHG + }> PUSHCONT + <{ + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s0 s12 XCHG + ADD + 1 6 BLKSWAP + s0 s11 XCHG + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s1 s3 XCHG + 256 STU + STDICT + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + }> CALLREF + 0 5 2 XCPUXC + 32 PUSHINT + DICTUSETB + }> IFREFELSE + s3 s5 XCHG + s1 s4 s3 XCHG3 + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s0 s1 XCHG + 32 LDU + s1 PUSH + 0 EQINT + <{ + 2DROP + s0 s1 XCHG + <{ + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s0 s7 XCHG + REWRITESTDADDR + s0 s1 XCHG + INC + OR + s1 PUSH + 0 EQINT + OR + <{ + s0 s5 XCHG + ADD + s3 s5 XCHG + 2 3 BLKSWAP + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + }> PUSHCONT + IFJMP + s0 s2 PUSH2 + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + s0 POP + s0 s5 XCHG + ADD + s0 s1 XCHG + }> PUSHCONT + <{ + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s0 s12 XCHG + ADD + 1 6 BLKSWAP + s0 s11 XCHG + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s1 s3 XCHG + 256 STU + STDICT + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + }> CALLREF + 0 5 2 XCPUXC + 32 PUSHINT + DICTUSETB + }> IFREFELSE + s3 s5 XCHG + s1 s4 s3 XCHG3 + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + 64 LDU + s2 PUSH + 1316189259 PUSHINT + EQUAL + <{ + s2 POP + s2 s3 XCHG + <{ + s3 PUSH + REWRITESTDADDR + c4 PUSH + CTOS + LDDICT + s1 PUSH + ISNULL + s0 s4 XCHG + INC + s1 s4 XCHG + OR + <{ + s3 s5 XCHG + 5 BLKDROP + 0 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s0 s4 XCHG + 256 LDU + 32 LDU + 32 LDU + 256 LDU + LDREF + s0 s1 XCHG + CTOS + 9 PUSHPOW2 + PLDSLICEX + s0 s1 XCHG + ENDS + 1699500148 PUSHINT + NEWC + 32 STU + s4 s-1 PUXC + 32 STU + s3 s-1 PUXC + 32 STU + s6 s-1 PUXC + 256 STU + s2 s-1 PUXC + 256 STU + ENDC + CTOS + s1 s5 XCPU + CHKSIGNS + <{ + s6 s8 XCHG + 8 BLKDROP + 1 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFNOTJMP + s1 PUSH + 16 PUSHPOW2 + LESS + <{ + s6 s8 XCHG + 8 BLKDROP + 6 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s0 s7 XCHG + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + s1 POP + s0 s13 XCHG + 1000000000 PUSHINT + SUB + s0 PUSH + 12 LSHIFT + s3 PUSH + LESS + <{ + s11 s13 XCHG + 13 BLKDROP + 2 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s2 s2 XCPU + ADD + s7 s5 XCPU + NEQ + <{ + s10 s12 XCHG + 12 BLKDROP + 3 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s0 s12 XCHG + <{ + s9 s11 XCHG + 11 BLKDROP + 0 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s6 s11 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + s0 PUSH + <{ + s0 POP + LDGRAMS + ROTREV + ADD + s0 s1 XCHG + 64 LDU + s1 POP + 256 LDU + s0 POP + s8 s-1 PUXC + NEQ + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + <{ + s9 s11 XCHG + 11 BLKDROP + 4 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s0 s1 PUSH2 + LESS + <{ + s9 s11 XCHG + 11 BLKDROP + 5 PUSHINT + <{ + 4000269644 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + s0 PUSH + 44 THROWIFNOT + ACCEPT + NOW + NEWC + ROT + STGRAMS + 32 STU + s1 s4 XCHG + 32 STU + s1 s6 XCHG + 256 STU + s1 s8 XCHG + 256 STU + s0 s3 s8 XCHG3 + 8 PUSHPOW2 + DICTUSETB + s4 s5 XCHG + s1 s3 s0 XCHG3 + s1 s6 XCHG + 0 PUSHINT + 0 PUSHINT + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s0 s3 XCHG2 + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + 1 STI + 1 STI + ENDC + }> CALLREF + NEWC + STDICT + ROT + STSLICER + ENDC + c4 POP + s0 PUSH + <{ + 0 PUSHINT + <{ + 4084484172 PUSHINT + ROTREV + 1000000000 PUSHINT + 2 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> CALLREF + }> PUSHCONT + IFJMP + 2DROP + }> CALLREF + }> PUSHCONT + IFJMP + s2 PUSH + 1197831204 PUSHINT + EQUAL + <{ + s4 POP + s1 s3 XCHG + <{ + s1 POP + s1 PUSH + REWRITESTDADDR + s0 s1 XCHG + INC + <{ + s0 POP + 4294967294 PUSHINT + s0 s1 s3 XCHG3 + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> PUSHCONT + IFJMP + c4 PUSH + CTOS + LDDICT + LDDICT + s3 s3 XCHG2 + 8 PUSHPOW2 + DICTUDELGET + NULLSWAPIFNOT + <{ + 4 BLKDROP + 4294967294 PUSHINT + s0 s1 s3 XCHG3 + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> PUSHCONT + IFNOTJMP + s6 POP + s0 s5 XCHG + LDGRAMS + ENDS + s0 s1 XCHG + NEWC + STDICT + s1 s5 XCHG + STDICT + s0 s1 XCHG + STSLICER + ENDC + c4 POP + 4184830756 PUSHINT + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s4 XCHG2 + STSLICER + s0 s4 XCHG2 + STGRAMS + s1 s2 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + ENDC + 64 PUSHINT + SENDRAWMSG + }> CALLREF + }> PUSHCONT + IFJMP + s2 PUSH + 1313042276 PUSHINT + EQUAL + <{ + s4 POP + 2 3 3 PUXCPU + <{ + 0 PUSHINT + CONFIGOPTPARAM + s0 PUSH + ISNULL + <{ + 4 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + CTOS + 256 PLDU + s3 PUSH + REWRITESTDADDR + s0 s1 XCHG + INC + s0 s2 XCHG + NEQ + OR + <{ + 3 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + ACCEPT + s0 s1 XCHG + LDREF + s1 PUSH + SETCODE + s0 PUSH + SEMPTY + <{ + 4 BLKDROP + }> PUSHCONT + <{ + s0 s1 XCHG + CTOS + BLESS + c3 POP + s0 s1 XCHG + 1666 CALL + 0 THROW + }> PUSHCONT + IFELSE + -1 PUSHINT + }> CALLREF + <{ + 3460525924 PUSHINT + }> PUSHCONT + <{ + 32 PUSHPOW2DEC + }> PUSHCONT + IFELSE + s0 s3 s3 XCHG3 + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> PUSHCONT + IFJMP + s2 PUSH + 4000730955 PUSHINT + EQUAL + s3 PUSH + 4000730991 PUSHINT + EQUAL + s1 s-1 PUXC + OR + <{ + s3 POP + s4 POP + s3 s0 s0 XCHG3 + <{ + s2 POP + s0 s2 XCHG + REWRITESTDADDR + 0 PUSHINT + CONFIGOPTPARAM + CTOS + 256 PLDU + c4 PUSH + CTOS + LDDICT + s0 s4 XCHG + INC + 2SWAP + NEQ + OR + s1 PUSH + ISNULL + OR + <{ + 4 BLKDROP + }> PUSHCONT + IFJMP + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + 5 1 BLKDROP2 + s1 s4 PUXC + NEQ + s0 s4 XCHG + NOT + s1 s4 XCHG + OR + <{ + 3 BLKDROP + }> PUSHCONT + IFJMP + ACCEPT + s0 s1 XCHG + <{ + 2DROP + }> PUSHCONT + <{ + LDDICT + LDDICT + LDGRAMS + s3 s3 s4 XCHG3 + <{ + s0 s1 XCHG + 32 PUSHINT + DICTUDELGET + NULLSWAPIFNOT + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + IFNOTJMP + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s0 POP + 3 3 BLKDROP2 + s0 PUSH + 0 GTINT + <{ + s3 s4 XCHG + <{ + 0 PUSHINT + s0 s0 PUSH2 + -1 PUSHINT + <{ + s6 PUSH + 8 PUSHPOW2 + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + 256 LDU + 64 LDU + s1 POP + LDGRAMS + 1 LDI + ENDS + <{ + s1 POP + s3 s3 XCPU + ADD + }> PUSHCONT + <{ + 7 0 8 PUSH3 + MULDIV QOUT + s6 s6 XCPU + ADD + s1 s6 PUXC + ADD + s11 s11 s0 XCHG3 + <{ + s1 s2 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + ADD + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + NEWC + s0 s1 XCHG + STGRAMS + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + }> CALLREF + s0 s9 XCHG + s0 s3 XCHG + }> PUSHCONT + IFELSE + s5 s3 XCHG2 + ADD + s0 s4 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s5 POP + s0 s3 XCHG + EQUAL + s2 s1 PUSH2 + LEQ + AND + 59 THROWIFNOT + s1 s2 XCHG + ADD + s0 s1 XCHG + SUB + }> CALLREF + }> PUSHCONT + <{ + s0 POP + s2 s3 XCHG + <{ + 0 PUSHINT + s0 PUSH + -1 PUSHINT + <{ + s4 PUSH + 8 PUSHPOW2 + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + 256 LDU + 64 LDU + s1 POP + LDGRAMS + 1 LDI + ENDS + <{ + s1 POP + s3 s3 XCPU + ADD + }> PUSHCONT + <{ + 8 8 8 XC2PU + <{ + s1 s2 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + ADD + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + NEWC + s0 s1 XCHG + STGRAMS + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + }> CALLREF + s0 s7 XCHG + s0 s3 XCHG + }> PUSHCONT + IFELSE + s4 s3 XCHG2 + ADD + s0 s3 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s3 POP + s0 s1 XCHG + EQUAL + 59 THROWIFNOT + }> CALLREF + }> PUSHCONT + IFELSE + s1 s2 XCHG + }> CALLREF + 0 PUSHINT + NEWC + 1 STI + s1 s3 XCHG + STDICT + STDICT + ROTREV + ADD + STGRAMS + s0 s1 XCHG + STSLICER + ENDC + c4 POP + }> PUSHCONT + IFELSE + }> CALLREF + }> PUSHCONT + IFJMP + s0 POP + s2 PUSH + 1382499184 PUSHINT + EQUAL + <{ + 3 0 4 PUXC2 + 31 CALLDICT + 64 PUSHINT + s1 PUSH + NEGATE + s2 PUSH + -1 GTINT + <{ + 2DROP + 4 PUSHINT + RAWRESERVE + 0 PUSHINT + 7 PUSHPOW2 + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + 4066861904 PUSHINT + ADD + s0 s3 XCHG + s4 s4 s4 XCHG3 + 0 PUSHINT + s0 s1 XCHG + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> PUSHCONT + IFJMP + s4 POP + s1 PUSH + 1450460016 PUSHINT + EQUAL + <{ + s0 s3 XCHG + 9 PUSHPOW2 + LDSLICEX + s0 PUSH + 32 LDU + 16 LDU + 32 LDU + 256 LDU + ENDS + s0 s3 XCHG + 1450459984 PUSHINT + EQUAL + 37 THROWIFNOT + s1 PUSH + <{ + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s2 POP + ROTREV + 16 PUSHINT + DICTUGET + NULLSWAPIFNOT + s0 POP + s0 s1 XCHG + }> CALLREF + s0 POP + 8 LDU + 32 PUSHINT + NOT + s1 s2 XCHG + AND + 83 EQINT + 41 THROWIFNOT + 32 LDU + s0 s1 XCHG + 2390828938 PUSHINT + EQUAL + 41 THROWIFNOT + 256 LDU + 64 LDU + s0 POP + s5 s6 s6 XCHG3 + CHKSIGNS + 34 THROWIFNOT + 1 3 BLKSWAP + <{ + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s9 s3 PUSH2 + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + 11 BLKDROP + -2 PUSHINT + }> PUSHCONT + IFNOTJMP + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s15 s1 s3 XCHG3 + s14 s13 XCHG2 + <{ + s2 s3 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + 4 BLKDROP + PUSHNULL + -1 PUSHINT + }> PUSHCONT + IFNOTJMP + <{ + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + CTOS + 8 LDU + s0 s1 XCHG + 18 EQINT + 40 THROWIFNOT + 96 PUSHINT + SDSKIPFIRST + 64 LDU + LDDICT + ENDS + }> CALLREF + s0 POP + s0 s1 XCHG + HASHCU + s0 s2 XCHG + <{ + 8 LDU + s0 s1 XCHG + 45 EQINT + 9 THROWIFNOT + LDREF + LDDICT + 256 LDU + 64 LDI + ENDS + }> CALLREF + s1 s5 PUSH2 + NEQ + s1 PUSH + 0 LESSINT + s1 PUSH + AND + <{ + 10 BLKDROP + PUSHNULL + -3 PUSHINT + }> PUSHCONT + IFJMP + <{ + 3 BLKDROP + PUSHNULL + s0 s2 XCHG + 3 PUSHINT + LSHIFT 1 QOUT + s0 s2 XCHG + }> PUSHCONT + <{ + s4 POP + s4 POP + }> PUSHCONT + IFELSE + s5 s0 PUSH2 + 16 PUSHINT + DICTUGET + NULLSWAPIFNOT + s1 POP + <{ + 7 BLKDROP + PUSHNULL + 0 PUSHINT + }> PUSHCONT + IFJMP + NOW + NEWC + 32 STU + s0 s6 s6 XCHG3 + 16 PUSHINT + DICTUSETB + 0 0 3 XCPUXC + SUB + s3 s3 XCPU + XOR + s4 PUSH + s3 s3 XCHG2 + s0 s4 XCHG + <{ + 45 PUSHINT + NEWC + 8 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + STDICT + 256 STU + 64 STI + }> CALLREF + s0 s3 s4 XCHG3 + 8 PUSHPOW2 + DICTUSETB + s0 s1 XCHG + -1 GTINT + <{ + s1 POP + PUSHNULL + 1 PUSHINT + }> PUSHCONT + IFJMP + s0 s1 XCHG + 2 PUSHINT + }> CALLREF + s0 PUSH + 1 LESSINT + <{ + 15 1 BLKDROP2 + }> PUSHCONT + IFJMP + s1 PUSH + ISNULL + <{ + s1 POP + }> PUSHCONT + <{ + s10 s12 s12 XCHG3 + <{ + CTOS + <{ + 8 LDI + s0 s1 XCHG + -68 EQINT + 9 THROWIFNOT + 256 LDU + LDREF + 32 LDU + 8 LDU + 256 LDU + LDGRAMS + LDGRAMS + 32 LDU + ENDS + }> CALLREF + s4 POP + s4 POP + s4 POP + s4 s5 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + 6 BLKDROP + 0 PUSHINT + s0 PUSH + }> PUSHCONT + IFNOTJMP + 256 LDU + 64 LDU + LDGRAMS + 1 LDI + ENDS + s1 s5 PUXC + RSHIFT 32 QOUT + s1 s6 XCHG + ADD + s5 s-1 PUXC + MIN + s5 s5 XCPU + SUB + s0 s2 XCHG + NEWC + 256 STU + 64 STU + s0 s1 XCHG + STGRAMS + s1 s2 XCHG + 1 STI + s0 s4 s5 XCHG3 + 8 PUSHPOW2 + DICTUSETB + s3 PUSH + 3 RSHIFT + s0 s2 XCHG + 3 LSHIFT + s1 s2 XCHG + MIN + 4 2 2 XC2PU + <{ + s1 s2 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + ADD + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + NEWC + s0 s1 XCHG + STGRAMS + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + }> CALLREF + s2 s1 PUXC + SUB + s3 s0 s3 XCHG3 + }> CALLREF + s9 s9 XCHG2 + ADD + s14 s8 XCHG2 + SUB + s0 s13 XCHG + s9 s11 XCHG2 + }> PUSHCONT + IFELSE + s4 s6 XCHG + s3 s5 XCHG + s2 s4 XCHG + s3 s11 XCHG + s13 s12 s12 XCHG3 + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s1 s3 XCHG + 256 STU + STDICT + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + }> CALLREF + s8 s2 XCHG2 + 32 PUSHINT + DICTUSETB + 3 3 BLKSWAP + s6 s6 s0 XCHG3 + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + }> CALLREF + 3597947456 PUSHINT + ADD + s0 s3 s3 XCHG3 + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> IFJMPREF + s3 POP + s0 PUSH + 31 PUSHPOW2 + AND + <{ + 32 PUSHPOW2DEC + s0 s3 s3 XCHG3 + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + }> PUSHCONT + IFNOTJMP + 3 BLKDROP + + 13: + 15 PUSHINT + CONFIGOPTPARAM + CTOS + 32 LDI + 32 LDI + 32 LDI + 32 PLDI + + 31: + s0 s2 XCHG + REWRITESTDADDR + s0 s1 XCHG + INC + <{ + 3 BLKDROP + -1 PUSHINT + }> PUSHCONT + IFJMP + s1 PUSH + SDEPTH + 7 PUSHPOW2 + GEQ + <{ + 3 BLKDROP + -3 PUSHINT + }> PUSHCONT + IFJMP + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 s5 XCHG + 5 BLKDROP + s0 s2 XCHG + 32 LDU + s1 s3 PUSH2 + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + 6 BLKDROP + -2 PUSHINT + }> PUSHCONT + IFNOTJMP + s0 PUSH + 32 PLDU + NOW + SUB + s0 PUSH + 1 LESSINT + <{ + 7 BLKDROP + -4 PUSHINT + }> PUSHCONT + IFJMP + s2 PUSH + <{ + 8 LDI + s0 s1 XCHG + -68 EQINT + 9 THROWIFNOT + 256 LDU + LDREF + 32 LDU + 8 LDU + 256 LDU + LDGRAMS + LDGRAMS + 32 LDU + ENDS + }> CALLREF + 2 2 BLKDROP2 + s3 POP + NOW + <{ + 13 PUSHINT + CONFIGOPTPARAM + s0 PUSH + ISNULL + <{ + s0 POP + 36 PUSHPOW2 + 1 PUSHINT + 9 PUSHPOW2 + }> PUSHCONT + <{ + CTOS + 8 LDU + s0 s1 XCHG + 26 EQINT + 9 THROWIFNOT + LDGRAMS + LDGRAMS + LDGRAMS + ENDS + }> PUSHCONT + IFELSE + }> CALLREF + s0 s11 XCHG + 12 PUSHPOW2 + SDATASIZE + s2 POP + 10 PUSHPOW2 + ADD + ROT + MUL + s0 s1 XCHG + 2 ADDCONST + s0 s11 XCHG2 + MUL + s1 s10 XCHG + ADD + s0 s7 XCHG2 + MUL + s0 s8 XCHG2 + ADD + s0 PUSH + 30 PUSHPOW2 + ADD + s1 s12 XCHG + LESS + <{ + 11 BLKDROP + -5 PUSHINT + }> PUSHCONT + IFJMP + 4 0 3 XC2PU + 9 11 7 XCPU2 + s7 PUSH + <{ + -68 PUSHINT + NEWC + 8 STI + s1 s8 XCHG + 256 STU + s1 s6 XCHG + STREF + s1 s4 XCHG + 32 STU + s1 s2 XCHG + 8 STU + 256 STU + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + 32 STU + }> CALLREF + ENDC + s0 s2 XCHG + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s11 s3 XCPU + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + 14 BLKDROP + -6 PUSHINT + }> PUSHCONT + IFNOTJMP + 320 PUSHINT + SDSKIPFIRST + LDGRAMS + s0 POP + s0 s7 PUXC + RSHIFT 32 QOUT + s1 s9 XCHG + ADD + s0 s6 PUXC + GREATER + <{ + 12 BLKDROP + -7 PUSHINT + }> PUSHCONT + IFJMP + s5 s11 XCPU + LEQ + <{ + 11 BLKDROP + -8 PUSHINT + }> PUSHCONT + IFJMP + PUSHNULL + 0 PUSHINT + s0 s7 PUSH2 + 3 1 BLKSWAP + <{ + 45 PUSHINT + NEWC + 8 STU + s1 s4 XCHG + STREF + s1 s2 XCHG + STDICT + 256 STU + 64 STI + }> CALLREF + s0 s6 XCHG + HASHCU + s6 s0 s9 XCHG3 + 8 PUSHPOW2 + DICTUADDB + <{ + 10 BLKDROP + -9 PUSHINT + }> PUSHCONT + IFNOTJMP + s6 s5 s0 XCHG3 + s3 s7 XCHG + s2 s7 XCHG + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s1 s3 XCHG + 256 STU + STDICT + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + }> CALLREF + s0 s2 XCHG + 32 PUSHINT + DICTUSETB + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 POP + s4 s5 XCHG + s3 s4 XCHG + ROT + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + + 35: + 0 PUSHINT + + 37: + 16 PUSHINT + CONFIGOPTPARAM + CTOS + 16 LDU + 16 LDU + s1 POP + 16 LDU + ENDS + 1 PUSHINT + MAX + 0 PUSHINT + PUSHNULL + -1 PUSHINT + <{ + s9 PUSH + 8 PUSHPOW2 + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + LDGRAMS + 32 LDU + 32 LDU + 256 LDU + 256 LDU + ENDS + s0 s3 XCHG + NEGATE + s0 s4 XCHG + NEWC + 128 STU + s1 s4 XCHG + 32 STI + s4 s-1 PUXC + 256 STU + ENDC + CTOS + s1 s10 XCPU + MIN + NEWC + 32 STU + s1 s3 XCHG + 256 STU + 256 STU + s0 s1 s4 XCHG3 + 416 PUSHINT + DICTSETB + s0 s3 XCHG + INC + s3 s1 s3 XCHG3 + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s4 POP + ROT + MIN + s0 s1 PUSH2 + LESS + <{ + 7 BLKDROP + PUSHNULL + 0 PUSHINT + PUSHNULL + s1 s1 PUSH2 + }> PUSHCONT + IFJMP + PUSHNULL + PUSHREFCONT + UNTIL + s3 POP + s4 POP + DEC + 2DUP + <{ + 1 INDEX + }> PUSHCONT + REPEAT + 0 PUSHINT + s0 PUSH + PUSHREFCONT + UNTIL + s6 POP + s6 POP + 2DROP + s2 PUSH + s0 s3 XCHG + 416 PUSHINT + DICTREMMIN + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s1 XCHG + 128 LDU + s1 s9 XCPU + MIN + s0 s1 XCHG + 32 LDU + s1 POP + 256 PLDU + s0 s3 XCHG + 32 LDU + 256 LDU + s1 POP + 256 PLDU + s1 s3 s0 XCHG3 + s1 s4 XCHG + 4 TUPLE + s0 s5 XCHG2 + PAIR + s0 s4 XCHG + }> PUSHCONT + <{ + 2 1 BLKDROP2 + }> PUSHCONT + IFELSE + NOT + s1 s4 XCHG + + 38: + s0 s1 XCHG + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + s4 POP + NOW + s5 PUSH + LESS + <{ + 8 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + 0 PUSHINT + CONFIGOPTPARAM + ISNULL + <{ + 8 BLKDROP + 35 CALLDICT + }> PUSHCONT + IFJMP + 17 PUSHINT + CONFIGOPTPARAM + CTOS + LDGRAMS + LDGRAMS + LDGRAMS + 32 LDU + ENDS + s6 s1 PUSH2 + LESS + <{ + 12 BLKDROP + 35 CALLDICT + }> PUSHCONT + IFJMP + s0 s4 XCHG + <{ + 11 BLKDROP + 35 CALLDICT + }> PUSHCONT + IFJMP + s0 s6 XCHG + <{ + 10 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + s3 PUSH + s4 s9 XCHG + s3 s2 XCPU + s7 s7 XCHG2 + 37 CALLDICT + s0 PUSH + 0 EQINT + s0 PUSH + NOT + s11 PUSH + s0 s6 XCHG + s5 s11 XCHG + s4 s10 XCHG + s3 s9 XCHG + s13 s13 s13 XCHG3 + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s0 s3 XCHG2 + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + 1 STI + 1 STI + ENDC + }> CALLREF + s3 PUSH + <{ + s1 POP + 5 2 BLKDROP2 + NEWC + STDICT + STDICT + s0 s1 XCHG + STSLICER + ENDC + c4 POP + 35 CALLDICT + }> PUSHCONT + IFNOTJMP + 13 CALLDICT + s2 POP + NOW + s0 s1 XCHG + ADD + -60 ADDCONST + s9 PUSH + MAX + 16 PUSHINT + CONFIGOPTPARAM + CTOS + 16 PUSHINT + SDSKIPFIRST + 16 PLDU + s7 s-1 PUXC + MIN + s1 s3 PUSH2 + ADD + 18 PUSHINT + NEWC + 8 STU + s3 s-1 PUXC + 32 STU + 32 STU + s1 s8 XCHG + 16 STU + s1 s7 XCHG + 16 STU + s1 s10 XCHG + 64 STU + s1 s3 XCHG + STDICT + ENDC + 0 PUSHINT + CONFIGOPTPARAM + CTOS + 256 PLDU + s1 s8 PUSH2 + <{ + 1314280276 PUSHINT + 0 PUSHINT + 50431 PUSHINT + NEWC + 17 STU + s1 s5 XCHG + 256 STU + 30 PUSHPOW2 + STGRAMS + s1 s4 XCHG + 107 STU + s1 s3 XCHG + 32 STU + s1 s2 XCHG + 64 STU + STREF + ENDC + 1 PUSHINT + SENDRAWMSG + }> CALLREF + s0 s9 XCHG + LDDICT + s5 s3 XCHG2 + ADD + s8 PUSH + ADD + s0 s9 XCHG + HASHCU + s4 s9 XCHG + s3 s8 XCHG + s0 s6 s5 XCHG3 + 0 PUSHINT + PUSHNULL + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s1 s3 XCHG + 256 STU + STDICT + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + }> CALLREF + s0 s3 s5 XCHG3 + 32 PUSHINT + DICTUSETB + s0 s3 XCHG + NEWC + STDICT + s1 s2 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STSLICER + ENDC + c4 POP + -1 PUSHINT + + 39: + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + 34 PUSHINT + CONFIGOPTPARAM + HASHCU + s0 s1 PUSH2 + EQUAL + <{ + 7 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + s2 PUSH + <{ + s2 s4 PUSH2 + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + 32 LDU + s1 POP + s0 PUSH + 32 LDU + 256 LDU + s0 POP + s0 s4 XCHG2 + EQUAL + 57 THROWIFNOT + NOW + s0 s3 XCHG2 + ADD + NEWC + 32 STU + ROT + STSLICER + s0 s0 s4 XCHG3 + 32 PUSHINT + DICTUSETB + s0 s2 XCHG + }> PUSHCONT + <{ + s1 s3 XCHG + 3 BLKDROP + }> PUSHCONT + IFELSE + }> PUSHCONT + <{ + 2 1 BLKDROP2 + }> PUSHCONT + IFELSE + -1 PUSHINT + PUSHREFCONT + UNTIL + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + IF + s0 s1 XCHG + <{ + s3 PUSH + 32 PUSHINT + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + 64 LDU + 256 LDU + s1 s5 PUSH2 + EQUAL + <{ + s4 POP + s0 s3 XCHG + LDDICT + LDGRAMS + LDGRAMS + s8 PUSH + 3 RSHIFT + s9 s9 XCPU + SUB + s2 s9 XCHG2 + ADD + s0 s4 XCHG + NEWC + 64 STU + s1 s6 XCHG + 256 STU + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STGRAMS + ROT + STSLICER + 0 0 4 XCPUXC + 32 PUSHINT + DICTUSETB + s0 s3 XCHG + 0 PUSHINT + s0 s1 XCHG + }> PUSHCONT + <{ + 3 BLKDROP + }> PUSHCONT + IFELSE + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> CALLREF + -1 PUSHINT + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + + 41: + s0 s1 XCHG + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + 5 1 BLKDROP2 + <{ + 3 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFNOTJMP + s0 s2 XCHG + LDDICT + s3 s1 XCPU + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + 4 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFNOTJMP + 64 PUSHINT + SDSKIPFIRST + 256 PLDU + 34 PUSHINT + CONFIGOPTPARAM + s1 PUSH + <{ + s1 PUSH + ISNULL + <{ + 2DROP + 0 PUSHINT + }> PUSHCONT + <{ + s0 s1 XCHG + HASHCU + s0 s1 XCHG + EQUAL + }> PUSHCONT + IFELSE + }> CALLREF + 36 PUSHINT + CONFIGOPTPARAM + ROT + <{ + s1 PUSH + ISNULL + <{ + 2DROP + 0 PUSHINT + }> PUSHCONT + <{ + s0 s1 XCHG + HASHCU + s0 s1 XCHG + EQUAL + }> PUSHCONT + IFELSE + }> CALLREF + OR + <{ + 0 PUSHINT + NEWC + 1 STI + s1 s2 XCHG + STDICT + STDICT + s0 s1 XCHG + STSLICER + ENDC + c4 POP + 39 CALLDICT + s0 POP + -1 PUSHINT + }> PUSHCONT + IFJMP + 3 BLKDROP + 0 PUSHINT + + 42: + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + -1 PUSHINT + <{ + s4 PUSH + 32 PUSHINT + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + 32 LDU + s0 POP + NOW + LEQ + s1 s4 PUSH2 + NEQ + AND + <{ + s1 POP + 5 4 4 XC2PU + <{ + s0 s1 XCHG + 32 PUSHINT + DICTUDELGET + NULLSWAPIFNOT + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + IFNOTJMP + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s0 POP + 3 3 BLKDROP2 + s0 PUSH + 0 GTINT + <{ + s3 s4 XCHG + <{ + 0 PUSHINT + s0 s0 PUSH2 + -1 PUSHINT + <{ + s6 PUSH + 8 PUSHPOW2 + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + 256 LDU + 64 LDU + s1 POP + LDGRAMS + 1 LDI + ENDS + <{ + s1 POP + s3 s3 XCPU + ADD + }> PUSHCONT + <{ + 7 0 8 PUSH3 + MULDIV QOUT + s6 s6 XCPU + ADD + s1 s6 PUXC + ADD + s11 s11 s0 XCHG3 + <{ + s1 s2 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + ADD + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + NEWC + s0 s1 XCHG + STGRAMS + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + }> CALLREF + s0 s9 XCHG + s0 s3 XCHG + }> PUSHCONT + IFELSE + s5 s3 XCHG2 + ADD + s0 s4 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s5 POP + s0 s3 XCHG + EQUAL + s2 s1 PUSH2 + LEQ + AND + 59 THROWIFNOT + s1 s2 XCHG + ADD + s0 s1 XCHG + SUB + }> CALLREF + }> PUSHCONT + <{ + s0 POP + s2 s3 XCHG + <{ + 0 PUSHINT + s0 PUSH + -1 PUSHINT + <{ + s4 PUSH + 8 PUSHPOW2 + DICTUGETNEXT + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + 256 LDU + 64 LDU + s1 POP + LDGRAMS + 1 LDI + ENDS + <{ + s1 POP + s3 s3 XCPU + ADD + }> PUSHCONT + <{ + 8 8 8 XC2PU + <{ + s1 s2 PUSH2 + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + ADD + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + NEWC + s0 s1 XCHG + STGRAMS + s0 s2 XCHG + 8 PUSHPOW2 + DICTUSETB + }> CALLREF + s0 s7 XCHG + s0 s3 XCHG + }> PUSHCONT + IFELSE + s4 s3 XCHG2 + ADD + s0 s3 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s3 POP + s0 s1 XCHG + EQUAL + 59 THROWIFNOT + }> CALLREF + }> PUSHCONT + IFELSE + s1 s2 XCHG + }> CALLREF + s1 s4 XCHG + ADD + 6 1 3 PUSH3 + 3 5 8 PUSH3 + <{ + s0 s5 XCHG + NEWC + STDICT + s1 s4 XCHG + STDICT + s1 s2 XCHG + STDICT + s0 s1 XCHG + STGRAMS + 32 STU + 256 STU + ENDC + c4 POP + }> CALLREF + s0 s3 XCHG + s5 s4 XCHG2 + 0 PUSHINT + s0 s1 XCHG + }> PUSHCONT + IF + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + 6 1 BLKDROP2 + ISNULL + NOT + + 43: + s1 POP + 36 PUSHINT + CONFIGOPTPARAM + ISNULL + <{ + 2DROP + 0 PUSHINT + }> PUSHCONT + IFNOTJMP + 1 PUSHINT + CONFIGOPTPARAM + CTOS + 256 PLDU + MYADDR + REWRITESTDADDR + s0 s1 XCHG + INC + s0 s2 XCHG + NEQ + OR + <{ + 2DROP + 0 PUSHINT + }> PUSHCONT + IFJMP + 34 PUSHINT + CONFIGOPTPARAM + s0 PUSH + ISNULL + <{ + 3 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + 13 CALLDICT + s0 POP + s2 POP + s0 s2 XCHG + CTOS + 40 PUSHINT + SDSKIPFIRST + 32 PLDU + NOW + s1 s3 XCPU + SUB + 2DUP + LESS + <{ + 6 BLKDROP + 0 PUSHINT + }> PUSHCONT + IFJMP + 2DUP + SUB + 60 LESSINT + <{ + s1 POP + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE + 17 PUSHINT + CONFIGOPTPARAM + CTOS + LDGRAMS + s0 POP + s0 s3 XCHG + ADD + s0 s1 PUXC + SUB + 0 PUSHINT + PUSHNULL + s3 s4 XCHG + s2 s3 XCHG + 0 PUSHINT + 0 PUSHINT + <{ + s0 s6 XCHG + NEWC + 32 STU + s1 s5 XCHG + 32 STU + s0 s3 XCHG2 + STGRAMS + s0 s1 XCHG + STGRAMS + STDICT + 1 STI + 1 STI + ENDC + }> CALLREF + NEWC + STDICT + STDICT + s0 s1 XCHG + STSLICER + ENDC + c4 POP + -1 PUSHINT + + 1666: + s1 POP + 1313042276 PUSHINT + 3460525924 PUSHINT + ROTREV + 0 PUSHINT + 64 PUSHINT + <{ + 0 PUSHINT + 24 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + ROT + STGRAMS + s1 s5 XCHG + 107 STU + s1 s3 XCHG + 32 STU + 64 STU + s1 PUSH + -1 GTINT + <{ + 32 STU + }> PUSHCONT + <{ + s1 POP + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + SENDRAWMSG + }> CALLREF + + 70210: + <{ + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 s5 XCHG + 5 BLKDROP + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + s0 POP + PUSHNULL + }> PUSHCONT + IFNOTJMP + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + 6 1 BLKDROP2 + }> CALLREF + 256 PUSHPOW2DEC + PUSHNULL + <{ + s1 s2 XCPU + 8 PUSHPOW2 + DICTUGETPREV + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + <{ + <{ + 8 LDU + s0 s1 XCHG + 45 EQINT + 9 THROWIFNOT + LDREF + LDDICT + 256 LDU + 64 LDI + ENDS + }> CALLREF + PUSHNULL + 32 PUSHPOW2 + <{ + s4 PUSH + 16 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s2 POP + s1 PUSH + <{ + s0 s2 PUXC + PAIR + s0 s2 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s3 POP + s0 s3 XCHG + CTOS + <{ + 8 LDI + s0 s1 XCHG + -68 EQINT + 9 THROWIFNOT + 256 LDU + LDREF + 32 LDU + 8 LDU + 256 LDU + LDGRAMS + LDGRAMS + 32 LDU + ENDS + }> CALLREF + 8 TUPLE + s0 s3 XCHG + 4 TUPLE + }> CALLREF + s1 s-1 PUXC + PAIR + s0 s3 XCHG2 + PAIR + s0 s2 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + s1 s2 XCHG + }> PUSHCONT + UNTIL + 2 1 BLKDROP2 + + 74376: + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 s5 XCHG + 5 BLKDROP + 32 PUSHPOW2 + PUSHNULL + <{ + s1 s2 XCPU + 32 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + 4 BLKDROP + s3 PUSH + s3 s1 s3 XCHG3 + 4 TUPLE + s0 s3 XCHG2 + PAIR + s0 s2 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + s1 s2 XCHG + }> PUSHCONT + UNTIL + 2 1 BLKDROP2 + + 77853: + s0 s1 XCHG + <{ + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 s5 XCHG + 5 BLKDROP + 32 PUSHINT + DICTUGET + NULLSWAPIFNOT + <{ + s0 POP + PUSHNULL + }> PUSHCONT + IFNOTJMP + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + 6 1 BLKDROP2 + }> CALLREF + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + <{ + <{ + 8 LDU + s0 s1 XCHG + 45 EQINT + 9 THROWIFNOT + LDREF + LDDICT + 256 LDU + 64 LDI + ENDS + }> CALLREF + PUSHNULL + 32 PUSHPOW2 + <{ + s4 PUSH + 16 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s2 POP + s1 PUSH + <{ + s0 s2 PUXC + PAIR + s0 s2 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s3 POP + s0 s3 XCHG + CTOS + <{ + 8 LDI + s0 s1 XCHG + -68 EQINT + 9 THROWIFNOT + 256 LDU + LDREF + 32 LDU + 8 LDU + 256 LDU + LDGRAMS + LDGRAMS + 32 LDU + ENDS + }> CALLREF + 8 TUPLE + s0 s3 XCHG + 4 TUPLE + }> CALLREF + }> PUSHCONT + <{ + s0 POP + PUSHNULL + }> PUSHCONT + IFELSE + + 81558: + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 s5 XCHG + 5 BLKDROP + 32 PUSHPOW2 + PUSHNULL + <{ + s1 s2 XCPU + 32 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + <{ + 32 LDU + 32 LDU + 256 LDU + LDDICT + LDGRAMS + LDGRAMS + LDDICT + ENDS + }> CALLREF + s7 PUSH + 7 1 BLKSWAP + 8 TUPLE + s0 s3 XCHG2 + PAIR + s0 s2 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + s1 s2 XCHG + }> PUSHCONT + UNTIL + 2 1 BLKDROP2 + + 86500: + + 86535: + c4 PUSH + CTOS + PLDDICT + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + <{ + CTOS + 32 PLDU + }> PUSHCONT + IFELSE + + 86698: + c4 PUSH + CTOS + PLDDICT + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + 0 0 0 PUSH3 + PUSHNULL + s1 s1 PUSH2 + }> PUSHCONT + IFJMP + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + PUSHNULL + 256 PUSHPOW2DEC + <{ + s4 PUSH + 8 PUSHPOW2 + DICTUGETPREV + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + LDGRAMS + 32 LDU + s1 POP + 32 LDU + 256 LDU + 256 LDU + ENDS + 4 TUPLE + s1 s-1 PUXC + PAIR + s0 s3 XCHG2 + PAIR + s0 s2 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s3 POP + + 87852: + c4 PUSH + CTOS + PLDDICT + s0 PUSH + ISNULL + <{ + 2DROP + 0 PUSHINT + }> PUSHCONT + IFJMP + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + s2 s6 XCHG + 6 BLKDROP + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + }> PUSHCONT + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + IFELSE + + 97951: + <{ + 13 PUSHINT + CONFIGOPTPARAM + s0 PUSH + ISNULL + <{ + s0 POP + 36 PUSHPOW2 + 1 PUSHINT + 9 PUSHPOW2 + }> PUSHCONT + <{ + CTOS + 8 LDU + s0 s1 XCHG + 26 EQINT + 9 THROWIFNOT + LDGRAMS + LDGRAMS + LDGRAMS + ENDS + }> PUSHCONT + IFELSE + }> CALLREF + s0 s5 XCHG + 10 PUSHPOW2 + ADD + s0 s1 XCHG + MUL + s0 s3 XCHG + 2 ADDCONST + s0 s4 XCHG2 + MUL + s1 s2 XCHG + ADD + s0 s1 XCHG + MUL + s0 s1 XCHG + ADD + 30 PUSHPOW2 + ADD + + 104565: + <{ + c4 PUSH + CTOS + LDDICT + LDDICT + LDDICT + LDGRAMS + 32 LDU + 256 LDU + ENDS + }> CALLREF + s3 s5 XCHG + 5 BLKDROP + 32 PUSHPOW2 + PUSHNULL + <{ + s1 s2 XCPU + 32 PUSHINT + DICTUGETPREV + NULLSWAPIFNOT2 + s2 POP + s1 PUSH + <{ + s0 s2 PUXC + PAIR + s0 s2 XCHG + }> PUSHCONT + IF + s0 s1 XCHG + NOT + s1 s2 XCHG + }> PUSHCONT + UNTIL + 2 1 BLKDROP2 + + 123541: + c4 PUSH + CTOS + PLDDICT + s0 PUSH + ISNULL + <{ + s0 POP + PUSHNULL + }> PUSHCONT + IFJMP + <{ + CTOS + 32 LDU + 32 LDU + LDGRAMS + LDGRAMS + LDDICT + 1 LDI + 1 LDI + ENDS + }> CALLREF + s2 s6 XCHG + 6 BLKDROP + PUSHNULL + 256 PUSHPOW2DEC + <{ + s2 PUSH + 8 PUSHPOW2 + DICTUGETPREV + NULLSWAPIFNOT2 + s0 PUSH + <{ + s0 s2 XCHG + LDGRAMS + s0 POP + s1 s-1 PUXC + PAIR + s0 s3 XCHG2 + PAIR + s0 s2 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + NOT + }> PUSHCONT + UNTIL + s0 POP + s1 POP + + 130944: + c4 PUSH + CTOS + LDDICT + s1 POP + LDDICT + s0 POP + 8 PUSHPOW2 + DICTUGET + NULLSWAPIFNOT + <{ + LDGRAMS + s0 POP + }> PUSHCONT + <{ + s0 POP + 0 PUSHINT + }> PUSHCONT + IFELSE + + run_ticktock: + s0 POP + c4 PUSH + CTOS + LDDICT + LDDICT + s2 PUSH + ISNULL + <{ + ROTREV + 43 CALLDICT + 0 THROWIF + }> PUSHCONT + <{ + 0 2 1 PUSH3 + 38 CALLDICT + 0 THROWIF + ROTREV + 41 CALLDICT + 0 THROWIF + }> PUSHCONT + IFELSE + 39 CALLDICT + 0 THROWIF + 42 CALLDICT + s0 POP +) 19 DICTPUSHCONST +DICTIGETJMPZ +11 THROWARG +" +`; + +exports[`disassembler should disassemble nft 1`] = ` +"SETCP0 +(:methods + recv_internal: + s2 POP + s1 PUSH + SEMPTY + <{ + 3 BLKDROP + }> PUSHCONT + IFJMP + CTOS + 4 LDU + LDMSGADDR + LDMSGADDR + s1 POP + LDGRAMS + s1 POP + 1 PUSHINT + SDSKIPFIRST + LDGRAMS + s1 POP + LDGRAMS + s0 POP + 3 CALLDICT + s0 s8 XCHG + NOT + <{ + s7 POP + 4 BLKDROP + s5 POP + s4 s3 PUXC + SDEQ + 405 THROWIFNOT + s0 s4 XCHG + LDMSGADDR + s1 PUSH + 2 CALLDICT + LDREF + LDMSGADDR + s1 PUSH + 2 CALLDICT + LDMSGADDR + s0 POP + s0 PUSH + 2 CALLDICT + 0 PUSHINT + NEWC + 4 STU + ENDC + CTOS + s4 PUSH + s6 s8 XCHG + s9 s9 XCHG2 + 4 CALLDICT + 60000000 PUSHINT + s1 s3 XCHG + SUB + ROT + SUB + 0 GTINT + 402 THROWIFNOT + 0 PUSHINT + s0 PUSH + 7235188 PUSHINT + PUSHNULL + 1 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> IFJMPREF + s0 s11 XCHG + 32 LDU + s1 PUSH + 0 EQINT + <{ + s10 s5 PUSH2 + SDEQ + 401 THROWIFNOT + 32 LDU + s0 s1 XCHG + 1936026732 PUSHINT + EQUAL + <{ + 7 6 3 PUSH3 + 7 6 5 PUSH3 + 1 PUSHINT + s12 PUSH + 4 CALLDICT + 0 PUSHINT + 85167505 PUSHINT + s1 PUSH + NEWC + s9 PUSH + STSLICER + s4 PUSH + STSLICER + s7 PUSH + 4 1 BLKSWAP + 64 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + 0 THROW + }> PUSHCONT + IF + }> IFREF + s0 s11 XCHG + 1 PUSHINT + AND + <{ + 13 BLKDROP + }> PUSHCONT + IFJMP + 3572388859 PUSHINT + s1 s-1 PUXC + EQUAL + <{ + s1 s3 XCHG + 3 BLKDROP + s8 s7 XCHG2 + 6 BLKDROP + s0 s1 XCHG + SDEQ + 401 THROWIFNOT + 60000000 PUSHINT + s1 s2 XCHG + SUB + 900000 PUSHINT + SUB + 0 GTINT + 402 THROWIFNOT + 0 PUSHINT + s0 PUSH + 7235188 PUSHINT + PUSHNULL + 1 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> IFJMPREF + s0 s10 XCHG + 64 LDU + 1607220500 PUSHINT + s12 s-1 PUXC + EQUAL + <{ + s11 POP + s11 POP + s8 s3 PUSH2 + SDEQ + 401 THROWIFNOT + s5 s10 XCHG + s4 s9 XCHG + s3 s8 XCHG + s0 s3 s7 XCHG3 + s1 s6 XCHG + s1 POP + s5 POP + s0 s2 XCHG + LDMSGADDR + s1 PUSH + 2 CALLDICT + s1 s2 PUSH2 + SDEQ + <{ + 406 THROW + }> PUSHCONT + IF + LDMSGADDR + s1 PUSH + 2 CALLDICT + 1 LDI + s1 POP + LDGRAMS + 60000000 PUSHINT + s1 s13 XCHG + SUB + s1 PUSH + SUB + s0 s7 XCHG + 1 LSHIFT + s1 s7 XCHG + SUB + s0 PUSH + 0 GTINT + 402 THROWIFNOT + s6 PUSH + <{ + 85167505 PUSHINT + NEWC + s10 PUSH + STSLICER + s0 s13 XCHG2 + STSLICER + 1 PUSHINT + s4 PUSH + s4 s8 XCPU + s4 s10 XCHG + s3 s15 XCHG + s15 s2 XCHG2 + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> PUSHCONT + <{ + s6 POP + s10 POP + }> PUSHCONT + IFELSE + s9 PUSH + 2 PLDU + 0 NEQINT + <{ + 3576854235 PUSHINT + s3 s10 XCHG + s5 s0 s4 XCHG3 + PUSHNULL + 1 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> PUSHCONT + <{ + s2 s9 XCHG + 3 2 BLKDROP2 + }> PUSHCONT + IFELSE + s5 s6 XCHG + s0 s4 XCHG + s1 s5 s5 XCHG3 + s0 s3 XCHG + 0 PUSHINT + s0 s1 XCHG + 4 CALLDICT + }> PUSHCONT + IFJMP + s9 POP + s12 POP + 3144175422 PUSHINT + s10 s-1 PUXC + EQUAL + <{ + s9 POP + s9 POP + s9 POP + s1 s5 XCHG + SDEQ + 401 THROWIFNOT + s0 s2 XCHG + LDMSGADDR + s1 PUSH + s4 s5 XCHG + s8 s1 s3 XCHG3 + s7 s6 XCHG2 + 1 PUSHINT + s7 PUSH + 4 CALLDICT + 0 PUSHINT + 85167505 PUSHINT + s1 PUSH + NEWC + s0 s4 XCHG2 + STSLICER + s0 s4 XCHG2 + STSLICER + s3 s3 s0 XCHG3 + 64 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> PUSHCONT + IFJMP + s1 POP + 801842850 PUSHINT + s9 s-1 PUXC + EQUAL + <{ + 3 BLKDROP + s5 POP + s5 POP + 2DROP + 0 PUSHINT + 2339837749 PUSHINT + s0 s4 XCHG + NEWC + 256 STU + s0 s3 XCHG2 + STSLICER + 4 1 REVERSE + 64 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> PUSHCONT + IFJMP + 4113619047 PUSHINT + s9 s-1 PUXC + EQUAL + <{ + s8 POP + s6 s1 PUSH2 + SDEQ + 401 THROWIFNOT + s0 s5 XCHG + LDMSGADDR + s0 POP + s3 PUSH + s6 s3 XCPU + s0 s6 XCHG + s3 s5 XCHG + 4 1 REVERSE + s9 s10 s0 XCHG3 + 4 CALLDICT + 0 PUSHINT + 2941730180 PUSHINT + s0 s3 XCHG + NEWC + 256 STU + s0 s4 XCHG2 + STSLICER + s1 s4 XCHG + 64 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> IFJMPREF + s9 POP + 5 BLKDROP + 1030457287 PUSHINT + s1 s3 XCHG + EQUAL + <{ + s0 s2 PUXC + SDEQ + 401 THROWIFNOT + LDREF + s0 POP + s0 PUSH + SETCODE + CTOS + BLESS + c3 POP + 0 PUSHINT + 1555774094 PUSHINT + 1 3 BLKSWAP + PUSHNULL + 64 PUSHINT + 0 PUSHINT + 16 PUSHINT + NEWC + 6 STU + s0 s7 XCHG2 + STSLICER + s0 s5 XCHG2 + STGRAMS + s1 s5 XCHG + 107 STU + s1 s2 XCHG + 32 STU + 64 STU + s2 PUSH + ISNULL + NOT + <{ + ROT + STBR + s0 s1 XCHG + }> PUSHCONT + <{ + s2 POP + }> PUSHCONT + IFELSE + s0 s1 XCHG + ENDC + s0 s1 XCHG + SENDRAWMSG + }> IFJMPREF + 4 BLKDROP + 16 PUSHPOW2DEC + THROWANY + + 2: + REWRITESTDADDR + s0 POP + 0 PUSHINT + EQUAL + 333 THROWIFNOT + + 3: + c4 PUSH + CTOS + 64 LDU + LDMSGADDR + s0 PUSH + SBITS + 0 GTINT + <{ + LDMSGADDR + LDREF + LDREF + s0 POP + CTOS + LDMSGADDR + LDMSGADDR + 8 LDU + LDMSGADDR + s0 POP + -1 PUSHINT + 8 1 BLKSWAP + }> PUSHCONT + IFJMP + s0 POP + 0 PUSHINT + PUSHNULL + PUSHNULL + PUSHNULL + PUSHNULL + s4 PUSH + s5 s7 XCHG + s5 s6 XCHG + PUSHNULL + + 4: + NEWC + s0 s4 XCHG2 + STSLICER + ROT + STSLICER + 8 STU + s0 s1 XCHG + STSLICER + ENDC + s0 s4 XCHG + NEWC + 64 STU + s0 s3 XCHG2 + STSLICER + s0 s1 XCHG + STSLICER + STREF + STREF + ENDC + c4 POP + + 81994: + 3 CALLDICT + 8 1 BLKDROP2 + + get_version: + 14 PUSHINT + + get_marketplace_address: + 3 CALLDICT + s3 s8 XCHG + 8 BLKDROP + + get_nft_data: + 3 CALLDICT + 4 BLKDROP + + 107704: + 3 CALLDICT + s2 s8 XCHG + 8 BLKDROP + + 122897: + 3 CALLDICT + s1 s8 XCHG + 8 BLKDROP +) 19 DICTPUSHCONST +DICTIGETJMPZ +11 THROWARG +" +`; + +exports[`disassembler should dump method 1`] = ` +"SETCP0 +(:methods + recv_internal: + + owner: +) 19 DICTPUSHCONST +DICTIGETJMPZ +11 THROWARG +" +`; diff --git a/src/codepages/cp0.generated.ts b/src/codepages/cp0.generated.ts index b1223e3..7a4aec8 100644 --- a/src/codepages/cp0.generated.ts +++ b/src/codepages/cp0.generated.ts @@ -1,128 +1,128 @@ -import { Cell, Slice } from 'ton'; +import { beginCell, Cell, Slice } from 'ton-core'; import { decompile, decompileMethodsMap } from '../disassembler'; import { Codepage } from '../structs/codepage'; import { _isDebug } from '../utils/isDebug'; function fetchSubslice(slice: Slice, bits: number, refs?: number) { - let subcell = new Cell(); + let subcell = beginCell(); for (let i = 0; i < bits; i++) { - subcell.bits.writeBit(slice.readBit()); + subcell.storeBit(slice.loadBit()); } for (let i = 0; i < (refs || 0); i++) { - subcell.refs.push(slice.readCell()) + subcell.storeRef(slice.loadRef()) } - return subcell.beginParse(); + return subcell.asSlice(); } const CP0Auto = new Codepage() CP0Auto.insertHex('0', 4, (slice) => { - let n = slice.readUintNumber(4); + let n = slice.loadUint(4); if (n == 0) { return `NOP`; } return `s0 s${n} XCHG`; }) CP0Auto.insertHex('1', 4, (slice) => { - let n = slice.readUintNumber(4); + let n = slice.loadUint(4); if (n === 0) { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); return `s${i} s${j} XCHG`; } if (n === 1) { - let i = slice.readUintNumber(8); + let i = slice.loadUint(8); return `s0 s${i} XCHG`; } return `s1 s${n} XCHG`; }) CP0Auto.insertHex('2', 4, (slice) => { - let n = slice.readUintNumber(4); + let n = slice.loadUint(4); return `s${n} PUSH`; }) CP0Auto.insertHex('3', 4, (slice) => { - let value = slice.readUintNumber(4); + let value = slice.loadUint(4); return `s${value} POP`; }) CP0Auto.insertHex('4', 4, (slice) => { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); - let k = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); + let k = slice.loadUint(4); return `s${i} s${j} s${k} XCHG3`; }) CP0Auto.insertHex('50', 8, (slice) => { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); return `s${i} s${j} XCHG2`; }) CP0Auto.insertHex('51', 8, (slice) => { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); return `s${i} s${j} XCPU`; }) CP0Auto.insertHex('52', 8, (slice) => { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); return `s${i} s${j-1} PUXC`; }) CP0Auto.insertHex('53', 8, (slice) => { - let args = slice.readUintNumber(8); + let args = slice.loadUint(8); let first = args >> 4 & 0xf; let second = args & 0xf; return `s${first} s${second} PUSH2`; }) CP0Auto.insertHex('540', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let first = args >> 8 & 0xf; let second = args >> 4 & 0xf; let third = args & 0xf; return `s${first} s${second} s${third} XCHG3`; }); CP0Auto.insertHex('541', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; return `${i} ${j} ${k} XC2PU`; }); CP0Auto.insertHex('542', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; return `${i} ${j} ${k-1} XCPUXC`; }); CP0Auto.insertHex('543', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; return `${i} ${j} ${k} XCPU2`; }); CP0Auto.insertHex('544', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; return `${i} ${j-1} ${k-1} PUXC2`; }); CP0Auto.insertHex('545', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; return `${i} ${j-1} ${k-1} PUXCPU`; }); CP0Auto.insertHex('546', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; return `${i} ${j-1} ${k-2} PU2XC`; }); CP0Auto.insertHex('547', 12, (slice) => { - let args = slice.readUintNumber(12); + let args = slice.loadUint(12); let i = args >> 8 & 0xf; let j = args >> 4 & 0xf; let k = args & 0xf; @@ -130,17 +130,17 @@ CP0Auto.insertHex('547', 12, (slice) => { }); // 5537792 (DUMMY) CP0Auto.insertHex('55', 8, (slice) => { - let args = slice.readUintNumber(8); + let args = slice.loadUint(8); let i = args >> 4 & 0xf; let j = args & 0xf; return `${i+1} ${j+1} BLKSWAP`; }); CP0Auto.insertHex('56', 8, (slice) => { - let args = slice.readUintNumber(8); + let args = slice.loadUint(8); return `s${args} PUSH`; }); CP0Auto.insertHex('57', 8, (slice) => { - let args = slice.readUintNumber(8); + let args = slice.loadUint(8); return `s${args} POP`; }); CP0Auto.insertHex('58', 8, 'ROT'); @@ -150,14 +150,14 @@ CP0Auto.insertHex('5b', 8, '2DROP'); CP0Auto.insertHex('5c', 8, '2DUP'); CP0Auto.insertHex('5d', 8, '2OVER'); CP0Auto.insertHex('5e', 8, (slice) => { - let args = slice.readUintNumber(8); + let args = slice.loadUint(8); let i = args >> 4 & 0xf; let j = args & 0xf; return `${i+2} ${j} REVERSE`; }); CP0Auto.insertHex('5f', 8, (slice) => { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); if (i === 0) { return `${j} BLKDROP`; } @@ -177,14 +177,14 @@ CP0Auto.insertHex('6a', 8, 'ONLYTOPX'); CP0Auto.insertHex('6b', 8, 'ONLYX'); // 7077888 (DUMMY) CP0Auto.insertHex('6c', 8, (slice) => { - let i = slice.readUintNumber(4); - let j = slice.readUintNumber(4); + let i = slice.loadUint(4); + let j = slice.loadUint(4); return `${i} ${j} BLKDROP2`; }); CP0Auto.insertHex('6d', 8, 'PUSHNULL'); CP0Auto.insertHex('6e', 8, 'ISNULL'); CP0Auto.insertHex('6f0', 12, (slice) => { - let n = slice.readUintNumber(4); + let n = slice.loadUint(4); if (n === 0) { return `NIL`; } @@ -200,34 +200,34 @@ CP0Auto.insertHex('6f0', 12, (slice) => { return `${n} TUPLE`; }); CP0Auto.insertHex('6f1', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); return `${k} INDEX`; }); CP0Auto.insertHex('6f2', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); return `${k} UNTUPLE`; }); CP0Auto.insertHex('6f3', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); if (k === 0) { return `CHKTUPLE`; } return `${k} UNPACKFIRST`; }); CP0Auto.insertHex('6f4', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); return `${k} EXPLODE`; }); CP0Auto.insertHex('6f5', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); return `${k} SETINDEX`; }); CP0Auto.insertHex('6f6', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); return `${k} INDEXQ`; }); CP0Auto.insertHex('6f7', 12, (slice) => { - let k = slice.readUintNumber(4); + let k = slice.loadUint(4); return `${k} SETINDEXQ`; }); CP0Auto.insertHex('6f80', 16, 'TUPLEVAR'); @@ -255,44 +255,44 @@ CP0Auto.insertHex('6fa6', 16, 'NULLROTRIF2'); CP0Auto.insertHex('6fa7', 16, 'NULLROTRIFNOT2'); // 7317504 (DUMMY) CP0Auto.insertHex('6fb', 12, (slice) => { - let i = slice.readUintNumber(2); - let j = slice.readUintNumber(2); + let i = slice.loadUint(2); + let j = slice.loadUint(2); return `${i} ${j} INDEX2`; }); // CP0Auto.insertHex('6fc', 10, (slice) => { -// let i = slice.readUintNumber(2); -// let j = slice.readUintNumber(2); -// let k = slice.readUintNumber(2); +// let i = slice.loadUint(2); +// let j = slice.loadUint(2); +// let k = slice.loadUint(2); // return `${i} ${j} ${k} INDEX3`; // }); CP0Auto.insertHex('7', 4, (slice) => { - let args = slice.readIntNumber(4); + let args = slice.loadInt(4); return `${args} PUSHINT`; }); CP0Auto.insertHex('80', 8, (slice) => { - let x = slice.readIntNumber(8) + let x = slice.loadInt(8) return `${x} PUSHINT`; }) CP0Auto.insertHex('81', 8, (slice) => { - let x = slice.readIntNumber(16) + let x = slice.loadInt(16) return `${x} PUSHINT`; }) CP0Auto.insertHex('82', 8, (slice) => { - let len = slice.readUintNumber(5) + let len = slice.loadUint(5) let n = 8 * len + 19 - let x = slice.readInt(n) + let x = slice.loadIntBig(n) return `${x.toString(10)} PUSHINT`; }) CP0Auto.insertHex('83', 8, (slice) => { - let x = slice.readUintNumber(8) + 1; + let x = slice.loadUint(8) + 1; return `${x} PUSHPOW2`; }) CP0Auto.insertHex('84', 8, (slice) => { - let x = slice.readUintNumber(8) + 1; + let x = slice.loadUint(8) + 1; return `${x} PUSHPOW2DEC`; }) CP0Auto.insertHex('850000', 8, (slice) => { - let x = slice.readUintNumber(8) + 1; + let x = slice.loadUint(8) + 1; return `${x} PUSHNEGPOW2`; }); // 8781824 (DUMMY) @@ -300,35 +300,35 @@ CP0Auto.insertHex('88', 8, 'PUSHREF'); CP0Auto.insertHex('89', 8, 'PUSHREFSLICE'); CP0Auto.insertHex('8a', 8, 'PUSHREFCONT'); CP0Auto.insertHex('8b', 8, (slice) => { - let x = slice.readUintNumber(4); + let x = slice.loadUint(4); let len = 8 * x + 4; let subslice = fetchSubslice(slice, len); return 'PUSHSLICE'; }); CP0Auto.insertHex('8c0000', 8, (slice) => { - let r = slice.readUintNumber(2) + 1; - let xx = slice.readUintNumber(5); + let r = slice.loadUint(2) + 1; + let xx = slice.loadUint(5); let subslice = fetchSubslice(slice, 8 * xx + 1, r); return 'PUSHSLICE'; }); CP0Auto.insertHex('8d', 8, (slice) => { - let r = slice.readUintNumber(3); - let xx = slice.readUintNumber(7); + let r = slice.loadUint(3); + let xx = slice.loadUint(7); let subslice = fetchSubslice(slice, 8 * xx + 6, r); return 'PUSHSLICE'; }); // 9281536 (DUMMY) CP0Auto.insertHex('8E', 7, (slice, indent) => { - let args = slice.readUintNumber(9); + let args = slice.loadUint(9); let refs = (args >> 7) & 3; let dataBytes = (args & 127) * 8; let subslice = fetchSubslice(slice, dataBytes, refs); - // <{\n${decompile(slice.readRef(), indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` + // <{\n${decompile(slice.loadRef().beginParse(), indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` }) CP0Auto.insertHex('9', 4, (slice, indent) => { - let len = slice.readUintNumber(4) * 8; + let len = slice.loadUint(4) * 8; let subslice = fetchSubslice(slice, len); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` }) @@ -340,20 +340,20 @@ CP0Auto.insertHex('a30000', 8, 'NEGATE'); CP0Auto.insertHex('a40000', 8, 'INC'); CP0Auto.insertHex('a50000', 8, 'DEC'); CP0Auto.insertHex('a60000', 8, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} ADDCONST`; }); CP0Auto.insertHex('a70000', 8, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} MULCONST`; }); CP0Auto.insertHex('a80000', 8, 'MUL'); CP0Auto.insertHex('A9', 8, (slice) => { - let m = slice.readBit(); - let s = slice.readUintNumber(2); - let c = slice.readBit(); - let d = slice.readUintNumber(2); - let f = slice.readUintNumber(2); + let m = slice.loadBit(); + let s = slice.loadUint(2); + let c = slice.loadBit(); + let d = slice.loadUint(2); + let f = slice.loadUint(2); let opName = ''; if (m) { opName += 'MUL'; @@ -369,7 +369,7 @@ CP0Auto.insertHex('A9', 8, (slice) => { if (!c) { opName += ' s0'; } else { - let shift = slice.readUintNumber(8) + 1; + let shift = slice.loadUint(8) + 1; opName += ` ${shift}`; } } @@ -390,11 +390,11 @@ CP0Auto.insertHex('A9', 8, (slice) => { // 11079680 (DUMMY) // 11132928 (DUMMY) CP0Auto.insertHex('aa', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} LSHIFT`; }); CP0Auto.insertHex('ab', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} RSHIFT`; }); CP0Auto.insertHex('ac', 8, 'LSHIFT'); @@ -406,11 +406,11 @@ CP0Auto.insertHex('b1', 8, 'OR'); CP0Auto.insertHex('b2', 8, 'XOR'); CP0Auto.insertHex('b3', 8, 'NOT'); CP0Auto.insertHex('b4', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} FITS`; }); CP0Auto.insertHex('b5', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} UFITS`; }); CP0Auto.insertHex('b600', 16, 'FITSX'); @@ -430,20 +430,20 @@ CP0Auto.insertHex('b7a3', 16, 'QNEGATE'); CP0Auto.insertHex('b7a4', 16, 'QINC'); CP0Auto.insertHex('b7a5', 16, 'QDEC'); CP0Auto.insertHex('b7a6', 16, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} QADDCONST`; }); CP0Auto.insertHex('b7a7', 16, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} QMULCONST`; }); CP0Auto.insertHex('b7a8', 16, 'QMUL'); CP0Auto.insertHex('b7a9', 16, (slice) => { - let m = slice.readBit(); - let s = slice.readUintNumber(2); - let c = slice.readBit(); - let d = slice.readUintNumber(2); - let f = slice.readUintNumber(2); + let m = slice.loadBit(); + let s = slice.loadUint(2); + let c = slice.loadBit(); + let d = slice.loadUint(2); + let f = slice.loadUint(2); let opName = 'Q'; if (m) { opName += 'MUL'; @@ -459,7 +459,7 @@ CP0Auto.insertHex('b7a9', 16, (slice) => { if (!c) { opName += ' s0'; } else { - let shift = slice.readUintNumber(8) + 1; + let shift = slice.loadUint(8) + 1; opName += ` ${shift}`; } } @@ -479,11 +479,11 @@ CP0Auto.insertHex('b7a9', 16, (slice) => { }); // 12036560 (DUMMY) CP0Auto.insertHex('b7aa', 16, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} QLSHIFT`; }); CP0Auto.insertHex('b7ab', 16, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} QLSHIFT`; }); CP0Auto.insertHex('b7ac', 16, 'QLSHIFT'); @@ -495,11 +495,11 @@ CP0Auto.insertHex('b7b1', 16, 'QOR'); CP0Auto.insertHex('b7b2', 16, 'QXOR'); CP0Auto.insertHex('b7b3', 16, 'QNOT'); CP0Auto.insertHex('b7b4', 16, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} QFITS`; }); CP0Auto.insertHex('b7b5', 16, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} QUFITS`; }); CP0Auto.insertHex('b7b600', 24, 'QFITSX'); @@ -521,19 +521,19 @@ CP0Auto.insertHex('b7bd', 16, 'QNEQ'); CP0Auto.insertHex('b7be', 16, 'QGEQ'); CP0Auto.insertHex('b7bf', 16, 'QCMP'); CP0Auto.insertHex('b7c0', 16, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} QEQINT`; }); CP0Auto.insertHex('b7c1', 16, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} QLESSINT`; }); CP0Auto.insertHex('b7c2', 16, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} QGTINT`; }); CP0Auto.insertHex('b7c3', 16, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} QNEQINT`; }); // 12043264 (DUMMY) @@ -546,19 +546,19 @@ CP0Auto.insertHex('bd', 8, 'NEQ'); CP0Auto.insertHex('be', 8, 'GEQ'); CP0Auto.insertHex('bf', 8, 'CMP'); CP0Auto.insertHex('c0', 8, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} EQINT`; }); CP0Auto.insertHex('c1', 8, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} LESSINT`; }); CP0Auto.insertHex('c2', 8, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} GTINT`; }); CP0Auto.insertHex('c3', 8, (slice) => { - let x = slice.readIntNumber(8); + let x = slice.loadInt(8); return `${x} NEQINT`; }); CP0Auto.insertHex('c4', 8, 'ISNAN'); @@ -587,18 +587,18 @@ CP0Auto.insertHex('c713', 16, 'SDCNTTRAIL1'); CP0Auto.insertHex('c8', 8, 'NEWC'); CP0Auto.insertHex('c9', 8, 'ENDC'); CP0Auto.insertHex('ca', 8, (slice) => { - let cc = slice.readUintNumber(8) + 1; + let cc = slice.loadUint(8) + 1; return `${cc} STI`; }); CP0Auto.insertHex('cb', 8, (slice) => { - let cc = slice.readUintNumber(8) + 1; + let cc = slice.loadUint(8) + 1; return `${cc} STU`; }); CP0Auto.insertHex('cc', 8, 'STREF'); CP0Auto.insertHex('cd', 8, 'ENDCST'); CP0Auto.insertHex('ce', 8, 'STSLICE'); CP0Auto.insertHex('cf00', 13, (slice) => { - let args = slice.readUintNumber(3); + let args = slice.loadUint(3); let sgnd = !(args & 1); let s = "ST"; s += sgnd ? 'I' : 'U'; @@ -612,7 +612,7 @@ CP0Auto.insertHex('cf00', 13, (slice) => { return s; }); CP0Auto.insertHex('cf08', 13, (slice) => { - let args = slice.readUintNumber(11); + let args = slice.loadUint(11); let bits = (args & 0xff) + 1; let sgnd = !(args & 0x100); let s = "ST"; @@ -642,7 +642,7 @@ CP0Auto.insertHex('cf1d', 16, 'STBREFRQ'); CP0Auto.insertHex('cf1e', 16, 'STSLICERQ'); CP0Auto.insertHex('cf1f', 16, 'STBRQ'); CP0Auto.insertHex('cf20', 15, (slice) => { - let flag = slice.readUintNumber(1); + let flag = slice.loadUint(1); if (flag === 0) { return 'STREFCONST'; } else { @@ -653,7 +653,7 @@ CP0Auto.insertHex('cf20', 15, (slice) => { CP0Auto.insertHex('cf23', 16, 'ENDXC'); // 13575168 (DUMMY) CP0Auto.insertHex('cf28', 14, (slice) => { - let args = slice.readUintNumber(2); + let args = slice.loadUint(2); let sgnd = !(args & 1); return `ST${(sgnd ? 'I' : 'U')}LE${((args & 2) ? '8' : '4')}`; }); @@ -667,14 +667,14 @@ CP0Auto.insertHex('cf35', 16, 'BREMBITS'); CP0Auto.insertHex('cf36', 16, 'BREMREFS'); CP0Auto.insertHex('cf37', 16, 'BREMBITREFS'); CP0Auto.insertHex('cf38', 16, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} BCHKBITS`; }); CP0Auto.insertHex('cf39', 16, 'BCHKBITS'); CP0Auto.insertHex('cf3a', 16, 'BCHKREFS'); CP0Auto.insertHex('cf3b', 16, 'BCHKBITREFS'); CP0Auto.insertHex('cf3c', 16, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} BCHKBITSQ`; }); CP0Auto.insertHex('cf3d', 16, 'BCHKBITSQ'); @@ -685,48 +685,48 @@ CP0Auto.insertHex('cf41', 16, 'STONES'); CP0Auto.insertHex('cf42', 16, 'STSAME'); // 13583104 (DUMMY) CP0Auto.insertHex('cf8', 9, (slice) => { - let refs = slice.readUintNumber(2); - let dataBits = slice.readUintNumber(3) * 8 + 1; + let refs = slice.loadUint(2); + let dataBits = slice.loadUint(3) * 8 + 1; let subslice = fetchSubslice(slice, dataBits, refs); return `STSLICECONST`; }); CP0Auto.insertHex('d0', 8, 'CTOS'); CP0Auto.insertHex('d1', 8, 'ENDS'); CP0Auto.insertHex('d2', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} LDI`; }); CP0Auto.insertHex('d3', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} LDU`; }); CP0Auto.insertHex('d4', 8, 'LDREF'); CP0Auto.insertHex('d5', 8, 'LDREFRTOS'); CP0Auto.insertHex('d6', 8, (slice) => { - let cc = slice.readUintNumber(8); + let cc = slice.loadUint(8); return `${cc+1} LDSLICE`; }); CP0Auto.insertHex('d70', 12, (slice) => { - let longerVersion = slice.readBit(); - let quiet = slice.readBit(); - let preload = slice.readBit(); - let sign = slice.readBit(); + let longerVersion = slice.loadBit(); + let quiet = slice.loadBit(); + let preload = slice.loadBit(); + let sign = slice.loadBit(); - return `${longerVersion ? ((slice.readUintNumber(8) + 1) + ' ') : ''}${preload ? 'PLD' : 'LD'}${sign ? 'U' : 'I'}${quiet ? 'Q' : ''}`; + return `${longerVersion ? ((slice.loadUint(8) + 1) + ' ') : ''}${preload ? 'PLD' : 'LD'}${sign ? 'U' : 'I'}${quiet ? 'Q' : ''}`; }); CP0Auto.insertHex('d710', 13, (slice) => { - let c = slice.readUintNumber(3) + 1; + let c = slice.loadUint(3) + 1; return `${32 * (c + 1)} PLDUZ`; }); CP0Auto.insertHex('d718', 14, (slice) => { - let quiet = slice.readBit(); - let preload = slice.readBit(); + let quiet = slice.loadBit(); + let preload = slice.loadBit(); return `${preload ? 'PLD' : 'LD'}SLICEX${quiet ? 'Q' : ''}`; }); CP0Auto.insertHex('d71c', 14, (slice) => { - let quiet = slice.readBit(); - let preload = slice.readBit(); - let cc = slice.readUintNumber(8); + let quiet = slice.loadBit(); + let preload = slice.loadBit(); + let cc = slice.loadUint(8); return `${cc+1} ${preload ? 'PLD' : 'LD'}SLICEX${quiet ? 'Q' : ''}`; }); CP0Auto.insertHex('d720', 16, 'SDCUTFIRST'); @@ -738,7 +738,7 @@ CP0Auto.insertHex('d724', 16, 'SDSUBSTR'); CP0Auto.insertHex('d726', 16, 'SDBEGINSX'); CP0Auto.insertHex('d727', 16, 'SDBEGINSXQ'); CP0Auto.insertHex('d728', 13, (slice) => { - let args = slice.readUintNumber(8); + let args = slice.loadUint(8); return 'SDBEGINS'; }); CP0Auto.insertHex('d730', 16, 'SCUTFIRST'); @@ -766,14 +766,14 @@ CP0Auto.insertHex('d749', 16, 'SBITS'); CP0Auto.insertHex('d74a', 16, 'SREFS'); CP0Auto.insertHex('d74b', 16, 'SBITREFS'); CP0Auto.insertHex('d74c', 14, (slice) => { - let n = slice.readUintNumber(2); + let n = slice.loadUint(2); return `${n} PLDREFIDX`; }); CP0Auto.insertHex('d750', 12, (slice) => { - let quiet = slice.readBit(); - let preload = slice.readBit(); - let bit64 = slice.readBit(); - let unsigned = slice.readBit(); + let quiet = slice.loadBit(); + let preload = slice.loadBit(); + let bit64 = slice.loadBit(); + let unsigned = slice.loadBit(); return `${preload ? 'PLD' : 'LD'}${unsigned ? 'U' : 'I'}LE${bit64 ? '8' : '4'}${quiet ? 'Q' : ''}`; }); CP0Auto.insertHex('d760', 16, 'LDZEROES'); @@ -786,20 +786,20 @@ CP0Auto.insertHex('d765', 16, 'CDEPTH'); CP0Auto.insertHex('d8', 8, 'EXECUTE'); CP0Auto.insertHex('d9', 8, 'JMPX'); CP0Auto.insertHex('da', 8, (slice) => { - let p = slice.readUintNumber(4); - let r = slice.readUintNumber(4); + let p = slice.loadUint(4); + let r = slice.loadUint(4); return `${p} ${r} CALLXARGS`; }); CP0Auto.insertHex('db0', 12, (slice) => { - let p = slice.readUintNumber(4); + let p = slice.loadUint(4); return `${p} CALLXARGS`; }); CP0Auto.insertHex('db1', 12, (slice) => { - let p = slice.readUintNumber(4); + let p = slice.loadUint(4); return `${p} JMPXARGS`; }); CP0Auto.insertHex('db2', 12, (slice) => { - let r = slice.readUintNumber(4); + let r = slice.loadUint(4); return `${r} RETARGS`; }); CP0Auto.insertHex('db30', 16, 'RET'); @@ -809,8 +809,8 @@ CP0Auto.insertHex('db32', 16, 'RETBOOL'); CP0Auto.insertHex('db34', 16, 'CALLCC'); CP0Auto.insertHex('db35', 16, 'JMPXDATA'); CP0Auto.insertHex('db36', 16, (slice) => { - let p = slice.readUintNumber(4); - let r = slice.readUintNumber(4); + let p = slice.loadUint(4); + let r = slice.loadUint(4); return `${p} ${r} CALLCCARGS`; }); // 14366464 (DUMMY) @@ -819,15 +819,15 @@ CP0Auto.insertHex('db39', 16, 'RETVARARGS'); CP0Auto.insertHex('db3a', 16, 'JMPXVARARGS'); CP0Auto.insertHex('db3b', 16, 'CALLCCVARARGS'); CP0Auto.insertHex('db3c', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> CALLREF`; }); CP0Auto.insertHex('db3d', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> JMPREF`; }); CP0Auto.insertHex('db3e', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> JMPREFDATA`; }); CP0Auto.insertHex('db3f', 16, 'RETDATA'); @@ -840,19 +840,19 @@ CP0Auto.insertHex('e0', 8, 'IFJMP'); CP0Auto.insertHex('e1', 8, 'IFNOTJMP'); CP0Auto.insertHex('e2', 8, 'IFELSE'); CP0Auto.insertHex('e300', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFREF`; }); CP0Auto.insertHex('e301', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFNOTREF`; }); CP0Auto.insertHex('e302', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFJMPREF`; }); CP0Auto.insertHex('e303', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFNOTJMPREF`; }); CP0Auto.insertHex('e304', 16, 'CONDSEL'); @@ -862,15 +862,15 @@ CP0Auto.insertHex('e308', 16, 'IFRETALT'); CP0Auto.insertHex('e309', 16, 'IFNOTRETALT'); // 14879232 (DUMMY) CP0Auto.insertHex('e30d', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFREFELSE`; }); CP0Auto.insertHex('e30e', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFELSEREF`; }); CP0Auto.insertHex('e30f', 16, (slice, indent) => { - let subslice = slice.readRef(); + let subslice = slice.loadRef().beginParse(); return `<{\n${decompile(subslice, indent + 2)}${new Array(indent).fill(' ').join('')}}> IFREFELSEREF`; }); // 14880768 (DUMMY) @@ -884,11 +884,11 @@ CP0Auto.insertHex('e31a', 16, 'AGAINBRK'); CP0Auto.insertHex('e31b', 16, 'AGAINENDBRK'); // 14883840 (DUMMY) CP0Auto.insertHex('e38', 10, (slice) => { - let args = slice.readUintNumber(6); + let args = slice.loadUint(6); return '(FIXED 879)'; }); CP0Auto.insertHex('e3c', 10, (slice) => { - let args = slice.readUintNumber(6); + let args = slice.loadUint(6); return '(EXT)'; }); CP0Auto.insertHex('e4', 8, 'REPEAT'); @@ -900,12 +900,12 @@ CP0Auto.insertHex('e9', 8, 'WHILEEND'); CP0Auto.insertHex('ea', 8, 'AGAIN'); CP0Auto.insertHex('eb', 8, 'AGAINEND'); CP0Auto.insertHex('ec', 8, (slice) => { - let r = slice.readUintNumber(4); - let n = slice.readUintNumber(4); + let r = slice.loadUint(4); + let n = slice.loadUint(4); return `${r}, ${n} SETCONTARGS`; }); CP0Auto.insertHex('ed0', 12, (slice) => { - let p = slice.readUintNumber(4); + let p = slice.loadUint(4); return `${p} RETURNARGS`; }); CP0Auto.insertHex('ed10', 16, 'RETURNVARARGS'); @@ -916,44 +916,44 @@ CP0Auto.insertHex('ed1e', 16, 'BLESS'); CP0Auto.insertHex('ed1f', 16, 'BLESSVARARGS'); // 15540224 (DUMMY) CP0Auto.insertHex('ed4', 12, (slice) => { - let n = slice.readUintNumber(4); + let n = slice.loadUint(4); return `c${n} PUSH`; }); CP0Auto.insertHex('ed5', 12, (slice) => { - let x = slice.readUintNumber(4); + let x = slice.loadUint(4); return `c${x} POP`; }); // 15554560 (DUMMY) CP0Auto.insertHex('ed6', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} SETCONT`; }); // 15558656 (DUMMY) CP0Auto.insertHex('ed7', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} SETRETCTR`; }); // 15562752 (DUMMY) CP0Auto.insertHex('ed8', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} SETALTCTR`; }); // 15566848 (DUMMY) CP0Auto.insertHex('ed9', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} POPSAVE`; }); // 15570944 (DUMMY) CP0Auto.insertHex('eda', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} SAVE`; }); CP0Auto.insertHex('edb', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} SAVEALT`; }); CP0Auto.insertHex('edc', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); return `c${i} SAVEBOTH`; }); CP0Auto.insertHex('ede0', 16, 'PUSHCTRX'); @@ -973,75 +973,75 @@ CP0Auto.insertHex('edfa', 16, 'SAMEALT'); CP0Auto.insertHex('edfb', 16, 'SAMEALTSAVE'); // 15596544 (DUMMY) CP0Auto.insertHex('ee', 8, (slice) => { - let r = slice.readUintNumber(4); - let n = slice.readUintNumber(4); + let r = slice.loadUint(4); + let n = slice.loadUint(4); return `${r},${n} BLESSARGS`; }); // 15663104 (DUMMY) CP0Auto.insertHex('f0', 8, (slice) => { - let n = slice.readUintNumber(8); + let n = slice.loadUint(8); return `${n} CALLDICT`; }); CP0Auto.insertHex('f10', 10, (slice) => { - let n = slice.readUintNumber(14); + let n = slice.loadUint(14); return `${n} CALL`; }); // CP0Auto.insertHex('f14', 10, (slice) => { -// let args = slice.readUintNumber(14); +// let args = slice.loadUint(14); // return '(FIXED 1047)'; // }); // CP0Auto.insertHex('f18', 10, (slice) => { -// let args = slice.readUintNumber(14); +// let args = slice.loadUint(14); // return '(FIXED 1051)'; // }); // 15843328 (DUMMY) CP0Auto.insertHex('f20', 10, (slice) => { - let nn = slice.readUintNumber(6); + let nn = slice.loadUint(6); return `${nn} THROW`; }); CP0Auto.insertHex('F24', 10, (slice) => { - let eCode = slice.readUint(6) + let eCode = slice.loadUintBig(6) return `${eCode} THROWIF` }) CP0Auto.insertHex('F28', 10, (slice) => { - let eCode = slice.readUint(6) + let eCode = slice.loadUintBig(6) return `${eCode} THROWIFNOT` }) CP0Auto.insertHex('f2c0', 13, (slice) => { - let args = slice.readUintNumber(11); + let args = slice.loadUint(11); return `${args} THROW`; }); CP0Auto.insertHex('f2c8', 13, (slice) => { - let x = slice.readUintNumber(11); + let x = slice.loadUint(11); return `${x} THROWARG`; }); CP0Auto.insertHex('f2d0', 13, (slice) => { - let x = slice.readUintNumber(11); + let x = slice.loadUint(11); return `${x} THROWIF`; }); // CP0Auto.insertHex('f2d8', 13, (slice) => { -// let args = slice.readUintNumber(11); +// let args = slice.loadUint(11); // return '(FIXED 1080)'; // }); CP0Auto.insertHex('f2e0', 13, (slice) => { - let x = slice.readUintNumber(11); + let x = slice.loadUint(11); return `${x} THROWIFNOT`; }); // CP0Auto.insertHex('f2e8', 13, (slice) => { -// let args = slice.readUintNumber(11); +// let args = slice.loadUint(11); // return '(FIXED 1088)'; // }); CP0Auto.insertHex('f2f0', 13, (slice) => { - let inverse = slice.readBit(); - let cond = slice.readBit(); - let arg = slice.readBit(); + let inverse = slice.loadBit(); + let cond = slice.loadBit(); + let arg = slice.loadBit(); return `THROW${arg ? 'ARG' : ''}ANY${(cond || inverse) ? 'IF' : ''}${inverse ? 'NOT' : ''}`; }); // 15922688 (DUMMY) CP0Auto.insertHex('f2ff', 16, 'TRY'); CP0Auto.insertHex('f3', 8, (slice) => { - let p = slice.readUintNumber(4); - let r = slice.readUintNumber(4); + let p = slice.loadUint(4); + let r = slice.loadUint(4); return `${p},${r} TRYARGS`; }); CP0Auto.insertHex('f400', 16, 'STDICT'); @@ -1080,9 +1080,9 @@ CP0Auto.insertHex('F41F', 16, 'DICTUSETGETREF'); // 15998976 (DUMMY) CP0Auto.insertHex('f420', 13, (slice) => { - let sls = slice.readBit(); - let sign = slice.readBit(); - let ref = slice.readBit(); + let sls = slice.loadBit(); + let sign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (sls && !sign) { type = 'I'; @@ -1093,9 +1093,9 @@ CP0Auto.insertHex('f420', 13, (slice) => { }); // 16001024 (DUMMY) CP0Auto.insertHex('f42a', 13, (slice) => { - let sls = slice.readBit(); - let sign = slice.readBit(); - let ref = slice.readBit(); + let sls = slice.loadBit(); + let sign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (sls && !sign) { type = 'I'; @@ -1106,9 +1106,9 @@ CP0Auto.insertHex('f42a', 13, (slice) => { }); // 16003072 (DUMMY) CP0Auto.insertHex('f432', 13, (slice) => { - let sls = slice.readBit(); - let sign = slice.readBit(); - let ref = slice.readBit(); + let sls = slice.loadBit(); + let sign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (sls && !sign) { type = 'I'; @@ -1119,9 +1119,9 @@ CP0Auto.insertHex('f432', 13, (slice) => { }); // 16005120 (DUMMY) CP0Auto.insertHex('f43a', 13, (slice) => { - let sls = slice.readBit(); - let sign = slice.readBit(); - let ref = slice.readBit(); + let sls = slice.loadBit(); + let sign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (sls && !sign) { type = 'I'; @@ -1132,38 +1132,38 @@ CP0Auto.insertHex('f43a', 13, (slice) => { }); // 16007168 (DUMMY) CP0Auto.insertHex('f441', 14, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${int ? (usign ? 'U' : 'I') : '' }SETB`; }); // 16008192 (DUMMY) CP0Auto.insertHex('f445', 14, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${int ? (usign ? 'U' : 'I') : '' }SETGETB`; }); // 16009216 (DUMMY) CP0Auto.insertHex('f449', 14, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${int ? (usign ? 'U' : 'I') : '' }REPLACEB`; }); // 16010240 (DUMMY) CP0Auto.insertHex('f44d', 14, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${int ? (usign ? 'U' : 'I') : '' }REPLACEGETB`; }); // 16011264 (DUMMY) CP0Auto.insertHex('f451', 14, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${int ? (usign ? 'U' : 'I') : '' }ADDB`; }); // 16012288 (DUMMY) CP0Auto.insertHex('f455', 14, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${int ? (usign ? 'U' : 'I') : '' }ADDGETB`; }); // 16013312 (DUMMY) @@ -1173,9 +1173,9 @@ CP0Auto.insertHex('f45B', 16, 'DICTUDEL'); // 16014336 (DUMMY) CP0Auto.insertHex('f462', 13, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); - let ref = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (int && !usign) { type = 'I'; @@ -1194,7 +1194,7 @@ CP0Auto.insertHex('f46e', 16, 'DICTISETGETOPTREF'); CP0Auto.insertHex('f46f', 16, 'DICTUSETGETOPTREF'); CP0Auto.insertHex('f47', 12, (slice) => { - let args = slice.readUintNumber(4); + let args = slice.loadUint(4); if (args === 0) { return 'PFXDICTSET'; } else if (args === 1) { @@ -1211,11 +1211,11 @@ CP0Auto.insertHex('f47', 12, (slice) => { return `DICT${(args & 4) ? 'U' : 'I'}GET${(args & 2) ? 'PREV' : 'NEXT'}${(args & 1) ? 'EQ' : ''}`; }); CP0Auto.insertHex('f48', 11, (slice) => { - let remove = slice.readBit(); - let max = slice.readBit(); - let int = slice.readBit(); - let usign = slice.readBit(); - let ref = slice.readBit(); + let remove = slice.loadBit(); + let max = slice.loadBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (int && !usign) { type = 'I'; @@ -1225,21 +1225,21 @@ CP0Auto.insertHex('f48', 11, (slice) => { return `DICT${type}${remove ? 'REM' : ''}${max ? 'MAX' : 'MIN'}${ref ? 'REF' : ''}`; }); CP0Auto.insertHex('f4a0', 13, (slice, indent) => { - let push = slice.readBit(); + let push = slice.loadBit(); if (push) { // f4a4 let subslice = fetchSubslice(slice, 0, 1); - let keyLen = slice.readUintNumber(10); + let keyLen = slice.loadUint(10); let decompiled: string try { - decompiled = decompileMethodsMap(subslice.clone(), indent) + decompiled = decompileMethodsMap(subslice.preloadRef().beginParse(), keyLen, indent) } catch (e) { _isDebug() && console.error(e); - decompiled = subslice.toCell().toString(' '.repeat(indent)); + decompiled = subslice.asCell().toString(' '.repeat(indent)); } return `${decompiled} ${keyLen} DICTPUSHCONST`; } - let exec = slice.readBit(); - let usign = slice.readBit(); + let exec = slice.loadBit(); + let usign = slice.loadBit(); return `DICT${usign ? 'U' : 'I'}GET${exec ? 'EXEC' : 'JMP'}`; }); CP0Auto.insertHex('f4a8', 16, 'PFXDICTGETQ'); @@ -1247,14 +1247,14 @@ CP0Auto.insertHex('f4a9', 16, 'PFXDICTGET'); CP0Auto.insertHex('f4aa', 16, 'PFXDICTGETJMP'); CP0Auto.insertHex('f4ab', 16, 'PFXDICTGETEXEC'); // CP0Auto.insertHex('f4ac00', 13, (slice) => { -// let args = slice.readUintNumber(11); +// let args = slice.loadUint(11); // return '(EXT)'; // }); // 16035840 (DUMMY) CP0Auto.insertHex('f4b1', 13, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); - let ref = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (int && !usign) { type = 'I'; @@ -1265,9 +1265,9 @@ CP0Auto.insertHex('f4b1', 13, (slice) => { }); // 16036864 (DUMMY) CP0Auto.insertHex('f4b5', 13, (slice) => { - let int = slice.readBit(); - let usign = slice.readBit(); - let ref = slice.readBit(); + let int = slice.loadBit(); + let usign = slice.loadBit(); + let ref = slice.loadBit(); let type = ''; if (int && !usign) { type = 'I'; @@ -1278,8 +1278,8 @@ CP0Auto.insertHex('f4b5', 13, (slice) => { }); // 16037888 (DUMMY) CP0Auto.insertHex('f4bc', 14, (slice) => { - let exec = slice.readBit(); - let unsigned = slice.readBit(); + let exec = slice.loadBit(); + let unsigned = slice.loadBit(); return `DICT${unsigned ? 'U' : 'I'}GET${exec ? 'EXEC' : 'JMP'}Z`; }); // 16039936 (DUMMY) @@ -1293,7 +1293,7 @@ CP0Auto.insertHex('f811', 16, 'RAND'); CP0Auto.insertHex('f814', 16, 'SETRAND'); CP0Auto.insertHex('f815', 16, 'ADDRAND'); CP0Auto.insertHex('f82', 12, (slice) => { - let i = slice.readUintNumber(4); + let i = slice.loadUint(4); if (i == 0x3) { return 'NOW'; } else if (i == 0x4) { @@ -1318,12 +1318,12 @@ CP0Auto.insertHex('f833', 16, 'CONFIGOPTPARAM'); // 16266240 (DUMMY) // CP0Auto.insertHex('f84000', 16, 'GETGLOBVAR'); CP0Auto.insertHex('f841', 11, (slice) => { - let args = slice.readUintNumber(5); + let args = slice.loadUint(5); return `${args} GETGLOBVAR`; }); // CP0Auto.insertHex('f86000', 16, 'SETGLOBVAR'); CP0Auto.insertHex('f861', 11, (slice) => { - let args = slice.readUintNumber(5); + let args = slice.loadUint(5); return `${args} SETGLOBVAR`; }); // 16285696 (DUMMY) @@ -1367,16 +1367,16 @@ CP0Auto.insertHex('fb06', 16, 'SETLIBCODE'); CP0Auto.insertHex('fb07', 16, 'CHANGELIB'); // 16451584 (DUMMY) CP0Auto.insertHex('fe', 8, (slice) => { - let nn = slice.readUintNumber(8); + let nn = slice.loadUint(8); if ((nn & 0xf0) == 0xf0) { let n = nn & 0x0f; - let str = slice.readBuffer(n + 1).toString('utf-8'); + let str = slice.loadBuffer(n + 1).toString('utf-8'); return `"${str}" DEBUGSTR`; } return `${nn} DEBUG`; }); CP0Auto.insertHex('ff', 8, (slice) => { - let nn = slice.readUintNumber(8); + let nn = slice.loadUint(8); if ((nn & 0xf0) == 0xf0) { let z = nn & 0x0f; if (z == 0) { diff --git a/src/codepages/cp0.manual.ts b/src/codepages/cp0.manual.ts index a26d42c..559a116 100644 --- a/src/codepages/cp0.manual.ts +++ b/src/codepages/cp0.manual.ts @@ -1,82 +1,81 @@ -import { Slice } from 'ton'; import { decompile } from '../disassembler'; import { Codepage } from '../structs/codepage'; const CP0Manual = new Codepage() CP0Manual.insertHex('0', 4, (slice) => { - let n = slice.readUintNumber(4) + let n = slice.loadUint(4) if (n == 0) { return `NOP` } return `s0 s${n} XCHG` }) CP0Manual.insertHex('1', 4, (slice) => { - let n = slice.readUintNumber(4) + let n = slice.loadUint(4) return `s1 s${n} XCHG` }) CP0Manual.insertHex('2', 4, (slice) => { - let n = slice.readUintNumber(4) + let n = slice.loadUint(4) return `s${n} PUSH` }) CP0Manual.insertHex('3', 4, (slice) => { - let value = slice.readUintNumber(4) + let value = slice.loadUint(4) return `s${value} POP` }) CP0Manual.insertHex('4', 4, (slice) => { - let i = slice.readUintNumber(4) - let j = slice.readUintNumber(4) - let k = slice.readUintNumber(4) + let i = slice.loadUint(4) + let j = slice.loadUint(4) + let k = slice.loadUint(4) return `s${i} s${j} s${k} XCHG3` }) CP0Manual.insertHex('50', 8, (slice) => { - let i = slice.readUintNumber(4) - let j = slice.readUintNumber(4) + let i = slice.loadUint(4) + let j = slice.loadUint(4) return `s${i} s${j} XCHG2` }) CP0Manual.insertHex('51', 8, (slice) => { - let i = slice.readUintNumber(4) - let j = slice.readUintNumber(4) + let i = slice.loadUint(4) + let j = slice.loadUint(4) return `s${i} s${j} XCPU` }) CP0Manual.insertHex('52', 8, (slice) => { - let i = slice.readUintNumber(4) - let j = slice.readUintNumber(4) + let i = slice.loadUint(4) + let j = slice.loadUint(4) return `s${i} s${j-1} PUXC` }) CP0Manual.insertHex('53', 8, (slice) => { - let args = slice.readUintNumber(8) + let args = slice.loadUint(8) let first = args >> 4 & 0xf let second = args & 0xf return `s${first} s${second} PUSH2` }) CP0Manual.insertHex('541', 12, (slice) => { - let i = slice.readUintNumber(4) - let j = slice.readUintNumber(4) - let k = slice.readUintNumber(4) + let i = slice.loadUint(4) + let j = slice.loadUint(4) + let k = slice.loadUint(4) return `s${i} s${j} s${k} XC2PU` }) CP0Manual.insertHex('59', 8, 'ROTREV') CP0Manual.insertHex('7', 4, (slice) => { - let x = slice.readIntNumber(4) + let x = slice.loadInt(4) return `${x} PUSHINT` }) CP0Manual.insertHex('80', 8, (slice) => { - let x = slice.readIntNumber(8) + let x = slice.loadInt(8) return `${x} PUSHINT` }) CP0Manual.insertHex('81', 8, (slice) => { - let x = slice.readIntNumber(16) + let x = slice.loadInt(16) return `${x} PUSHINT` }) CP0Manual.insertHex('82', 8, (slice) => { - let len = slice.readUintNumber(5) + let len = slice.loadUint(5) let n = 8 * len + 19 - let x = slice.readIntNumber(n) + let x = slice.loadInt(n) return `${x} PUSHINT` }) CP0Manual.insertHex('83', 8, (slice) => { - let x = slice.readUintNumber(8) + 1 + let x = slice.loadUint(8) + 1 return `${x} PUSHPOW2` }) CP0Manual.insertHex('84', 8, (slice) => { @@ -84,30 +83,30 @@ CP0Manual.insertHex('84', 8, (slice) => { return 'PUSHPOW2DEC'; }) CP0Manual.insertHex('8D', 8, (slice) => { - let r = slice.readUintNumber(3) - let len = slice.readUintNumber(7) + let r = slice.loadUint(3) + let len = slice.loadUint(7) let dataLen = 8 * len + 6 - let x = slice.readUint(dataLen) - return `${r} ${len} ${x.toString('hex')} PUSHSLICE` + let x = slice.loadUintBig(dataLen) + return `${r} ${len} ${x.toString(16)} PUSHSLICE` }) CP0Manual.insertHex('8E', 7, (slice, indent) => { - let args = slice.readUintNumber(9); + let args = slice.loadUint(9); let refs = (args >> 7) & 3; let dataBits = (args & 127) * 8; - return `<{\n${decompile(slice.readRef(), indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` + return `<{\n${decompile(slice.loadRef().beginParse(), indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` }) CP0Manual.insertHex('9', 4, (slice, indent) => { - let len = slice.readUintNumber(4) + let len = slice.loadUint(4) return `<{\n${decompile(slice, indent + 2)}${new Array(indent).fill(' ').join('')}}> PUSHCONT` }) CP0Manual.insertHex('A1', 8, 'SUB') CP0Manual.insertHex('A4', 8, 'INC') CP0Manual.insertHex('A9', 8, (slice) => { - let m = slice.readBit() - let s = slice.readUintNumber(2) - let c = slice.readBit() - let d = slice.readUintNumber(2) - let f = slice.readUintNumber(2) + let m = slice.loadBit() + let s = slice.loadUint(2) + let c = slice.loadBit() + let d = slice.loadUint(2) + let f = slice.loadUint(2) let opName = '' if (m) { opName += 'MUL' @@ -123,7 +122,7 @@ CP0Manual.insertHex('A9', 8, (slice) => { if (!c) { opName += ' s0' } else { - let shift = slice.readUintNumber(8) + 1 + let shift = slice.loadUint(8) + 1 opName += ` ${shift}` } } @@ -142,11 +141,11 @@ CP0Manual.insertHex('A9', 8, (slice) => { return opName }) CP0Manual.insertHex('AA', 8, (slice) => { - let cc = slice.readUintNumber(8) + let cc = slice.loadUint(8) return `${cc} LSHIFT` }) CP0Manual.insertHex('AB', 8, (slice) => { - let cc = slice.readUintNumber(8) + let cc = slice.loadUint(8) return `${cc+1} RSHIFT` }) CP0Manual.insertHex('AE', 8, 'POW2') @@ -169,7 +168,7 @@ CP0Manual.insertHex('C0', 8, (slice) => { CP0Manual.insertHex('C8', 8, 'NEWC') CP0Manual.insertHex('C9', 8, 'ENDC') CP0Manual.insertHex('CB', 8, (slice) => { - let c = slice.readUintNumber(8) + let c = slice.loadUint(8) return `${c} STU` }) CP0Manual.insertHex('CC', 8, 'STREF') @@ -177,11 +176,11 @@ CP0Manual.insertHex('CF16', 16, 'STSLICER') CP0Manual.insertHex('D0', 8, 'CTOS') CP0Manual.insertHex('D1', 8, 'ENDS') CP0Manual.insertHex('D2', 8, (slice) => { - let c = slice.readUintNumber(8) + let c = slice.loadUint(8) return `${c+1} LDI` }) CP0Manual.insertHex('D3', 8, (slice) => { - let c = slice.readUintNumber(8) + let c = slice.loadUint(8) return `${c+1} LDU` }) CP0Manual.insertHex('D4', 8, 'LDREF') @@ -189,7 +188,7 @@ CP0Manual.insertHex('D721', 16, 'SDSKIPFIRST') CP0Manual.insertHex('D74C', 16, 'PLDREF') CP0Manual.insertHex('D70B', 16, (slice) => { - let c = slice.readUintNumber(8) + let c = slice.loadUint(8) return `${c+1} PLDU` }) CP0Manual.insertHex('D718', 16, 'LDSLICEX') @@ -208,11 +207,11 @@ CP0Manual.insertHex('F2C8', 13, (slice) => { return `THROWARG` }) CP0Manual.insertHex('F24', 10, (slice) => { - let eCode = slice.readUint(6) + let eCode = slice.loadUintBig(6) return `${eCode} THROWIF` }) CP0Manual.insertHex('F28', 10, (slice) => { - let eCode = slice.readUint(6) + let eCode = slice.loadUintBig(6) return `${eCode} THROWIFNOT` }) CP0Manual.insertHex('F2FF', 16, 'TRY') @@ -227,9 +226,9 @@ CP0Manual.insertHex('FA00', 16, 'LDGRAMS') CP0Manual.insertHex('FF00', 16, 'SETCP0') CP0Manual.insertBin('111101001010', (slice) => { - let something = slice.readBit() - let something2 = slice.readBit() - let n = slice.readUintNumber(10) + let something = slice.loadBit() + let something2 = slice.loadBit() + let n = slice.loadUint(10) return `${n} DICTPUSHCONST` }) CP0Manual.insertHex('F4BC', 14, (slice) => { diff --git a/src/disassembler.spec.ts b/src/disassembler.spec.ts index f5e0421..8c0b419 100644 --- a/src/disassembler.spec.ts +++ b/src/disassembler.spec.ts @@ -1,85 +1,74 @@ -import { Address, Cell, TonClient } from 'ton' -import { fromCode } from './disassembler' +import { Address, Cell } from 'ton-core' +import { fromBoc, fromCode } from './disassembler' import { compileFift, compileFunc } from 'ton-compiler' +import { TonClient } from 'ton' +import * as fs from 'fs'; +async function fetchCodeOrSnapshot(addr: string): Promise { + const snapshotPath = __dirname + '/__snapshots__/' + addr + '.boc'; + if (fs.existsSync(snapshotPath)) { + return fs.readFileSync(snapshotPath); + } -it('should disassemble config', async () => { let client = new TonClient({ endpoint: 'https://scalable-api.tonwhales.com/jsonRPC' }) - let address = Address.parseFriendly('Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn').address - let state = await client.getContractState(address) - if (!state.code) { - console.error('code not found') - return - } - - let codeCell = Cell.fromBoc(state.code)[0] - console.log(fromCode(codeCell)) -}) - -it('should disassemble nft', async () => { - let client = new TonClient({ - endpoint: 'https://mainnet.tonhubapi.com/jsonRPC' - }) - let address = Address.parseFriendly('EQBmG4YwsdGsUHG46rL-_GtGxsUrdmn-8Tau1DKkzQMNsGaW').address + let address = Address.parseFriendly(addr).address let state = await client.getContractState(address) if (!state.code) { - console.error('code not found') - return + throw new Error('Code not found'); } + fs.writeFileSync(snapshotPath, state.code); - let codeCell = Cell.fromBoc(state.code)[0] - - console.log(fromCode(codeCell)) -}) - -it('should dump method', async () => { - let fiftCode = await compileFunc(` - () main() { + return state.code; +} - } - () owner() method_id { +describe('disassembler', () => { + beforeAll(() => { + process.env.DEBUG = process.env.DEBUG + ',tvm-disassembler' + }); - } - `) - let code = await compileFift(fiftCode); - let codeCell = Cell.fromBoc(code)[0] - - console.log(fromCode(codeCell)) -}) - -it('should disassemble elector', async () => { - let client = new TonClient({ - endpoint: 'https://mainnet.tonhubapi.com/jsonRPC' + it('should disassemble config', async () => { + let boc = await fetchCodeOrSnapshot('Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn'); + + expect(fromBoc(boc)).toMatchSnapshot(); }) - let address = Address.parseFriendly('Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF').address - let state = await client.getContractState(address) - if (!state.code) { - console.error('code not found') - return - } - - let codeCell = Cell.fromBoc(state.code)[0] - console.log(fromCode(codeCell)) -}) - - -it('should disassemble contract', async () => { - let client = new TonClient({ - endpoint: 'https://mainnet.tonhubapi.com/jsonRPC' + it('should disassemble nft', async () => { + let boc = await fetchCodeOrSnapshot('EQBmG4YwsdGsUHG46rL-_GtGxsUrdmn-8Tau1DKkzQMNsGaW'); + + expect(fromBoc(boc)).toMatchSnapshot(); }) - let address = Address.parseFriendly('EQBRrTk63wHpvreMs7_cDKWh6zrYmQcSBOjKz1i6GcbRTLZX').address - let state = await client.getContractState(address) - if (!state.code) { - console.error('code not found') - return - } - - let codeCell = Cell.fromBoc(state.code)[0] - console.log(fromCode(codeCell)) + it('should dump method', async () => { + let fiftCode = await compileFunc(` + () main() { + + } + + () owner() method_id { + + } + `) + let code = await compileFift(fiftCode); + let codeCell = Cell.fromBoc(code)[0] + + expect(fromCode(codeCell)).toMatchSnapshot(); + }) + + it('should disassemble elector', async () => { + // Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF + let boc = await fetchCodeOrSnapshot('Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF'); + + expect(fromBoc(boc)).toMatchSnapshot(); + }) + + + it('should disassemble contract', async () => { + let boc = await fetchCodeOrSnapshot('EQBRrTk63wHpvreMs7_cDKWh6zrYmQcSBOjKz1i6GcbRTLZX'); + + expect(fromBoc(boc)).toMatchSnapshot(); + }) }) \ No newline at end of file diff --git a/src/disassembler.ts b/src/disassembler.ts index a463a17..f439020 100644 --- a/src/disassembler.ts +++ b/src/disassembler.ts @@ -1,5 +1,4 @@ -import { BN } from 'bn.js'; -import { Cell, Slice } from 'ton' +import { beginCell, Cell, Dictionary, DictionaryValue, Slice } from 'ton-core'; import { CP0Auto } from './codepages/cp0.generated'; import { KnownMethods } from './consts/knownMethods'; import { Codepage } from './structs/codepage'; @@ -24,8 +23,9 @@ export function decompile(slice: Slice, indent?: number) { result += txt + '\n' }; let opCode = '' - while (((slice as any).bits as any).length > (slice as any).bits.currentOffset) { - let opCodePart = slice.readBit() + + while (slice.remainingBits > 0) { + let opCodePart = slice.loadBit(); opCode += opCodePart ? '1' : '0' let matches = codepage.find(opCode) @@ -36,10 +36,12 @@ export function decompile(slice: Slice, indent?: number) { continue; } if (matches.length == 0) { - let fullCell = new Cell(); - fullCell.bits.writeBitArray(Array.from(opCode).map(a => a == '0' ? false : true)); - fullCell.writeCell(slice.toCell()); - append(fullCell); + let fullCell = beginCell(); + for (let bit of Array.from(opCode).map(a => a == '0' ? false : true)) { + fullCell.storeBit(bit); + } + fullCell.storeSlice(slice); + append(fullCell.asCell()); continue; } @@ -52,22 +54,35 @@ export function decompile(slice: Slice, indent?: number) { append(opTxt); } - if (((slice as any).bits as any).length == (slice as any).bits.currentOffset && (slice as any).refs.length > 0) { - slice = slice.readRef() + if (slice.remainingBits === 0 && slice.remainingRefs > 0) { + slice = slice.loadRef().beginParse() } } return result; } -export function decompileMethodsMap(slice: Slice, indent?: number) { - let methodsMap = slice.readDict(19, (slice) => { +function createSliceValue(): DictionaryValue { + return { + serialize: (src, builder) => { + builder.storeSlice(src); + }, + parse: (src) => { + return src; + } + }; +} + +export function decompileMethodsMap(slice: Slice, keyLen: number, indent?: number) { + let methodsMap = slice.loadDictDirect(Dictionary.Keys.Int(keyLen), createSliceValue()); + let methodsMapDecompiled = new Map(); + for (let [key, cs] of methodsMap) { try { - return decompile(slice.clone(), (indent || 0) + 4); + methodsMapDecompiled.set(key, decompile(cs, (indent || 0) + 4)); } catch (e) { _isDebug() && console.error(e); - return slice.toCell().toString(' '.repeat((indent || 0) + 4)); + methodsMapDecompiled.set(key, cs.asCell().toString(' '.repeat((indent || 0) + 4))); } - }); + } let result = ''; const append = (txt: string) => { if (indent) { @@ -76,11 +91,8 @@ export function decompileMethodsMap(slice: Slice, indent?: number) { result += txt + '\n'; }; append('(:methods'); - indent = (indent || 0) + 2 - for (let [key, code] of methodsMap) { - let cell = new Cell(); - cell.bits.writeUint(new BN(key), 19); - let methodId = cell.beginParse().readIntNumber(19); + indent = (indent || 0) + 2; + for (let [methodId, code] of methodsMapDecompiled) { append(`${KnownMethods[methodId] ?? methodId}: \n${code}`); } result = result.slice(0, -1); // remove trailing newline @@ -92,7 +104,7 @@ export function decompileMethodsMap(slice: Slice, indent?: number) { export function fromCode(cell: Cell) { let slice = cell.beginParse() - let header = slice.readUintNumber(16) + let header = slice.loadUint(16) if (header !== 0xff00) { throw new Error('unsupported codepage'); } @@ -100,4 +112,10 @@ export function fromCode(cell: Cell) { let result = 'SETCP0\n' result += decompile(slice); return result; +} + +export function fromBoc(boc: Buffer) { + let cell = Cell.fromBoc(boc)[0]; + + return fromCode(cell); } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 63cc60c..33380e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1445,20 +1445,6 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:4.11.6": - version: 4.11.6 - resolution: "bn.js@npm:4.11.6" - checksum: db23047bf06fdf9cf74401c8e76bca9f55313c81df382247d2c753868b368562e69171716b81b7038ada8860af18346fd4bcd1cf9d4963f923fe8e54e61cb58a - languageName: node - linkType: hard - -"bn.js@npm:5.2.0": - version: 5.2.0 - resolution: "bn.js@npm:5.2.0" - checksum: 6117170393200f68b35a061ecbf55d01dd989302e7b3c798a3012354fa638d124f0b2f79e63f77be5556be80322a09c40339eda6413ba7468524c0b6d4b4cb7a - languageName: node - linkType: hard - "boxen@npm:^7.0.0": version: 7.0.1 resolution: "boxen@npm:7.0.1" @@ -2407,16 +2393,6 @@ __metadata: languageName: node linkType: hard -"ethjs-unit@npm:0.1.6": - version: 0.1.6 - resolution: "ethjs-unit@npm:0.1.6" - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - checksum: df6b4752ff7461a59a20219f4b1684c631ea601241c39660e3f6c6bd63c950189723841c22b3c6c0ebeb3c9fc99e0e803e3c613101206132603705fcbcf4def5 - languageName: node - linkType: hard - "execa@npm:6.1.0": version: 6.1.0 resolution: "execa@npm:6.1.0" @@ -3377,13 +3353,6 @@ __metadata: languageName: node linkType: hard -"is-hex-prefixed@npm:1.0.0": - version: 1.0.0 - resolution: "is-hex-prefixed@npm:1.0.0" - checksum: 5ac58e6e528fb029cc43140f6eeb380fad23d0041cc23154b87f7c9a1b728bcf05909974e47248fd0b7fcc11ba33cf7e58d64804883056fabd23e2b898be41de - languageName: node - linkType: hard - "is-installed-globally@npm:^0.4.0": version: 0.4.0 resolution: "is-installed-globally@npm:0.4.0" @@ -4802,16 +4771,6 @@ __metadata: languageName: node linkType: hard -"number-to-bn@npm:1.7.0": - version: 1.7.0 - resolution: "number-to-bn@npm:1.7.0" - dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - checksum: 5b8c9dbe7b49dc7a069e5f0ba4e197257c89db11463478cb002fee7a34dc8868636952bd9f6310e5fdf22b266e0e6dffb5f9537c741734718107e90ae59b3de4 - languageName: node - linkType: hard - "nwsapi@npm:^2.2.0": version: 2.2.2 resolution: "nwsapi@npm:2.2.2" @@ -5910,15 +5869,6 @@ __metadata: languageName: node linkType: hard -"strip-hex-prefix@npm:1.0.0": - version: 1.0.0 - resolution: "strip-hex-prefix@npm:1.0.0" - dependencies: - is-hex-prefixed: 1.0.0 - checksum: 4cafe7caee1d281d3694d14920fd5d3c11adf09371cef7e2ccedd5b83efd9e9bd2219b5d6ce6e809df6e0f437dc9d30db1192116580875698aad164a6d6b285b - languageName: node - linkType: hard - "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -6109,6 +6059,17 @@ __metadata: languageName: node linkType: hard +"ton-core@npm:^0.36.1": + version: 0.36.1 + resolution: "ton-core@npm:0.36.1" + dependencies: + symbol.inspect: 1.0.1 + peerDependencies: + ton-crypto: ">=3.2.0" + checksum: a46d2e6ccae2fb943025185c619164c4a3abf9fa0ceb70de6cb2c08fa37c28c2e3278b4a99c860c92f2b93f40108d3f5f4ea6faab2b9391a8c3188deb21f00be + languageName: node + linkType: hard + "ton-crypto-primitives@npm:2.0.0": version: 2.0.0 resolution: "ton-crypto-primitives@npm:2.0.0" @@ -6118,33 +6079,32 @@ __metadata: languageName: node linkType: hard -"ton-crypto@npm:2.1.0": - version: 2.1.0 - resolution: "ton-crypto@npm:2.1.0" +"ton-crypto@npm:^3.2.0": + version: 3.2.0 + resolution: "ton-crypto@npm:3.2.0" dependencies: jssha: 3.2.0 ton-crypto-primitives: 2.0.0 tweetnacl: 1.0.3 - checksum: 360c7dcd4692b802cc5a6a9bd1d7efde58f3f3adf0a3dbba3495f525998d2273efbedc28606ec7fbcbb0d16a73480541a4b810b461a228d0e72b3e4d0f406f1a + checksum: 5c4b077ce36f6d6583c6fee91be45ba88024cfb17927d2da8fce355f226dba559ba5dc91ee508b205c537d6dd6a34bfea17a26c2656ef80bd72f64d1a2604c45 languageName: node linkType: hard -"ton@npm:^12.3.3": - version: 12.3.3 - resolution: "ton@npm:12.3.3" +"ton@npm:^13.2.0": + version: 13.2.0 + resolution: "ton@npm:13.2.0" dependencies: axios: ^0.25.0 - bn.js: 5.2.0 dataloader: ^2.0.0 - ethjs-unit: 0.1.6 fp-ts: ^2.11.1 io-ts: ^2.2.16 io-ts-reporters: ^2.0.0 symbol.inspect: 1.0.1 teslabot: ^1.3.0 - ton-crypto: 2.1.0 - tweetnacl: 1.0.3 - checksum: 45794c58ecba70263ed5919c3828631d00263f537c922eefaa5707ddeef282f72f3bd134a8c4a7b30a8fa122445a91383572e2aa8a15cbb0bf1c83da67a90d76 + peerDependencies: + ton-core: ">=0.32.0" + ton-crypto: ">=3.2.0" + checksum: 70f3c39091c69a86ae4cf1123e3bb6eb91bb9436b07dfea9d7c7cf6ec2c7207217e37885975b396e8a64c12482d71092da6b1aae847b9cddadb485dd9d6d043a languageName: node linkType: hard @@ -6234,13 +6194,15 @@ __metadata: "@types/jest": ^27.4.0 jest: ^27.4.7 release-it: ^15.5.1 - ton: ^12.3.3 + ton: ^13.2.0 ton-compiler: ^1.0.0 + ton-core: ^0.36.1 + ton-crypto: ^3.2.0 ts-jest: ^27.1.3 tsc: ^2.0.3 typescript: ^4.5.5 peerDependencies: - ton: "*" + ton-core: ">=0.27.0" languageName: unknown linkType: soft