// automatically generated from `smartcont/stdlib.fc` `smartcont/dns-manual-code.fc` PROGRAM{ DECLPROC pfxdict_set_ref DECLPROC pfxdict_get_ref DECLPROC load_data DECLPROC store_data DECLPROC recv_internal 1666 DECLMETHOD after_code_upgrade DECLPROC process_op DECLPROC process_ops DECLPROC recv_external 111475 DECLMETHOD get_contract_id 78748 DECLMETHOD get_public_key 123660 DECLMETHOD dnsresolve pfxdict_set_ref PROC:<{ // dict key_len key value NEWC // dict key_len key value _6 STOPTREF // dict key_len key _7 ENDC // dict key_len key _8 CTOS // dict key_len key _9 s1 s3 s3 XCHG3 // _9 key dict key_len PFXDICTSET // dict _5 33 THROWIFNOT }> pfxdict_get_ref PROCREF:<{ // dict key_len key -ROT // key dict key_len PFXDICTGETQ NULLSWAPIFNOT2 // pfx val tail succ DUP // pfx val tail succ succ IF:<{ // pfx val tail succ s0 s2 XCHG // pfx succ tail val LDOPTREF // pfx succ tail _18 _17 DROP // pfx succ tail _9 }>ELSE<{ // pfx val tail succ s2 POP // pfx succ tail PUSHNULL // pfx succ tail _9 }> // pfx succ tail res s0 s2 XCHG // pfx res tail succ }> load_data PROCREF:<{ // c4 PUSH // _1 CTOS // cs 32 LDU // _4 cs 64 LDU // _4 _7 cs 256 LDU // _4 _7 _10 cs LDDICT // _4 _7 _10 _13 cs LDDICT // res res res res res cs ENDS }> store_data PROC:<{ // contract_id last_cleaned public_key root old_queries s0 s4 XCHG NEWC // old_queries last_cleaned public_key root contract_id _5 32 STU // old_queries last_cleaned public_key root _7 s1 s3 XCHG // old_queries root public_key last_cleaned _7 64 STU // old_queries root public_key _9 256 STU // old_queries root _11 STDICT // old_queries _12 STDICT // _13 ENDC // _14 c4 POP }> recv_internal PROC:<{ // msg_value in_msg_cell in_msg 3 BLKDROP // }> after_code_upgrade PROC:<{ // root ops old_code 3 BLKDROP // }> process_op PROCREF:<{ // root ops 6 LDU // root op ops OVER // root op ops op 10 LESSINT // root op ops _7 IFJMP:<{ // root op ops OVER // root op ops op IFNOTJMP:<{ // root op ops NIP // root ops }> // root op ops OVER // root op ops op 1 EQINT // root op ops _9 IFJMP:<{ // root op ops NIP // root ops 8 LDU // root mode ops LDREF // root mode _14 ops s0 s2 XCHG // root ops _14 mode SENDRAWMSG }> // root op ops SWAP // root ops op 9 EQINT // root ops _18 IFJMP:<{ // root ops LDREF // root new_code ops OVER // root new_code ops new_code SETCODE c3 PUSH // root new_code ops old_code s0 s2 XCHG // root old_code ops new_code CTOS // root old_code ops _25 BLESS // root old_code ops _26 c3 POP s2 s(-1) s1 PU2XC // root ops root ops old_code after_code_upgrade CALLDICT 0 THROW }> // root ops 45 THROW }> // root op ops 0 PUSHINT // root op ops cat=0 s2 PUSH // root op ops cat=0 op 20 LESSINT // root op ops cat=0 _36 IF:<{ // root op ops cat=0 DROP // root op ops 16 LDI // root op cat ops SWAP // root op ops cat }> // root op ops cat PUSHNULL // root op ops cat name PUSHNULL // root op ops cat name cat_table s4 PUSH // root op ops cat name cat_table op 30 LESSINT // root op ops cat name cat_table _45 IF:<{ // root op ops cat name cat_table NIP // root op ops cat cat_table s0 s2 XCHG // root op cat_table cat ops 1 LDU // root op cat_table cat _47 ops SWAP // root op cat_table cat ops _47 1 EQINT // root op cat_table cat ops is_name_ref IF:<{ // root op cat_table cat ops LDREF // root op cat_table cat _52 ops SWAP // root op cat_table cat ops _52 CTOS // root op cat_table cat ops name }>ELSE<{ // root op cat_table cat ops 6 LDU // root op cat_table cat _56 ops SWAP // root op cat_table cat ops _56 3 LSHIFT# // root op cat_table cat ops name_len LDSLICEX // root op cat_table cat name ops SWAP // root op cat_table cat ops name }> DUP // root op cat_table cat ops name name SBITS // root op cat_table cat ops name _64 15 GTINT // root op cat_table cat ops name _66 38 THROWIFNOT DUP 8 PUSHINT // root op cat_table cat ops name name _69=8 SDCUTLAST // root op cat_table cat ops name _70 8 PLDU // root op cat_table cat ops name name_last_byte 40 THROWIF 0 PUSHINT // root op cat_table cat ops name zeros=0 s1 s1 PUSH2 // root op cat_table cat ops name zeros=0 cname cname SBITS // root op cat_table cat ops name zeros=0 cname _78 3 RSHIFTC# // root op cat_table cat ops name zeros=0 cname _80 REPEAT:<{ // root op cat_table cat ops name zeros cname 8 LDU // root op cat_table cat ops name zeros c cname SWAP // root op cat_table cat ops name zeros cname c 0 EQINT // root op cat_table cat ops name zeros cname _86 s1 s2 XCHG // root op cat_table cat ops name cname zeros _86 SUB // root op cat_table cat ops name cname zeros SWAP // root op cat_table cat ops name zeros cname }> DROP // root op cat_table cat ops name zeros NEWC // root op cat_table cat ops name zeros _88 7 STU // root op cat_table cat ops name _90 SWAP // root op cat_table cat ops _90 name STSLICER // root op cat_table cat ops _91 ENDC // root op cat_table cat ops _92 CTOS // root op cat_table cat ops name s0 s3 XCHG2 // root op ops cat name cat_table }> // root op ops cat name cat_table s4 PUSH // root op ops cat name cat_table op 20 LESSINT // root op ops cat name cat_table _95 IF:<{ // root op ops cat name cat_table s5 PUSH 10 PUSHPOW2DEC s3 PUSH // root op ops cat name cat_table root _100=1023 name pfxdict_get_ref INLINECALLDICT // root op ops cat name cat_table _168 _169 _170 _171 s3 POP // root op ops cat name cat_table succ val tail s0 s2 XCHG // root op ops cat name cat_table tail val succ IF:<{ // root op ops cat name cat_table tail val s2 POP // root op ops cat name val tail SEMPTY // root op ops cat name val _103 35 THROWIFNOT // root op ops cat name cat_table }>ELSE<{ 2DROP // root op ops cat name cat_table }> }> // root op ops cat name cat_table s4 PUSH // root op ops cat name cat_table op 11 EQINT // root op ops cat name cat_table _106 IFJMP:<{ // root op ops cat name cat_table s4 POP // root cat_table ops cat name s0 s2 XCHG // root cat_table name cat ops LDOPTREF // root cat_table name cat new_value ops s2 s4 XCHG2 16 PUSHINT // root ops name new_value cat cat_table _111=16 DICTISETGETOPTREF // root ops name _174 _175 DROP // root ops name cat_table s2 s3 XCHG 10 PUSHPOW2DEC -ROT // ops root _114=1023 name cat_table pfxdict_set_ref CALLDICT // ops root SWAP // root ops }> // root op ops cat name cat_table s4 PUSH // root op ops cat name cat_table op 12 EQINT // root op ops cat name cat_table _117 IFJMP:<{ // root op ops cat name cat_table s4 POP // root cat_table ops cat name s0 s3 XCHG 16 PUSHINT // root name ops cat cat_table _119=16 DICTIDEL // root name ops cat_table _118 IF:<{ // root name ops cat_table s2 s3 XCHG 10 PUSHPOW2DEC s0 s4 s4 XCHG3 // ops root _122=1023 name cat_table pfxdict_set_ref CALLDICT // ops root SWAP // root ops }>ELSE<{ DROP NIP // root ops }> }> // root op ops cat name cat_table DROP NIP // root op ops name s2 PUSH // root op ops name op 21 EQINT // root op ops name _125 IFJMP:<{ // root op ops name s2 POP // root name ops LDOPTREF // root name new_cat_table ops s2 s3 XCHG 10 PUSHPOW2DEC s4 s2 XCHG2 // ops root _130=1023 name new_cat_table pfxdict_set_ref CALLDICT // ops root SWAP // root ops }> // root op ops name s2 PUSH // root op ops name op 22 EQINT // root op ops name _133 IFJMP:<{ // root op ops name s2 POP // root name ops s0 s2 XCHG 10 PUSHPOW2DEC // ops name root _135=1023 PFXDICTDEL // ops _180 _181 DROP // ops root SWAP // root ops }> // root op ops name DROP s2 POP // ops op DUP // ops op op 31 EQINT // ops op _138 IFJMP:<{ // ops op DROP // ops LDOPTREF // new_tree_root ops }> // ops op 32 EQINT // ops _143 IFJMP:<{ // ops PUSHNULL // ops _144 SWAP // _144 ops }> // ops 44 THROW PUSHNULL // ops _147 SWAP // _147 ops }> process_ops PROCREF:<{ // root ops FALSE // root ops stop -ROT // stop root ops UNTIL:<{ process_op INLINECALLDICT // stop root ops DUP // stop root ops ops SDEMPTY // stop root ops _9 IF:<{ // stop root ops DUP // stop root ops ops SREFS // stop root ops _10 IF:<{ // stop root ops LDREF // stop root _18 _17 DROP // stop root _11 CTOS // stop root ops }>ELSE<{ // stop root ops TRUE s3 POP // stop root ops }> }> // stop root ops s2 PUSH // stop root ops stop }> // stop root ops DROP NIP // root }> recv_external PROC:<{ // in_msg load_data INLINECALLDICT // in_msg contract_id last_cleaned public_key root old_queries s0 s5 XCHG 9 PUSHPOW2 // old_queries contract_id last_cleaned public_key root in_msg _9=512 LDSLICEX // old_queries contract_id last_cleaned public_key root signature in_msg DUP // old_queries contract_id last_cleaned public_key root signature in_msg in_msg HASHSU // old_queries contract_id last_cleaned public_key root signature in_msg shash SWAP // old_queries contract_id last_cleaned public_key root signature shash in_msg 32 LDU // old_queries contract_id last_cleaned public_key root signature shash _15 in_msg 64 LDU // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg NOW // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg _22 32 LSHIFT# // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg bound s2 s0 PUSH2 // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg bound query_id bound LESS // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg bound _26 35 THROWIF s2 s10 PUSH2 64 PUSHINT // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg bound query_id old_queries _30=64 DICTUGET NULLSWAPIFNOT // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg bound _84 _85 NIP // old_queries contract_id last_cleaned public_key root signature shash query_contract query_id in_msg bound found? 32 THROWIF s9 s3 PUXC // old_queries contract_id last_cleaned public_key root signature shash bound query_id in_msg contract_id query_contract EQUAL // old_queries contract_id last_cleaned public_key root signature shash bound query_id in_msg _35 34 THROWIFNOT s3 s4 s6 XC2PU // old_queries contract_id last_cleaned public_key root in_msg query_id bound shash signature public_key CHKSIGNU // old_queries contract_id last_cleaned public_key root in_msg query_id bound _38 35 THROWIFNOT ACCEPT s2 PUSH // old_queries contract_id last_cleaned public_key root in_msg query_id bound in_msg 6 PLDU // old_queries contract_id last_cleaned public_key root in_msg query_id bound op 51 EQINT // old_queries contract_id last_cleaned public_key root in_msg query_id bound _45 IF:<{ // old_queries contract_id last_cleaned public_key root in_msg query_id bound s4 POP // old_queries contract_id last_cleaned bound root in_msg query_id SWAP 6 PUSHINT // old_queries contract_id last_cleaned bound root query_id in_msg _47=6 SDSKIPFIRST // old_queries contract_id last_cleaned bound root query_id in_msg 256 LDU // old_queries contract_id last_cleaned bound root query_id _87 _86 DROP // old_queries contract_id last_cleaned bound root query_id public_key }>ELSE<{ // old_queries contract_id last_cleaned public_key root in_msg query_id bound 2SWAP // old_queries contract_id last_cleaned public_key query_id bound root in_msg process_ops INLINECALLDICT // old_queries contract_id last_cleaned public_key query_id bound root s0 s0 s3 XCHG3 // old_queries contract_id last_cleaned bound root query_id public_key }> s0 s3 XCHG 38 PUSHPOW2 // old_queries contract_id last_cleaned public_key root query_id bound _55 SUB // old_queries contract_id last_cleaned public_key root query_id bound NEWC // old_queries contract_id last_cleaned public_key root query_id bound _58 s0 s0 s7 XCHG3 64 PUSHINT // bound contract_id last_cleaned public_key root _58 query_id old_queries _59=64 DICTUSETB // bound contract_id last_cleaned public_key root old_queries UNTIL:<{ DUP 64 PUSHINT // bound contract_id last_cleaned public_key root old_queries old_queries _66=64 DICTUREMMIN NULLSWAPIFNOT2 // bound contract_id last_cleaned public_key root old_queries _88 _90 _89 _91 1 2 BLKDROP2 // bound contract_id last_cleaned public_key root old_queries old_queries' i f DUP // bound contract_id last_cleaned public_key root old_queries old_queries' i f f IF:<{ // bound contract_id last_cleaned public_key root old_queries old_queries' i f DROP // bound contract_id last_cleaned public_key root old_queries old_queries' i s0 s7 PUSH2 // bound contract_id last_cleaned public_key root old_queries old_queries' i i bound LESS // bound contract_id last_cleaned public_key root old_queries old_queries' i f }> // bound contract_id last_cleaned public_key root old_queries old_queries' i f DUP // bound contract_id last_cleaned public_key root old_queries old_queries' i f f IF:<{ // bound contract_id last_cleaned public_key root old_queries old_queries' i f s3 POP s5 POP // bound contract_id last_cleaned public_key root f old_queries SWAP // bound contract_id last_cleaned public_key root old_queries f }>ELSE<{ 2 1 BLKDROP2 // bound contract_id last_cleaned public_key root old_queries f }> NOT // bound contract_id last_cleaned public_key root old_queries _71 }> // bound contract_id last_cleaned public_key root old_queries 1 5 BLKDROP2 // contract_id last_cleaned public_key root old_queries store_data CALLDICT }> get_contract_id PROC:<{ // c4 PUSH // _0 CTOS // _1 32 PLDU // _3 }> get_public_key PROC:<{ // c4 PUSH // _1 CTOS // cs 96 LDU // _11 _10 NIP // cs 256 PLDU // _9 }> dnsresolve PROC:<{ // subdomain category OVER // subdomain category subdomain SBITS // subdomain category bits DUP // subdomain category bits bits IFNOTJMP:<{ // subdomain category bits 3 BLKDROP // 0 PUSHINT // _4=0 PUSHNULL // _4=0 _5 }> // subdomain category bits DUP 7 PUSHINT // subdomain category bits bits _7=7 AND // subdomain category bits _8 30 THROWIF s2 PUSH 8 PUSHINT // subdomain category bits subdomain _11=8 SDCUTLAST // subdomain category bits _12 8 PLDU // subdomain category bits name_last_byte IF:<{ // subdomain category bits 0 PUSHINT // subdomain category bits _15=0 NEWC // subdomain category bits _15=0 _16 s0 s4 XCHG2 // _15=0 category bits _16 subdomain STSLICER // _15=0 category bits _17 s1 s3 XCHG // bits category _15=0 _17 8 STU // bits category _19 ENDC // bits category _20 CTOS // bits category subdomain s0 s2 XCHG // subdomain category bits 8 ADDCONST // subdomain category bits }> // subdomain category bits DUP // subdomain category bits bits 8 EQINT // subdomain category bits _25 IFJMP:<{ // subdomain category bits 3 BLKDROP // 0 PUSHINT // _26=0 PUSHNULL // _26=0 _27 }> // subdomain category bits load_data INLINECALLDICT // subdomain category bits _80 _81 _82 _83 _84 s1 s4 XCHG 4 BLKDROP // subdomain category bits root s3 PUSH // subdomain category bits root cname 0 PUSHINT // subdomain category bits root cname zeros=0 s0 s3 XCHG // subdomain category zeros=0 root cname bits 3 RSHIFT# // subdomain category zeros=0 root cname _38 REPEAT:<{ // subdomain category zeros root cname 8 LDU // subdomain category zeros root c cname SWAP // subdomain category zeros root cname c 0 EQINT // subdomain category zeros root cname _44 s1 s3 XCHG // subdomain category cname root zeros _44 SUB // subdomain category cname root zeros s0 s2 XCHG // subdomain category zeros root cname }> DUP // subdomain category zeros root cname pfx PUSHNULL // subdomain category zeros root tail pfx val UNTIL:<{ 3 BLKDROP // subdomain category zeros root OVER NEWC // subdomain category zeros root zeros _51 7 STU // subdomain category zeros root _53 s4 PUSH // subdomain category zeros root _53 subdomain STSLICER // subdomain category zeros root _54 ENDC // subdomain category zeros root _55 CTOS // subdomain category zeros root pfxname 10 PUSHPOW2DEC // subdomain category zeros root pfxname _58=1023 s2 PUSH s0 s2 XCHG // subdomain category zeros root root _58=1023 pfxname pfxdict_get_ref INLINECALLDICT // subdomain category zeros root pfx val tail succ s0 s5 XCHG // subdomain category succ root pfx val tail zeros DEC // subdomain category succ root pfx val tail _61 s1 s5 XCHG // subdomain category tail root pfx val succ _61 XOR // subdomain category tail root pfx val zeros DUP // subdomain category tail root pfx val zeros zeros 1 LESSINT // subdomain category tail root pfx val zeros _64 s1 s5 XCHG s3 s3 s0 XCHG3 // subdomain category zeros root tail pfx val _64 }> // subdomain category zeros root tail pfx val s3 POP s5 POP // pfx category zeros val tail s2 PUSH // pfx category zeros val tail zeros IFNOTJMP:<{ // pfx category zeros val tail 5 BLKDROP // 0 PUSHINT // _65=0 PUSHNULL // _65=0 _66 }> // pfx category zeros val tail 1 2 BLKDROP2 // pfx category val tail SEMPTY // pfx category val _68 IFNOT:<{ // pfx category val -1 PUSHINT s2 POP // pfx category=-1 val }> // pfx category val s0 s2 XCHG // val category pfx SBITS // val category _71 -7 ADDCONST // cat_table category pfx_bits OVER // cat_table category pfx_bits category 0 EQINT // cat_table category pfx_bits _76 IFJMP:<{ // cat_table category pfx_bits NIP // cat_table pfx_bits SWAP // pfx_bits cat_table }> // cat_table category pfx_bits s0 s2 XCHG 16 PUSHINT // pfx_bits category cat_table _78=16 DICTIGETOPTREF // pfx_bits cat_found }> }END>c