.version sol 0.62.0

.macro constructor
DROP
GETGLOB 2
ISNULL
IFREF {
	CALL $c4_to_c7_with_init_storage$
}
GETGLOB 6
THROWIF 51
ENDS
.loc ../contracts/test/LockliftWallet.tsol, 7
ACCEPT
.loc ../contracts/test/LockliftWallet.tsol, 0
CALLREF {
	CALL $c7_to_c4$
}
THROW 0

.macro sendTransaction
DROP
GETGLOB 6
THROWIFNOT 76
GETGLOB 2
ISNULL
IFREF {
	CALL $c4_to_c7$
}
.loc ../contracts/test/LockliftWallet.tsol, 10
OVER
PUSHCONT {
	LDREF
	ENDS
	CTOS
}
IF
LDMSGADDR
LDU 128
LDI 1
LDU 8
LDREF
ENDS
.loc ../contracts/test/LockliftWallet.tsol, 0
CALLREF {
	CALL $sendTransaction_c96c9ed1_internal_macro$
}
IFREF {
	CALL $c7_to_c4$
}
THROW 0

.globl	sendTransaction_c96c9ed1_internal
.type	sendTransaction_c96c9ed1_internal, @function
CALL $sendTransaction_c96c9ed1_internal_macro$

.macro sendTransaction_c96c9ed1_internal_macro
.loc ../contracts/test/LockliftWallet.tsol, 17
ACCEPT
.loc ../contracts/test/LockliftWallet.tsol, 18
ROLL 3
BLKSWAP 2, 3
NEWC
STSLICECONST x6_
STI 1
STSLICECONST x1_
STSLICE
SWAP
STGRAMS
PUSHINT 1
STUR 107
STREF
ENDC
SWAP
SENDRAWMSG
.loc ../contracts/test/LockliftWallet.tsol, 0

.macro c4_to_c7
PUSHROOT
CTOS
LDU 256 ; pubkey c4
LDU 64 ; pubkey timestamp c4
LDU 1 ; ctor flag
NIP
ENDS
SETGLOB 3
SETGLOB 2

.macro c4_to_c7_with_init_storage
PUSHROOT
CTOS
SBITS
GTINT 1
PUSHCONT {
	PUSHINT 0
	PUSHROOT
	CTOS
	PLDDICT ; D
	PUSHINT 64
	DICTUGET
	THROWIFNOT 61
	PLDU 256
	SETGLOB 2
	PUSHINT 0 ; timestamp
	SETGLOB 3
}
IFREFELSE {
	CALL $c4_to_c7$
}

.macro c7_to_c4
GETGLOB 3
GETGLOB 2
NEWC
STU 256
STU 64
STONE
ENDC
POPROOT

.macro upd_only_time_in_c4
PUSHROOT
CTOS
LDU 256
LDU 64
NIP
GETGLOB 3
ROT
NEWC
STU 256
STU 64
STSLICE
ENDC
POPROOT

.internal-alias :main_internal, 0
.internal :main_internal
PUSHROOT
CTOS
SBITS
NEQINT 1
SETGLOB 6
PUSH S2
CTOS
PLDU 4
MODPOW2 1
IFRET
OVER
SEMPTY ; isEmpty
IFJMPREF {
	GETGLOB 6
	THROWIFNOT 76
}
OVER
LDUQ 32  ; [funcId] body' ok
THROWIFNOT 60
OVER
IFNOTJMPREF {
	GETGLOB 6
	THROWIFNOT 76
}
SWAP
CALLREF {
	CALL $public_function_selector$
}
THROW 60

.internal-alias :main_external, -1
.internal :main_external
PUSHROOT
CTOS
SBITS
NEQINT 1
SETGLOB 6
OVER
CALLREF {
	CALL $c4_to_c7_with_init_storage$
}
LDU 1 ; haveSign msgSlice
SWAP
PUSHCONT {
	PUSHPOW2 9
	LDSLICEX ; signatureSlice msgSlice
	DUP
	HASHSU ; signatureSlice msgSlice hashMsgSlice
	SWAP
	LDU 1 ; signatureSlice hashMsgSlice hasPubkey msgSlice
	SWAP
	PUSHCONT {
		LDU 256 ; signatureSlice hashMsgSlice pubkey msgSlice
		XCHG S3
		SWAP
	}
	PUSHCONT {
		XCHG S2
		GETGLOB 2
	}
	IFELSE
	CHKSIGNU ; msgSlice isSigned
	THROWIFNOT 40
}
PUSHCONT {
	LDU 1 ; hasPubkey msgSlice
	SWAP
	THROWIF 58
}
IFELSE
LDU 64 ; timestamp msgSlice
SWAP
CALL $replay_protection_macro$
LDU 32 ; expireAt msgSlice
SWAP
NOW ; msgSlice expireAt now
GREATER ; msgSlice expireAt>now
THROWIFNOT 57
LDU 32 ; funcId body
SWAP
CALLREF {
	CALL $public_function_selector$
}
THROW 60

.macro public_function_selector
DUP
PUSHINT 1290691692
EQUAL
IFJMPREF {
	CALL $sendTransaction$
}
DUP
PUSHINT 1756716863
EQUAL
IFJMPREF {
	CALL $constructor$
}

