x
69
parameter (or (unit %default) (or (option %set_delegate key_hash) (pair %withdraw (address %recipient) (mutez %amount))));storage address;code { CAST (pair (or unit (or (option key_hash) (pair address mutez))) address) ; UNPAIR ; IF_LEFT { DROP ; DUP ; CONTRACT %set_vault_balance mutez ; IF_NONE { PUSH int 70 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; BALANCE ; TRANSFER_TOKENS ; CONS } { IF_LEFT { SWAP ; DUP ; DUG 2 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; SET_DELEGATE ; NIL operation ; SWAP ; CONS ; SELF_ADDRESS ; CONTRACT unit ; IF_NONE { PUSH int 63 ; FAILWITH } {} ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { SWAP ; DUP ; DUG 2 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; PUSH nat 0 ; PUSH mutez 1 ; DUP 3 ; CDR ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; COMPARE ; GT ; IF { DUP ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 89 ; FAILWITH } {} ; NIL operation ; SWAP ; DIG 2 ; CDR ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }