1
0
mirror of https://github.com/danog/toncontest.git synced 2024-11-30 04:29:14 +01:00
toncontest/wallet/wallet-code.fif
2019-10-15 16:17:12 +02:00

383 lines
5.5 KiB
Plaintext

"Asm.fif" include
// automatically generated from `/home/daniil/repos/contest/lib/crypto/smartcont/stdlib.fc` `wallet-code.fc`
PROGRAM{
DECLPROC ~collect_garbage
DECLPROC recv_internal
DECLPROC recv_external
85143 DECLMETHOD seqno
119659 DECLMETHOD getKey
66593 DECLMETHOD getId
124239 DECLMETHOD getPartials
113609 DECLMETHOD getPartialsByKeyId
125107 DECLMETHOD getPartialByKey
100959 DECLMETHOD getPartialByHash
~collect_garbage PROC:<{
-1 PUSHINT
UNTIL:<{
OVER
8 PUSHPOW2
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT
DUP
IF:<{
s0 s2 XCHG
4 PUSHINT
SDSKIPFIRST
SKIPDICT
32 PLDU
NOW
LEQ
IF:<{
8 PUSHPOW2
s1 s3 s3 PUXC2
DICTUDEL
DROP
}>ELSE<{
s0 s2 XCHG
}>
}>ELSE<{
2SWAP
DROP
}>
SWAP
NOT
s1 s2 XCHG
}>
DROP
}>
recv_internal PROC:<{
DROP
}>
recv_external PROC:<{
1 LDU
SWAP
IFJMP:<{
1 LDU
DROP
32 THROWIF
ACCEPT
c4 PUSH
CTOS
32 LDU
4 LDU
LDDICT
LDDICT
ENDS
NEWC
s1 s4 XCHG
32 STU
s1 s2 XCHG
4 STU
STDICT
STDICT
ENDC
c4 POP
}>
DUP
1 PLDU
33 THROWIFNOT
LDDICT
DUP
32 LDU
32 LDU
s2 PUSH
NOW
LEQ
34 THROWIF
s0 s3 XCHG
HASHSU
c4 PUSH
CTOS
32 LDU
4 LDU
LDDICT
LDDICT
ENDS
0 PUSHINT
NEWDICT
s5 s7 PUSH2
EQUAL
IF:<{
s0 s5 XCHG
INC
}>ELSE<{
2DROP
s4 s0 PUSH2
8 PUSHPOW2
DICTUGET
NULLSWAPIFNOT
35 THROWIFNOT
4 LDU
PLDDICT
s0 s5 XCHG
}>
ACCEPT
-1 PUSHINT
UNTIL:<{
s11 PUSH
4 PUSHINT
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT
DUP
IF:<{
DROP
s0 s5 PUSH2
4 PUSHINT
DICTUGET
NULLSWAPIFNOT
DUP
36 THROWIFNOT
s3 s(-1) s0 PUXC2
256 PLDU
s11 s2 s2 PUXC2
CHKSIGNU
37 THROWIFNOT
s1 s8 PUSH2
4 PUSHINT
DICTUGET
NULLSWAPIFNOT
NIP
NOT
IF:<{
s1 s2 XCHG
4 PUSHINT
s3 s9 s9 PUXC2
DICTUSET
s0 s3 XCHG
INC
}>ELSE<{
s0 s8 XCHG
s1 s4 s4 XCHG3
DROP
}>
}>ELSE<{
s0 s8 XCHG
s1 s4 s4 XCHG3
DROP
}>
s0 s7 XCHG
NOT
s3 s7 XCHG
}>
DROP
s10 POP
s0 s3 PUSH2
GEQ
IF:<{
DROP
s3 POP
s4 POP
s4 POP
s0 s4 XCHG
1 LDU
SWAP
IF:<{
s2 POP
s2 POP
4 LDU
LDDICT
LDREF
SWAP
SETCODE
}>ELSE<{
8 LDU
LDREF
s0 s2 XCHG
SENDRAWMSG
s3 s3 s0 XCHG3
}>
ENDS
s2 s3 XCHG2
8 PUSHPOW2
DICTUDEL
DROP
}>ELSE<{
NEWC
4 STU
s1 s4 XCHG
STDICT
s1 s6 XCHG
32 STU
s1 s4 XCHG
32 STU
s0 s5 XCHG2
STSLICER
s0 s1 s4 XCHG3
8 PUSHPOW2
DICTUSETB
s1 s2 XCHG
}>
~collect_garbage CALLDICT
NEWC
s1 s4 XCHG
32 STU
4 STU
STDICT
STDICT
ENDC
c4 POP
}>
seqno PROC:<{
c4 PUSH
CTOS
32 PLDU
}>
getKey PROC:<{
c4 PUSH
CTOS
36 PUSHINT
SDSKIPFIRST
PLDDICT
4 PUSHINT
DICTUGET
NULLSWAPIFNOT
DUP
NOT
IFJMP:<{
NIP
0 PUSHINT
}>
DROP
-1 PUSHINT
SWAP
256 PLDU
}>
getId PROC:<{
c4 PUSH
CTOS
36 PUSHINT
SDSKIPFIRST
PLDDICT
-1 PUSHINT
0 PUSHINT
UNTIL:<{
s1 s2 XCPU
4 PUSHINT
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT
DUP
IF:<{
s3 POP
SWAP
256 PLDU
s4 PUSH
EQUAL
}>ELSE<{
s1 s3 s3 XCHG3
DROP
}>
s0 s2 XCHG
NOT
s2 PUSH
OR
s1 s2 XCHG
}>
s2 POP
s2 POP
IFJMP:<{
-1 PUSHINT
SWAP
}>
DROP
0 PUSHINT
DUP
}>
getPartials PROC:<{
c4 PUSH
CTOS
36 PUSHINT
SDSKIPFIRST
SKIPDICT
PLDDICT
}>
getPartialsByKeyId PROC:<{
c4 PUSH
CTOS
36 PUSHINT
SDSKIPFIRST
SKIPDICT
PLDDICT
NEWDICT
-1 PUSHINT
0 PUSHINT
UNTIL:<{
s1 s3 XCPU
8 PUSHPOW2
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT
DUP
IF:<{
s2 PUSH
4 PUSHINT
SDSKIPFIRST
PLDDICT
s7 s(-1) PUXC
4 PUSHINT
DICTUGET
NULLSWAPIFNOT
NIP
IF:<{
s0 s3 XCHG
INC
NEWC
s0 s3 XCHG2
STSLICER
SWAP
8 PUSHPOW2
s1 s5 s5 PUXC2
DICTUSETB
}>ELSE<{
s3 s4 s3 XCHG3
DROP
}>
}>ELSE<{
s3 s4 s3 XCHG3
DROP
}>
s0 s2 XCHG
NOT
s2 s3 XCHG
}>
NIP
s2 POP
s2 POP
SWAP
}>
getPartialByKey PROC:<{
getId CALLDICT
SWAP
IFNOTJMP:<{
DROP
0 PUSHINT
NEWDICT
}>
getPartialsByKeyId CALLDICT
}>
getPartialByHash PROC:<{
c4 PUSH
CTOS
36 PUSHINT
SDSKIPFIRST
SKIPDICT
PLDDICT
8 PUSHPOW2
DICTUGET
NULLSWAPIFNOT
DUP
IFNOTJMP:<{
2DROP
0 PUSHINT
NEWC
ENDC
}>
NEWC
ROT
STSLICER
ENDC
}>
}END>c