mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			341 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			341 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
"Asm.fif" include
 | 
						|
// automatically generated from `../../../crypto/smartcont/stdlib.fc` `storage-provider.fc` incl:`constants.fc` 
 | 
						|
PROGRAM{
 | 
						|
  DECLPROC calculate_address_by_stateinit
 | 
						|
  DECLPROC build_storage_contract_stateinit
 | 
						|
  DECLPROC deploy_storage_contract
 | 
						|
  DECLPROC recv_internal
 | 
						|
  DECLPROC recv_external
 | 
						|
  85143 DECLMETHOD seqno
 | 
						|
  78748 DECLMETHOD get_public_key
 | 
						|
  130271 DECLMETHOD get_wallet_params
 | 
						|
  104346 DECLMETHOD get_storage_params
 | 
						|
  119729 DECLMETHOD get_storage_contract_address
 | 
						|
  calculate_address_by_stateinit PROC:<{
 | 
						|
    //  state_init
 | 
						|
    HASHCU	//  _1
 | 
						|
    0 PUSHINT	//  _1 _2=0
 | 
						|
    4 PUSHINT	//  _1 _2=0 _3=4
 | 
						|
    NEWC	//  _1 _2=0 _3=4 _4
 | 
						|
    3 STU	//  _1 _2=0 _6
 | 
						|
    8 STI	//  _1 _8
 | 
						|
    256 STU	//  _10
 | 
						|
    ENDC	//  _11
 | 
						|
    CTOS	//  _12
 | 
						|
  }>
 | 
						|
  build_storage_contract_stateinit PROC:<{
 | 
						|
    //  merkle_hash file_size rate_per_mb_day max_span client torrent_hash
 | 
						|
    NEWC
 | 
						|
    ROT	//  merkle_hash file_size rate_per_mb_day max_span torrent_hash _7 client
 | 
						|
    STSLICER	//  merkle_hash file_size rate_per_mb_day max_span torrent_hash _8
 | 
						|
    256 STU	//  merkle_hash file_size rate_per_mb_day max_span _10
 | 
						|
    ENDC	//  merkle_hash file_size rate_per_mb_day max_span _11
 | 
						|
    NOW	//  merkle_hash file_size rate_per_mb_day max_span _11 _12
 | 
						|
    0 PUSHINT	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0
 | 
						|
    DUP	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _14=0
 | 
						|
    NEWC	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _14=0 _15
 | 
						|
    1 STI	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _17
 | 
						|
    OVER	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _17 _18=0
 | 
						|
    STGRAMS	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _19
 | 
						|
    MYADDR	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _19 _20
 | 
						|
    STSLICER	//  merkle_hash file_size rate_per_mb_day max_span _11 _12 _13=0 _21
 | 
						|
    s1 s7 XCHG	//  _13=0 file_size rate_per_mb_day max_span _11 _12 merkle_hash _21
 | 
						|
    256 STU	//  _13=0 file_size rate_per_mb_day max_span _11 _12 _23
 | 
						|
    s1 s5 XCHG	//  _13=0 _12 rate_per_mb_day max_span _11 file_size _23
 | 
						|
    64 STU	//  _13=0 _12 rate_per_mb_day max_span _11 _25
 | 
						|
    s1 s5 XCHG	//  _11 _12 rate_per_mb_day max_span _13=0 _25
 | 
						|
    64 STU	//  _11 _12 rate_per_mb_day max_span _27
 | 
						|
    ROT	//  _11 _12 max_span _27 rate_per_mb_day
 | 
						|
    STGRAMS	//  _11 _12 max_span _28
 | 
						|
    32 STU	//  _11 _12 _30
 | 
						|
    32 STU	//  _11 _32
 | 
						|
    STREF	//  _33
 | 
						|
    ENDC	//  data
 | 
						|
    0 PUSHINT	//  data _36=0
 | 
						|
     B{B5EE9C72010213010002FD000114FF00F4A413F4BCF2C80B0102016202030202CE04050201200D0E020120060700115D74CD0FA40D3FF30804E1007434C0C05C6C2497C0F83E900C0871C023A0D6F6CF380074C7C8700023A117C0F6CF3834CFC8A084391D237C6EA3AD4120829896802876CF3B51343C00E0842FDEF4305C20063232C1540133C5A0824C4B403E8084F2DA84B2C7D48832CFF2FFF25C3EC0244D388860841E8D85A22EA008080809006F35CE6CE4D7C11C3834C1C070C0E4D7C11C3834FFC12F64D7C0DC3800B50C1C25A010086B092E64693A0CC06AC140BD039BE84C645FF81C20002CED44D0D200FA0003A001C8CA0001FA0201CF16C9ED5403E68E4FED44D0D200FA00FA4003B3F2E3EF5350C705F2E1917FC8CA0058FA0201CF1621CF16C9ED54F003F8258210D4CAEDCD708018C8CB055005CF168209312D00FA0214CB6A13CB1F12CB3FCBFFC970FB00DE21821079F937EABAE30221821046ED2E94BA9130E30D8210419D5D4DBA915BE30D0A0B0C00EA10235F03ED44D0D200FA00FA40F0035352C7055162C70516B1F2E191F8258210B6236D63708018C8CB055004CF165005FA0212CB6A13CB1F12CB3F5230CBFFC902B39730318100A0FB00E0018040FB00F8258210B6236D63708018C8CB055004CF1623FA0213CB6A12CB1FCB3FCBFFC98100A0FB000092ED44D0D200FA00FA403002F2E3EB5341C705F2E19120C200998208989680A072FB029130E28210A91BAF56708018C8CB055003CF168209312D00FA0212CB6ACB1FCB3FC98100A0FB0000FA01D430ED44D0D200FA00FA40D3FFD33FD33FFA00D31FD31FD43009F2E3EB53A6C705F2E191544540525BF001F2E3EA22F811F8235003A128B6085331A8018102A3AA1AA984067007A116B609F8237FC8CA0058FA025005CF1613CBFFCB3FCB3F58FA0213CB1F12CB1FCCC9ED54708018C8CB0558CF16CB6EC98042FB000201200F100011BEE6576A2686B8500402012011120033B9241ED44D0D200FA00FA40D3FFD33FD33FFA00D31FD31FF00380017B6E4F0402A483DA87B0D9430001BB7CA50402A483DA87B0B664D8A70} B>boc PUSHREF 	//  data _36=0 _37
 | 
						|
    OVER	//  data _36=0 _37 _38=0
 | 
						|
    NEWC	//  data _36=0 _37 _38=0 _39
 | 
						|
    2 STU	//  data _36=0 _37 _41
 | 
						|
    STOPTREF	//  data _36=0 _42
 | 
						|
    s1 s2 XCHG	//  _36=0 data _42
 | 
						|
    STOPTREF	//  _36=0 _43
 | 
						|
    1 STU	//  _45
 | 
						|
    ENDC	//  state_init
 | 
						|
  }>
 | 
						|
  deploy_storage_contract PROC:<{
 | 
						|
    //  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span
 | 
						|
    c4 PUSH	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _8
 | 
						|
    CTOS	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span ds
 | 
						|
    320 PUSHINT	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span ds _21
 | 
						|
    LDSLICEX	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _91 _90
 | 
						|
    NIP	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span ds
 | 
						|
    1 LDI	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _23 ds
 | 
						|
    LDGRAMS	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _23 _26 ds
 | 
						|
    32 LDU	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _23 _26 _28 ds
 | 
						|
    64 LDU	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _23 _26 _28 _31 ds
 | 
						|
    64 LDU	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span _23 _26 _28 _31 _101 _100
 | 
						|
    DROP	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span accept_new_contracts? rate_per_mb_day max_span minimal_file_size maximal_file_size
 | 
						|
    s0 s4 XCHG	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span maximal_file_size rate_per_mb_day max_span minimal_file_size accept_new_contracts?
 | 
						|
    1006 THROWIFNOT
 | 
						|
    s8 s(-1) PUXC	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span maximal_file_size rate_per_mb_day max_span file_size minimal_file_size
 | 
						|
    GEQ	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span maximal_file_size rate_per_mb_day max_span _40
 | 
						|
    1004 THROWIFNOT
 | 
						|
    s7 s2 PUXC	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span max_span rate_per_mb_day file_size maximal_file_size
 | 
						|
    LEQ	//  client query_id file_size merkle_hash torrent_hash expected_rate expected_max_span max_span rate_per_mb_day _43
 | 
						|
    1005 THROWIFNOT
 | 
						|
    s3 s3 XCPU	//  client query_id file_size merkle_hash torrent_hash rate_per_mb_day expected_max_span max_span expected_rate rate_per_mb_day
 | 
						|
    EQUAL	//  client query_id file_size merkle_hash torrent_hash rate_per_mb_day expected_max_span max_span _46
 | 
						|
    1009 THROWIFNOT
 | 
						|
    TUCK	//  client query_id file_size merkle_hash torrent_hash rate_per_mb_day max_span expected_max_span max_span
 | 
						|
    EQUAL	//  client query_id file_size merkle_hash torrent_hash rate_per_mb_day max_span _49
 | 
						|
    1009 THROWIFNOT
 | 
						|
    2SWAP
 | 
						|
    s1 s5 XCHG
 | 
						|
    s1 s6 XCHG	//  query_id merkle_hash file_size rate_per_mb_day max_span client torrent_hash
 | 
						|
    build_storage_contract_stateinit CALLDICT	//  query_id state_init
 | 
						|
    3832843761 PUSHINT	//  query_id state_init _54=3832843761
 | 
						|
    6 PUSHINT	//  query_id state_init _54=3832843761 _57
 | 
						|
    24 PUSHINT	//  query_id state_init _54=3832843761 _57 _58=24
 | 
						|
    NEWC	//  query_id state_init _54=3832843761 _57 _58=24 _59
 | 
						|
    6 STU	//  query_id state_init _54=3832843761 _57 _61
 | 
						|
    s3 PUSH	//  query_id state_init _54=3832843761 _57 _61 state_init
 | 
						|
    calculate_address_by_stateinit CALLDICT	//  query_id state_init _54=3832843761 _57 _61 _62
 | 
						|
    STSLICER	//  query_id state_init _54=3832843761 _57 _63
 | 
						|
    0 PUSHINT	//  query_id state_init _54=3832843761 _57 _63 _64=0
 | 
						|
    STGRAMS	//  query_id state_init _54=3832843761 _57 _65
 | 
						|
    108 STU	//  query_id state_init _54=3832843761 _81
 | 
						|
    s1 s2 XCHG	//  query_id _54=3832843761 state_init _81
 | 
						|
    STREF	//  query_id _54=3832843761 _82
 | 
						|
    32 STU	//  query_id _84
 | 
						|
    64 STU	//  _86
 | 
						|
    ENDC	//  msg
 | 
						|
    64 PUSHINT	//  msg _88=64
 | 
						|
    SENDRAWMSG
 | 
						|
  }>
 | 
						|
  recv_internal PROC:<{
 | 
						|
    c2 SAVE
 | 
						|
    SAMEALTSAVE	//  msg_value in_msg_full in_msg_body
 | 
						|
    SWAP	//  msg_value in_msg_body in_msg_full
 | 
						|
    CTOS	//  msg_value in_msg_body cs
 | 
						|
    4 LDU	//  msg_value in_msg_body flags cs
 | 
						|
    SWAP
 | 
						|
    1 PUSHINT	//  msg_value in_msg_body cs flags _9=1
 | 
						|
    AND	//  msg_value in_msg_body cs _10
 | 
						|
    s2 PUSH	//  msg_value in_msg_body cs _10 in_msg_body
 | 
						|
    SEMPTY	//  msg_value in_msg_body cs _10 _11
 | 
						|
    OR	//  msg_value in_msg_body cs _12
 | 
						|
    IFJMP:<{	//  msg_value in_msg_body cs
 | 
						|
      3 BLKDROP	// 
 | 
						|
    }>	//  msg_value in_msg_body cs
 | 
						|
    LDMSGADDR	//  msg_value in_msg_body _141 _140
 | 
						|
    DROP	//  msg_value in_msg_body sender_address
 | 
						|
    SWAP	//  msg_value sender_address in_msg_body
 | 
						|
    32 LDU	//  msg_value sender_address op in_msg_body
 | 
						|
    OVER	//  msg_value sender_address op in_msg_body op
 | 
						|
    0 EQINT	//  msg_value sender_address op in_msg_body _21
 | 
						|
    IFJMP:<{	//  msg_value sender_address op in_msg_body
 | 
						|
      4 BLKDROP	// 
 | 
						|
    }>	//  msg_value sender_address op in_msg_body
 | 
						|
    64 LDU	//  msg_value sender_address op query_id in_msg_body
 | 
						|
    s2 PUSH
 | 
						|
    276580847 PUSHINT	//  msg_value sender_address op query_id in_msg_body op _26=276580847
 | 
						|
    EQUAL	//  msg_value sender_address op query_id in_msg_body _27
 | 
						|
    IFJMP:<{	//  msg_value sender_address op query_id in_msg_body
 | 
						|
      s2 POP	//  msg_value sender_address in_msg_body query_id
 | 
						|
      s0 s3 XCHG
 | 
						|
      60000000 PUSHINT	//  query_id sender_address in_msg_body msg_value _29=60000000
 | 
						|
      GEQ	//  query_id sender_address in_msg_body _30
 | 
						|
      1001 THROWIFNOT
 | 
						|
      LDREF	//  query_id sender_address torrent_info in_msg_body
 | 
						|
      OVER	//  query_id sender_address torrent_info in_msg_body torrent_info
 | 
						|
      HASHCU	//  query_id sender_address torrent_info in_msg_body torrent_hash
 | 
						|
      s0 s2 XCHG	//  query_id sender_address torrent_hash in_msg_body torrent_info
 | 
						|
      CTOS	//  query_id sender_address torrent_hash in_msg_body info_cs
 | 
						|
      32 PUSHINT	//  query_id sender_address torrent_hash in_msg_body info_cs _40=32
 | 
						|
      SDSKIPFIRST	//  query_id sender_address torrent_hash in_msg_body info_cs
 | 
						|
      64 LDU	//  query_id sender_address torrent_hash in_msg_body _149 _148
 | 
						|
      DROP	//  query_id sender_address torrent_hash in_msg_body file_size
 | 
						|
      SWAP	//  query_id sender_address torrent_hash file_size in_msg_body
 | 
						|
      256 LDU	//  query_id sender_address torrent_hash file_size merkle_hash in_msg_body
 | 
						|
      LDGRAMS	//  query_id sender_address torrent_hash file_size merkle_hash expected_rate in_msg_body
 | 
						|
      32 LDU	//  query_id sender_address torrent_hash file_size merkle_hash expected_rate _155 _154
 | 
						|
      DROP	//  query_id sender_address torrent_hash file_size merkle_hash expected_rate expected_max_span
 | 
						|
      s5 s6 XCHG
 | 
						|
      s3 s4 XCHG
 | 
						|
      s2 s3 XCHG	//  sender_address query_id file_size merkle_hash torrent_hash expected_rate expected_max_span
 | 
						|
      deploy_storage_contract CALLDICT
 | 
						|
    }>	//  msg_value sender_address op query_id in_msg_body
 | 
						|
    NIP
 | 
						|
    s3 POP	//  in_msg_body sender_address op
 | 
						|
    DUP
 | 
						|
    3055775075 PUSHINT	//  in_msg_body sender_address op op _58=3055775075
 | 
						|
    EQUAL	//  in_msg_body sender_address op _59
 | 
						|
    IFJMP:<{	//  in_msg_body sender_address op
 | 
						|
      3 BLKDROP	// 
 | 
						|
    }>	//  in_msg_body sender_address op
 | 
						|
    DUP
 | 
						|
    1408453846 PUSHINT	//  in_msg_body sender_address op op _60=1408453846
 | 
						|
    EQUAL	//  in_msg_body sender_address op _61
 | 
						|
    IF:<{	//  in_msg_body sender_address op
 | 
						|
      MYADDR	//  in_msg_body sender_address op _62
 | 
						|
      s2 PUSH	//  in_msg_body sender_address op _62 sender_address
 | 
						|
      SDEQ	//  in_msg_body sender_address op _63
 | 
						|
      NOT	//  in_msg_body sender_address op _64
 | 
						|
      IFJMP:<{	//  in_msg_body sender_address op
 | 
						|
        3 BLKDROP	// 
 | 
						|
        RETALT
 | 
						|
      }>	//  in_msg_body sender_address op
 | 
						|
      c4 PUSH	//  in_msg_body sender_address op _66
 | 
						|
      CTOS	//  in_msg_body sender_address op ds
 | 
						|
      64 LDSLICE	//  in_msg_body sender_address op _71 ds
 | 
						|
      256 LDU	//  in_msg_body sender_address op _71 _159 _158
 | 
						|
      NIP	//  in_msg_body sender_address op seqno_subwallet non_wallet_data
 | 
						|
      s0 s4 XCHG	//  non_wallet_data sender_address op seqno_subwallet in_msg_body
 | 
						|
      256 LDU	//  non_wallet_data sender_address op seqno_subwallet new_pubkey in_msg_body
 | 
						|
      NEWC	//  non_wallet_data sender_address op seqno_subwallet new_pubkey in_msg_body _83
 | 
						|
      s0 s3 XCHG2	//  non_wallet_data sender_address op in_msg_body new_pubkey _83 seqno_subwallet
 | 
						|
      STSLICER	//  non_wallet_data sender_address op in_msg_body new_pubkey _84
 | 
						|
      256 STU	//  non_wallet_data sender_address op in_msg_body _86
 | 
						|
      s0 s4 XCHG2	//  in_msg_body sender_address op _86 non_wallet_data
 | 
						|
      STSLICER	//  in_msg_body sender_address op _87
 | 
						|
      ENDC	//  in_msg_body sender_address op _88
 | 
						|
      c4 POP
 | 
						|
    }>	//  in_msg_body sender_address op
 | 
						|
    1422651803 PUSHINT	//  in_msg_body sender_address op _90=1422651803
 | 
						|
    EQUAL	//  in_msg_body sender_address _91
 | 
						|
    IF:<{	//  in_msg_body sender_address
 | 
						|
      MYADDR	//  in_msg_body sender_address _92
 | 
						|
      SWAP	//  in_msg_body _92 sender_address
 | 
						|
      SDEQ	//  in_msg_body _93
 | 
						|
      NOT	//  in_msg_body _94
 | 
						|
      IFJMP:<{	//  in_msg_body
 | 
						|
        DROP	// 
 | 
						|
        RETALT
 | 
						|
      }>	//  in_msg_body
 | 
						|
      c4 PUSH	//  in_msg_body _96
 | 
						|
      CTOS	//  in_msg_body ds
 | 
						|
      320 PUSHINT	//  in_msg_body ds _104
 | 
						|
      LDSLICEX	//  in_msg_body _163 _162
 | 
						|
      DROP	//  in_msg_body wallet_data
 | 
						|
      SWAP	//  wallet_data in_msg_body
 | 
						|
      1 LDI	//  wallet_data _111 in_msg_body
 | 
						|
      LDGRAMS	//  wallet_data _111 _114 in_msg_body
 | 
						|
      32 LDU	//  wallet_data _111 _114 _116 in_msg_body
 | 
						|
      64 LDU	//  wallet_data _111 _114 _116 _119 in_msg_body
 | 
						|
      64 LDU	//  wallet_data _111 _114 _116 _119 _173 _172
 | 
						|
      DROP	//  wallet_data accept_new_contracts? rate_per_mb_day max_span minimal_file_size maximal_file_size
 | 
						|
      NEWC	//  wallet_data accept_new_contracts? rate_per_mb_day max_span minimal_file_size maximal_file_size _125
 | 
						|
      s0 s6 XCHG2	//  maximal_file_size accept_new_contracts? rate_per_mb_day max_span minimal_file_size _125 wallet_data
 | 
						|
      STSLICER	//  maximal_file_size accept_new_contracts? rate_per_mb_day max_span minimal_file_size _126
 | 
						|
      s1 s4 XCHG	//  maximal_file_size minimal_file_size rate_per_mb_day max_span accept_new_contracts? _126
 | 
						|
      1 STI	//  maximal_file_size minimal_file_size rate_per_mb_day max_span _128
 | 
						|
      ROT	//  maximal_file_size minimal_file_size max_span _128 rate_per_mb_day
 | 
						|
      STGRAMS	//  maximal_file_size minimal_file_size max_span _129
 | 
						|
      32 STU	//  maximal_file_size minimal_file_size _131
 | 
						|
      64 STU	//  maximal_file_size _133
 | 
						|
      64 STU	//  _135
 | 
						|
      ENDC	//  _136
 | 
						|
      c4 POP
 | 
						|
    }>ELSE<{
 | 
						|
      2DROP	// 
 | 
						|
    }>
 | 
						|
  }>
 | 
						|
  recv_external PROC:<{
 | 
						|
    //  in_msg
 | 
						|
    9 PUSHPOW2	//  in_msg _3=512
 | 
						|
    LDSLICEX	//  signature in_msg
 | 
						|
    DUP	//  signature in_msg cs
 | 
						|
    32 LDU	//  signature in_msg _9 cs
 | 
						|
    32 LDU	//  signature in_msg _9 _12 cs
 | 
						|
    32 LDU	//  signature in_msg subwallet_id valid_until msg_seqno cs
 | 
						|
    s0 s2 XCHG
 | 
						|
    NOW	//  signature in_msg subwallet_id cs msg_seqno valid_until _19
 | 
						|
    LEQ	//  signature in_msg subwallet_id cs msg_seqno _20
 | 
						|
    35 THROWIF
 | 
						|
    c4 PUSH	//  signature in_msg subwallet_id cs msg_seqno _23
 | 
						|
    CTOS	//  signature in_msg subwallet_id cs msg_seqno ds
 | 
						|
    32 LDU	//  signature in_msg subwallet_id cs msg_seqno _29 ds
 | 
						|
    32 LDU	//  signature in_msg subwallet_id cs msg_seqno _29 _32 ds
 | 
						|
    256 LDU	//  signature in_msg subwallet_id cs msg_seqno stored_seqno stored_subwallet public_key non_wallet_data
 | 
						|
    s4 s3 XCPU	//  signature in_msg subwallet_id cs non_wallet_data stored_seqno stored_subwallet public_key msg_seqno stored_seqno
 | 
						|
    EQUAL	//  signature in_msg subwallet_id cs non_wallet_data stored_seqno stored_subwallet public_key _39
 | 
						|
    33 THROWIFNOT
 | 
						|
    s5 s1 XCPU	//  signature in_msg public_key cs non_wallet_data stored_seqno stored_subwallet subwallet_id stored_subwallet
 | 
						|
    EQUAL	//  signature in_msg public_key cs non_wallet_data stored_seqno stored_subwallet _42
 | 
						|
    34 THROWIFNOT
 | 
						|
    s0 s5 XCHG	//  signature stored_subwallet public_key cs non_wallet_data stored_seqno in_msg
 | 
						|
    HASHSU	//  signature stored_subwallet public_key cs non_wallet_data stored_seqno _45
 | 
						|
    s0 s6 s4 XC2PU	//  stored_seqno stored_subwallet public_key cs non_wallet_data _45 signature public_key
 | 
						|
    CHKSIGNU	//  stored_seqno stored_subwallet public_key cs non_wallet_data _46
 | 
						|
    35 THROWIFNOT
 | 
						|
    ACCEPT
 | 
						|
    SWAP	//  stored_seqno stored_subwallet public_key non_wallet_data cs
 | 
						|
    WHILE:<{
 | 
						|
      DUP	//  stored_seqno stored_subwallet public_key non_wallet_data cs cs
 | 
						|
      SREFS	//  stored_seqno stored_subwallet public_key non_wallet_data cs _51
 | 
						|
    }>DO<{	//  stored_seqno stored_subwallet public_key non_wallet_data cs
 | 
						|
      8 LDU	//  stored_seqno stored_subwallet public_key non_wallet_data mode cs
 | 
						|
      LDREF	//  stored_seqno stored_subwallet public_key non_wallet_data mode _56 cs
 | 
						|
      s0 s2 XCHG	//  stored_seqno stored_subwallet public_key non_wallet_data cs _56 mode
 | 
						|
      SENDRAWMSG
 | 
						|
    }>	//  stored_seqno stored_subwallet public_key non_wallet_data cs
 | 
						|
    DROP	//  stored_seqno stored_subwallet public_key non_wallet_data
 | 
						|
    s0 s3 XCHG	//  non_wallet_data stored_subwallet public_key stored_seqno
 | 
						|
    INC	//  non_wallet_data stored_subwallet public_key _60
 | 
						|
    NEWC	//  non_wallet_data stored_subwallet public_key _60 _61
 | 
						|
    32 STU	//  non_wallet_data stored_subwallet public_key _63
 | 
						|
    s1 s2 XCHG	//  non_wallet_data public_key stored_subwallet _63
 | 
						|
    32 STU	//  non_wallet_data public_key _65
 | 
						|
    256 STU	//  non_wallet_data _67
 | 
						|
    SWAP	//  _67 non_wallet_data
 | 
						|
    STSLICER	//  _68
 | 
						|
    ENDC	//  _69
 | 
						|
    c4 POP
 | 
						|
  }>
 | 
						|
  seqno PROC:<{
 | 
						|
    // 
 | 
						|
    c4 PUSH	//  _0
 | 
						|
    CTOS	//  _1
 | 
						|
    32 PLDU	//  _3
 | 
						|
  }>
 | 
						|
  get_public_key PROC:<{
 | 
						|
    // 
 | 
						|
    c4 PUSH	//  _1
 | 
						|
    CTOS	//  cs
 | 
						|
    64 LDU	//  _9 _8
 | 
						|
    NIP	//  cs
 | 
						|
    256 PLDU	//  _7
 | 
						|
  }>
 | 
						|
  get_wallet_params PROC:<{
 | 
						|
    // 
 | 
						|
    c4 PUSH	//  _1
 | 
						|
    CTOS	//  ds
 | 
						|
    32 LDU	//  _6 ds
 | 
						|
    32 LDU	//  _6 _9 ds
 | 
						|
    256 LDU	//  _6 _9 _20 _19
 | 
						|
    DROP	//  stored_seqno stored_subwallet public_key
 | 
						|
  }>
 | 
						|
  get_storage_params PROC:<{
 | 
						|
    // 
 | 
						|
    c4 PUSH	//  _1
 | 
						|
    CTOS	//  ds
 | 
						|
    320 PUSHINT	//  ds _14
 | 
						|
    LDSLICEX	//  _31 _30
 | 
						|
    NIP	//  ds
 | 
						|
    1 LDI	//  _16 ds
 | 
						|
    LDGRAMS	//  _16 _19 ds
 | 
						|
    32 LDU	//  _16 _19 _21 ds
 | 
						|
    64 LDU	//  _16 _19 _21 _24 ds
 | 
						|
    64 LDU	//  _16 _19 _21 _24 _41 _40
 | 
						|
    DROP	//  accept_new_contracts? rate_per_mb_day max_span minimal_file_size maximal_file_size
 | 
						|
  }>
 | 
						|
  get_storage_contract_address PROC:<{
 | 
						|
    //  merkle_hash file_size client torrent_hash
 | 
						|
    get_storage_params CALLDICT	//  merkle_hash file_size client torrent_hash _13 _14 _15 _16 _17
 | 
						|
    2DROP
 | 
						|
    s2 POP	//  merkle_hash file_size client torrent_hash max_span rate_per_mb_day
 | 
						|
    s1 s3 s3 XCHG3	//  merkle_hash file_size rate_per_mb_day max_span client torrent_hash
 | 
						|
    build_storage_contract_stateinit CALLDICT	//  state_init
 | 
						|
    calculate_address_by_stateinit CALLDICT	//  _12
 | 
						|
  }>
 | 
						|
}END>c
 |