wormhole/algorand/teal/token_approve.teal

2380 lines
27 KiB
Plaintext

#pragma version 6
intcblock 0 1 2 127 133 100000 128 255
bytecblock 0x 0x636f72656964 0x436861696e 0x6e6174697665 0x7075626c6973684d657373616765 0x6e6f70 0x766572696679564141 0x0008 0x76616c6964557064617465417070726f766548617368 0x414c474f 0x636f726541646472
txn ApplicationID
intc_0 // 0
==
bnz main_l80
txn OnCompletion
pushint 4 // UpdateApplication
==
bnz main_l79
txn OnCompletion
pushint 5 // DeleteApplication
==
bnz main_l78
txn OnCompletion
intc_1 // OptIn
==
bnz main_l77
txn OnCompletion
intc_0 // NoOp
==
bnz main_l6
err
main_l6:
txna ApplicationArgs 0
bytec 5 // "nop"
==
bnz main_l76
txna ApplicationArgs 0
pushbytes 0x72656365697665417474657374 // "receiveAttest"
==
bnz main_l69
txna ApplicationArgs 0
pushbytes 0x617474657374546f6b656e // "attestToken"
==
bnz main_l57
txna ApplicationArgs 0
pushbytes 0x636f6d706c6574655472616e73666572 // "completeTransfer"
==
bnz main_l41
txna ApplicationArgs 0
pushbytes 0x73656e645472616e73666572 // "sendTransfer"
==
bnz main_l21
txna ApplicationArgs 0
pushbytes 0x6f7074696e // "optin"
==
bnz main_l20
txna ApplicationArgs 0
pushbytes 0x676f7665726e616e6365 // "governance"
==
bnz main_l14
err
main_l14:
callsub checkForDuplicate_21
callsub governanceSet_7
store 70
txna ApplicationArgs 1
extract 1 4
btoi
load 70
==
pushint 232 // 232
&&
assert
txna ApplicationArgs 1
extract 5 1
btoi
pushint 66 // 66
*
pushint 14 // 14
+
store 65
txn GroupIndex
intc_1 // 1
-
store 71
load 71
gtxns TypeEnum
pushint 6 // appl
==
load 71
gtxns ApplicationID
bytec_1 // "coreid"
app_global_get
==
&&
load 71
gtxnsa ApplicationArgs 0
bytec 6 // "verifyVAA"
==
&&
load 71
gtxns Sender
txn Sender
==
&&
load 71
gtxnsa ApplicationArgs 1
txna ApplicationArgs 1
==
&&
load 71
gtxnsa Accounts 0
txna Accounts 0
==
&&
load 71
gtxnsa Accounts 1
txna Accounts 1
==
&&
load 71
gtxnsa Accounts 2
txna Accounts 2
==
&&
txna ApplicationArgs 1
load 65
intc_2 // 2
extract3
pushbytes 0x0001 // 0x0001
==
&&
txna ApplicationArgs 1
load 65
intc_2 // 2
+
pushint 32 // 32
extract3
pushint 31 // 31
bzero
pushbytes 0x04 // 0x04
concat
==
&&
pushint 239 // 239
&&
assert
load 71
gtxns RekeyTo
global ZeroAddress
==
load 71
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 71
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txn RekeyTo
global ZeroAddress
==
txn CloseRemainderTo
global ZeroAddress
==
&&
txn AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txna ApplicationArgs 1
load 65
pushint 43 // 43
+
pushint 32 // 32
extract3
pushint 21 // 21
bzero
pushbytes 0x546f6b656e427269646765 // 0x546f6b656e427269646765
concat
==
pushint 263 // 263
&&
assert
txna ApplicationArgs 1
load 65
pushint 75 // 75
+
intc_1 // 1
extract3
btoi
store 66
load 65
pushint 76 // 76
+
store 65
load 66
intc_1 // 1
==
bnz main_l19
load 66
intc_2 // 2
==
bnz main_l17
err
main_l17:
txna ApplicationArgs 1
load 65
intc_2 // 2
extract3
bytec 7 // 0x0008
==
pushint 282 // 282
&&
assert
bytec 8 // "validUpdateApproveHash"
txna ApplicationArgs 1
load 65
intc_2 // 2
+
pushint 32 // 32
extract3
app_global_put
main_l18:
intc_1 // 1
return
main_l19:
txna ApplicationArgs 1
load 65
intc_2 // 2
extract3
btoi
store 67
load 67
intc_0 // 0
==
load 67
pushint 8 // 8
==
||
pushint 271 // 271
&&
assert
txna ApplicationArgs 1
load 65
intc_2 // 2
+
intc_2 // 2
extract3
store 68
txna ApplicationArgs 1
load 65
pushint 4 // 4
+
pushint 32 // 32
extract3
store 69
bytec_2 // "Chain"
load 68
concat
app_global_get
intc_0 // 0
==
pushint 277 // 277
&&
assert
bytec_2 // "Chain"
load 68
concat
load 69
app_global_put
b main_l18
main_l20:
txna Accounts 1
txna ApplicationArgs 1
btoi
bytec_3 // "native"
callsub getsigaddress_15
==
pushint 800 // 800
&&
assert
txn RekeyTo
global ZeroAddress
==
txn CloseRemainderTo
global ZeroAddress
==
&&
txn AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
itxn_begin
txna Accounts 1
itxn_field Sender
pushint 4 // axfer
itxn_field TypeEnum
txna ApplicationArgs 1
btoi
itxn_field XferAsset
intc_0 // 0
itxn_field AssetAmount
txna Accounts 1
itxn_field AssetReceiver
intc_0 // 0
itxn_field Fee
itxn_submit
intc_1 // 1
return
main_l21:
callsub getMessageFee_8
store 23
pushint 32 // 32
bzero
store 62
txna ApplicationArgs 1
btoi
store 55
txna ApplicationArgs 5
btoi
store 64
intc_2 // 2
callsub checkFeePmt_10
txn GroupIndex
intc_1 // 1
-
store 22
load 55
intc_0 // 0
==
bnz main_l40
load 22
gtxns TypeEnum
pushint 4 // axfer
==
load 22
gtxns Sender
txn Sender
==
&&
load 22
gtxns XferAsset
load 55
==
&&
load 22
gtxns AssetReceiver
txna Accounts 2
==
&&
pushint 693 // 693
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
load 22
gtxns AssetAmount
store 56
load 64
load 56
<=
pushint 706 // 706
&&
assert
load 56
load 64
-
store 56
load 55
callsub extractdecimal_20
btoi
callsub getFactor_14
store 63
load 63
intc_1 // 1
!=
bnz main_l39
main_l23:
load 56
intc_0 // 0
>
load 64
intc_0 // 0
>=
&&
pushint 722 // 722
&&
assert
load 55
intc_0 // 0
!=
bnz main_l38
bytec_0 // ""
store 59
main_l25:
load 59
global CurrentApplicationAddress
==
bnz main_l37
txna Accounts 2
load 55
bytec_3 // "native"
callsub getsigaddress_15
==
pushint 746 // 746
&&
assert
bytec 7 // 0x0008
store 61
txna ApplicationArgs 1
store 60
main_l27:
load 60
len
pushint 32 // 32
<=
load 61
len
intc_2 // 2
==
&&
txna ApplicationArgs 3
len
pushint 32 // 32
<=
&&
pushint 753 // 753
&&
assert
txn NumAppArgs
pushint 6 // 6
==
bnz main_l36
pushbytes 0x03 // 0x03
main_l29:
load 62
extract 0 24
concat
load 56
itob
concat
load 62
intc_0 // 0
pushint 32 // 32
load 60
len
-
extract3
concat
load 60
concat
load 61
concat
load 62
intc_0 // 0
pushint 32 // 32
txna ApplicationArgs 3
len
-
extract3
concat
txna ApplicationArgs 3
concat
txna ApplicationArgs 4
extract 6 2
concat
load 62
extract 0 24
concat
load 64
itob
concat
txn NumAppArgs
pushint 7 // 7
==
bnz main_l35
bytec_0 // ""
main_l31:
concat
store 57
txn NumAppArgs
pushint 7 // 7
==
bnz main_l34
load 57
len
intc 4 // 133
==
pushint 779 // 779
&&
assert
main_l33:
itxn_begin
callsub sendMfee_11
pushint 6 // appl
itxn_field TypeEnum
bytec_1 // "coreid"
app_global_get
itxn_field ApplicationID
bytec 4 // "publishMessage"
itxn_field ApplicationArgs
load 57
itxn_field ApplicationArgs
intc_0 // 0
itob
itxn_field ApplicationArgs
txna Accounts 1
itxn_field Accounts
bytec 4 // "publishMessage"
itxn_field Note
intc_0 // 0
itxn_field Fee
itxn_submit
intc_1 // 1
return
main_l34:
load 57
len
intc 4 // 133
txna ApplicationArgs 6
len
+
==
pushint 778 // 778
&&
assert
b main_l33
main_l35:
txna ApplicationArgs 6
b main_l31
main_l36:
pushbytes 0x01 // 0x01
b main_l29
main_l37:
intc_2 // 2
intc_0 // 0
pushint 8 // 8
callsub read_4
store 58
txna ApplicationArgs 1
load 58
==
pushint 735 // 735
&&
assert
intc_2 // 2
pushint 60 // 60
pushint 92 // 92
callsub read_4
store 60
intc_2 // 2
pushint 92 // 92
pushint 94 // 94
callsub read_4
store 61
txna Accounts 2
load 61
btoi
load 60
callsub getsigaddress_15
==
pushint 742 // 742
&&
assert
b main_l27
main_l38:
load 55
callsub extractcreator_18
callsub authaddr_16
store 59
b main_l25
main_l39:
load 56
load 63
/
store 56
load 64
load 63
/
store 64
b main_l23
main_l40:
load 22
gtxns TypeEnum
intc_1 // pay
==
load 22
gtxns Sender
txn Sender
==
&&
load 22
gtxns Receiver
txna Accounts 2
==
&&
pushint 678 // 678
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
load 22
gtxns Amount
store 56
load 64
load 56
<
pushint 688 // 688
&&
assert
load 56
load 64
-
store 56
b main_l23
main_l41:
callsub checkForDuplicate_21
pushint 32 // 32
bzero
store 53
txn GroupIndex
intc_1 // 1
-
store 22
load 22
gtxns TypeEnum
pushint 6 // appl
==
load 22
gtxns ApplicationID
bytec_1 // "coreid"
app_global_get
==
&&
load 22
gtxnsa ApplicationArgs 0
bytec 6 // "verifyVAA"
==
&&
load 22
gtxns Sender
txn Sender
==
&&
load 22
gtxnsa ApplicationArgs 1
txna ApplicationArgs 1
==
&&
load 22
gtxnsa Accounts 0
txna Accounts 0
==
&&
load 22
gtxnsa Accounts 1
txna Accounts 1
==
&&
load 22
gtxnsa Accounts 2
txna Accounts 2
==
&&
pushint 464 // 464
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txn RekeyTo
global ZeroAddress
==
txn CloseRemainderTo
global ZeroAddress
==
&&
txn AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txna ApplicationArgs 1
extract 5 1
btoi
pushint 66 // 66
*
pushint 6 // 6
+
pushint 8 // 8
+
store 42
txna ApplicationArgs 1
load 42
intc_2 // 2
extract3
btoi
store 43
txna ApplicationArgs 1
load 42
intc_2 // 2
+
pushint 32 // 32
extract3
store 44
load 43
pushint 8 // 8
==
bnz main_l56
bytec_2 // "Chain"
txna ApplicationArgs 1
load 42
intc_2 // 2
extract3
concat
app_global_get
load 44
==
pushint 491 // 491
&&
assert
main_l43:
load 42
pushint 43 // 43
+
store 42
txna ApplicationArgs 1
load 42
intc_1 // 1
extract3
btoi
store 54
load 54
intc_1 // 1
==
load 54
pushint 3 // 3
==
||
pushint 498 // 498
&&
assert
txna ApplicationArgs 1
load 42
intc_1 // 1
+
pushint 24 // 24
extract3
load 53
extract 0 24
==
pushint 500 // 500
&&
assert
txna ApplicationArgs 1
load 42
pushint 25 // 25
+
pushint 8 // 8
extract3
btoi
store 45
txna ApplicationArgs 1
load 42
pushint 33 // 33
+
pushint 32 // 32
extract3
store 46
txna ApplicationArgs 1
load 42
pushint 65 // 65
+
intc_2 // 2
extract3
btoi
store 47
txna ApplicationArgs 1
load 42
pushint 67 // 67
+
pushint 32 // 32
extract3
store 48
txna ApplicationArgs 1
load 42
pushint 99 // 99
+
intc_2 // 2
extract3
btoi
store 49
txna ApplicationArgs 1
load 42
pushint 101 // 101
+
pushint 24 // 24
extract3
load 53
extract 0 24
==
pushint 508 // 508
&&
assert
txna ApplicationArgs 1
load 42
pushint 125 // 125
+
pushint 8 // 8
extract3
btoi
store 50
load 49
pushint 8 // 8
==
pushint 512 // 512
&&
assert
load 50
load 45
<=
pushint 514 // 514
&&
assert
load 54
pushint 3 // 3
==
bnz main_l55
main_l44:
load 47
pushint 8 // 8
==
bnz main_l49
pushint 3 // 3
intc_0 // 0
pushint 8 // 8
callsub read_4
btoi
store 51
load 51
intc_0 // 0
!=
txna Accounts 3
load 47
load 46
callsub getsigaddress_15
==
&&
pushint 577 // 577
&&
assert
main_l46:
itxn_begin
txna Accounts 3
itxn_field Sender
pushint 4 // axfer
itxn_field TypeEnum
load 51
itxn_field XferAsset
load 45
itxn_field AssetAmount
load 48
itxn_field AssetReceiver
intc_0 // 0
itxn_field Fee
load 50
intc_0 // 0
>
bnz main_l48
main_l47:
itxn_submit
intc_1 // 1
return
main_l48:
itxn_next
txna Accounts 3
itxn_field Sender
pushint 4 // axfer
itxn_field TypeEnum
load 51
itxn_field XferAsset
load 50
itxn_field AssetAmount
txn Sender
itxn_field AssetReceiver
intc_0 // 0
itxn_field Fee
b main_l47
main_l49:
load 46
extract 24 8
btoi
store 51
txna Accounts 3
load 51
bytec_3 // "native"
callsub getsigaddress_15
==
pushint 529 // 529
&&
assert
load 51
intc_0 // 0
==
bnz main_l52
load 51
callsub extractdecimal_20
btoi
callsub getFactor_14
store 52
load 52
intc_1 // 1
!=
bz main_l46
load 45
load 52
*
store 45
load 50
load 52
*
store 50
b main_l46
main_l52:
itxn_begin
txna Accounts 3
itxn_field Sender
intc_1 // pay
itxn_field TypeEnum
load 48
itxn_field Receiver
load 45
itxn_field Amount
intc_0 // 0
itxn_field Fee
load 50
intc_0 // 0
>
bnz main_l54
main_l53:
itxn_submit
intc_1 // 1
return
main_l54:
itxn_next
txna Accounts 3
itxn_field Sender
intc_1 // pay
itxn_field TypeEnum
txn Sender
itxn_field Receiver
load 50
itxn_field Amount
intc_0 // 0
itxn_field Fee
b main_l53
main_l55:
txn GroupIndex
intc_1 // 1
+
store 22
load 22
gtxns TypeEnum
pushint 6 // appl
==
load 22
gtxnsa ApplicationArgs 0
txna ApplicationArgs 0
==
&&
load 22
gtxnsa ApplicationArgs 1
txna ApplicationArgs 1
==
&&
pushint 518 // 518
&&
assert
callsub getNextAddress_9
load 48
==
pushint 523 // 523
&&
assert
b main_l44
main_l56:
global CurrentApplicationAddress
load 44
==
pushint 490 // 490
&&
assert
b main_l43
main_l57:
callsub getMessageFee_8
store 23
intc_1 // 1
callsub checkFeePmt_10
txna ApplicationArgs 1
btoi
store 39
load 39
intc_0 // 0
!=
bnz main_l68
intc_0 // 0
main_l59:
bnz main_l67
txna Accounts 2
load 39
bytec_3 // "native"
callsub getsigaddress_15
==
pushint 862 // 862
&&
assert
pushint 32 // 32
bzero
store 35
txna ApplicationArgs 1
btoi
store 39
load 39
intc_0 // 0
==
bnz main_l66
load 39
callsub extractdecimal_20
store 36
load 36
btoi
pushint 8 // 8
>
bnz main_l65
main_l62:
load 39
callsub extractunitname_19
store 37
load 39
callsub extractname_17
store 38
main_l63:
pushbytes 0x02 // 0x02
load 35
extract 0 24
concat
load 39
itob
concat
bytec 7 // 0x0008
concat
load 36
concat
load 37
concat
load 35
intc_0 // 0
pushint 32 // 32
load 37
len
-
extract3
concat
load 38
concat
load 35
intc_0 // 0
pushint 32 // 32
load 38
len
-
extract3
concat
store 34
main_l64:
load 34
len
pushint 100 // 100
==
pushint 904 // 904
&&
assert
itxn_begin
callsub sendMfee_11
pushint 6 // appl
itxn_field TypeEnum
bytec_1 // "coreid"
app_global_get
itxn_field ApplicationID
bytec 4 // "publishMessage"
itxn_field ApplicationArgs
load 34
itxn_field ApplicationArgs
intc_0 // 0
itob
itxn_field ApplicationArgs
txna Accounts 1
itxn_field Accounts
bytec 4 // "publishMessage"
itxn_field Note
intc_0 // 0
itxn_field Fee
itxn_submit
intc_1 // 1
return
main_l65:
pushbytes 0x08 // 0x08
store 36
b main_l62
main_l66:
pushbytes 0x06 // 0x06
store 36
bytec 9 // "ALGO"
store 37
bytec 9 // "ALGO"
store 38
b main_l63
main_l67:
intc_2 // 2
intc_0 // 0
pushint 8 // 8
callsub read_4
store 33
txna ApplicationArgs 1
load 33
==
pushint 845 // 845
&&
assert
intc_2 // 2
pushint 60 // 60
pushint 92 // 92
callsub read_4
store 40
intc_2 // 2
pushint 92 // 92
pushint 94 // 94
callsub read_4
btoi
store 41
txna Accounts 2
load 41
load 40
callsub getsigaddress_15
==
pushint 852 // 852
&&
assert
load 39
callsub extractdecimal_20
btoi
pushint 8 // 8
<=
pushint 855 // 855
&&
assert
intc_2 // 2
pushint 8 // 8
pushint 108 // 108
callsub read_4
store 34
b main_l64
main_l68:
load 39
callsub extractcreator_18
callsub authaddr_16
global CurrentApplicationAddress
==
b main_l59
main_l69:
callsub checkForDuplicate_21
txn GroupIndex
pushint 4 // 4
-
store 22
load 22
gtxns TypeEnum
pushint 6 // appl
==
load 22
gtxns ApplicationID
bytec_1 // "coreid"
app_global_get
==
&&
load 22
gtxnsa ApplicationArgs 0
bytec 6 // "verifyVAA"
==
&&
load 22
gtxns Sender
txn Sender
==
&&
load 22
gtxnsa ApplicationArgs 1
txna ApplicationArgs 1
==
&&
load 22
gtxnsa Accounts 0
txna Accounts 0
==
&&
load 22
gtxnsa Accounts 1
txna Accounts 1
==
&&
load 22
gtxnsa Accounts 2
txna Accounts 2
==
&&
pushint 310 // 310
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txn GroupIndex
pushint 3 // 3
-
store 22
load 22
gtxns TypeEnum
intc_1 // pay
==
load 22
gtxns Amount
intc 5 // 100000
>=
&&
load 22
gtxns Sender
txn Sender
==
&&
load 22
gtxns Receiver
txna Accounts 3
==
&&
pushint 328 // 328
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txn GroupIndex
intc_2 // 2
-
store 22
load 22
gtxns TypeEnum
pushint 6 // appl
==
load 22
gtxns ApplicationID
global CurrentApplicationID
==
&&
load 22
gtxnsa ApplicationArgs 0
bytec 5 // "nop"
==
&&
load 22
gtxns Sender
txn Sender
==
&&
pushint 338 // 338
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txn GroupIndex
intc_1 // 1
-
store 22
load 22
gtxns TypeEnum
pushint 6 // appl
==
load 22
gtxns ApplicationID
global CurrentApplicationID
==
&&
load 22
gtxnsa ApplicationArgs 0
bytec 5 // "nop"
==
&&
load 22
gtxns Sender
txn Sender
==
&&
global GroupSize
intc_1 // 1
-
txn GroupIndex
==
&&
pushint 348 // 348
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
txna ApplicationArgs 1
extract 5 1
btoi
pushint 66 // 66
*
pushint 6 // 6
+
pushint 8 // 8
+
store 24
txna ApplicationArgs 1
load 24
intc_2 // 2
extract3
btoi
store 26
bytec_2 // "Chain"
txna ApplicationArgs 1
load 24
intc_2 // 2
extract3
concat
app_global_get
txna ApplicationArgs 1
load 24
intc_2 // 2
+
pushint 32 // 32
extract3
==
pushint 362 // 362
&&
assert
load 24
pushint 43 // 43
+
store 24
intc_2 // 2
txna ApplicationArgs 1
load 24
intc_1 // 1
extract3
btoi
==
pushint 367 // 367
&&
assert
txna ApplicationArgs 1
load 24
intc_1 // 1
+
pushint 32 // 32
extract3
store 25
txna ApplicationArgs 1
load 24
pushint 33 // 33
+
intc_2 // 2
extract3
btoi
store 27
txna ApplicationArgs 1
load 24
pushint 35 // 35
+
intc_1 // 1
extract3
btoi
store 28
txna ApplicationArgs 1
load 24
pushint 36 // 36
+
pushint 32 // 32
extract3
store 29
txna ApplicationArgs 1
load 24
pushint 68 // 68
+
pushint 32 // 32
extract3
store 30
load 29
callsub trimbytes_13
store 29
load 29
len
pushint 7 // 7
>
bnz main_l75
main_l70:
load 30
callsub trimbytes_13
store 30
load 28
pushint 8 // 8
>
bnz main_l74
main_l71:
txna Accounts 3
load 27
load 25
callsub getsigaddress_15
==
pushint 392 // 392
&&
assert
pushint 3 // 3
intc_0 // 0
pushint 8 // 8
callsub read_4
store 31
txna ApplicationArgs 1
extract 5 1
btoi
pushint 66 // 66
*
pushint 6 // 6
+
store 24
load 31
intc_0 // 0
itob
==
bnz main_l73
main_l72:
txna ApplicationArgs 1
store 32
pushint 3 // 3
pushint 8 // 8
load 32
load 24
load 32
len
load 24
-
extract3
callsub write_6
pop
intc_1 // 1
return
main_l73:
itxn_begin
txna Accounts 3
itxn_field Sender
pushint 3 // acfg
itxn_field TypeEnum
load 30
itxn_field ConfigAssetName
load 29
itxn_field ConfigAssetUnitName
pushint 18446744073709551614 // 18446744073709551614
itxn_field ConfigAssetTotal
load 28
itxn_field ConfigAssetDecimals
global CurrentApplicationAddress
itxn_field ConfigAssetManager
global CurrentApplicationAddress
itxn_field ConfigAssetReserve
global ZeroAddress
itxn_field ConfigAssetFreeze
global ZeroAddress
itxn_field ConfigAssetClawback
intc_0 // 0
itxn_field Fee
itxn_submit
itxn CreatedAssetID
itob
store 31
pushint 3 // 3
intc_0 // 0
load 31
callsub write_6
pop
pushint 3 // 3
pushbytes 0x6173736574 // "asset"
callsub meta_5
b main_l72
main_l74:
pushint 8 // 8
store 28
b main_l71
main_l75:
load 29
extract 0 7
store 29
b main_l70
main_l76:
intc_1 // 1
return
main_l77:
callsub optin_22
return
main_l78:
intc_0 // 0
return
main_l79:
txn Sender
global CreatorAddress
==
return
main_l80:
bytec_1 // "coreid"
txna ApplicationArgs 0
btoi
app_global_put
bytec 10 // "coreAddr"
txna ApplicationArgs 1
app_global_put
bytec 8 // "validUpdateApproveHash"
bytec_0 // ""
app_global_put
pushbytes 0x76616c6964557064617465436c65617248617368 // "validUpdateClearHash"
pushbytes 0x73be5fd7cd378289177bf4a7ca5433ab30d91b417381bba8bd704aff2dec424f // 0x73be5fd7cd378289177bf4a7ca5433ab30d91b417381bba8bd704aff2dec424f
app_global_put
intc_1 // 1
return
// intkey
intkey_0:
itob
extract 7 1
retsub
// zero
zero_1:
store 17
intc_0 // 0
store 18
zero_1_l1:
load 18
pushint 15 // 15
<
bz zero_1_l3
load 17
load 18
callsub intkey_0
intc_3 // 127
bzero
app_local_put
load 18
intc_1 // 1
+
store 18
b zero_1_l1
zero_1_l3:
retsub
// get_byte
getbyte_2:
store 0
load 0
intc_3 // 127
/
callsub intkey_0
app_local_get
load 0
intc_3 // 127
%
getbyte
retsub
// set_byte
setbyte_3:
store 21
store 20
store 19
load 19
load 20
intc_3 // 127
/
callsub intkey_0
load 19
load 20
intc_3 // 127
/
callsub intkey_0
app_local_get
load 20
intc_3 // 127
%
load 21
setbyte
app_local_put
retsub
// read
read_4:
store 3
store 2
store 1
bytec_0 // ""
store 5
load 2
intc_3 // 127
/
store 4
read_4_l1:
load 4
load 3
intc_3 // 127
/
<=
bz read_4_l9
load 4
load 2
intc_3 // 127
/
==
bnz read_4_l8
intc_0 // 0
read_4_l4:
store 6
load 4
load 3
intc_3 // 127
/
==
bnz read_4_l7
intc_3 // 127
read_4_l6:
store 7
load 5
load 1
load 4
callsub intkey_0
app_local_get
load 6
load 7
substring3
concat
store 5
load 4
intc_1 // 1
+
store 4
b read_4_l1
read_4_l7:
load 3
intc_3 // 127
%
b read_4_l6
read_4_l8:
load 2
intc_3 // 127
%
b read_4_l4
read_4_l9:
load 5
retsub
// meta
meta_5:
store 8
pushbytes 0x6d657461 // "meta"
load 8
app_local_put
retsub
// write
write_6:
store 11
store 10
store 9
intc_0 // 0
store 15
load 10
intc_3 // 127
/
store 12
write_6_l1:
load 12
load 10
load 11
len
+
intc_3 // 127
/
<=
bz write_6_l12
load 12
load 10
intc_3 // 127
/
==
bnz write_6_l11
intc_0 // 0
write_6_l4:
store 13
load 12
load 10
load 11
len
+
intc_3 // 127
/
==
bnz write_6_l10
intc_3 // 127
write_6_l6:
store 14
load 9
load 12
callsub intkey_0
load 14
intc_3 // 127
!=
load 13
intc_0 // 0
!=
||
bnz write_6_l9
intc_3 // 127
store 16
load 11
load 15
intc_3 // 127
extract3
write_6_l8:
app_local_put
load 15
load 16
+
store 15
load 12
intc_1 // 1
+
store 12
b write_6_l1
write_6_l9:
load 14
load 13
-
store 16
load 9
load 12
callsub intkey_0
app_local_get
intc_0 // 0
load 13
substring3
load 11
load 15
load 16
extract3
concat
load 9
load 12
callsub intkey_0
app_local_get
load 14
intc_3 // 127
substring3
concat
b write_6_l8
write_6_l10:
load 10
load 11
len
+
intc_3 // 127
%
b write_6_l6
write_6_l11:
load 10
intc_3 // 127
%
b write_6_l4
write_6_l12:
load 15
retsub
// governanceSet
governanceSet_7:
bytec_1 // "coreid"
app_global_get
pushbytes 0x63757272656e74477561726469616e536574496e646578 // "currentGuardianSetIndex"
app_global_get_ex
store 73
store 72
load 73
pushint 76 // 76
&&
assert
load 72
retsub
// getMessageFee
getMessageFee_8:
bytec_1 // "coreid"
app_global_get
pushbytes 0x4d657373616765466565 // "MessageFee"
app_global_get_ex
store 75
store 74
load 75
pushint 81 // 81
&&
assert
load 74
retsub
// getNextAddress
getNextAddress_9:
txn GroupIndex
intc_1 // 1
+
gtxns ApplicationID
app_params_get AppAddress
store 77
store 76
load 77
pushint 86 // 86
&&
assert
load 76
retsub
// checkFeePmt
checkFeePmt_10:
store 78
load 23
intc_0 // 0
>
bz checkFeePmt_10_l2
txn GroupIndex
load 78
-
store 22
load 22
gtxns TypeEnum
intc_1 // pay
==
load 22
gtxns Sender
txn Sender
==
&&
load 22
gtxns Receiver
global CurrentApplicationAddress
==
&&
load 22
gtxns Amount
load 23
>=
&&
pushint 100 // 100
&&
assert
load 22
gtxns RekeyTo
global ZeroAddress
==
load 22
gtxns CloseRemainderTo
global ZeroAddress
==
&&
load 22
gtxns AssetCloseTo
global ZeroAddress
==
&&
pushint 89 // 89
&&
assert
checkFeePmt_10_l2:
retsub
// sendMfee
sendMfee_11:
load 23
intc_0 // 0
>
bz sendMfee_11_l2
intc_1 // pay
itxn_field TypeEnum
bytec 10 // "coreAddr"
app_global_get
itxn_field Receiver
load 23
itxn_field Amount
intc_0 // 0
itxn_field Fee
itxn_next
sendMfee_11_l2:
retsub
// encode_uvarint
encodeuvarint_12:
store 87
store 86
load 87
load 86
intc 6 // 128
>=
bnz encodeuvarint_12_l2
load 86
intc 7 // 255
&
itob
extract 7 1
b encodeuvarint_12_l3
encodeuvarint_12_l2:
load 86
pushint 7 // 7
shr
load 86
intc 7 // 255
&
intc 6 // 128
|
itob
extract 7 1
load 86
load 87
uncover 3
uncover 3
callsub encodeuvarint_12
cover 2
store 87
store 86
encodeuvarint_12_l3:
concat
retsub
// trim_bytes
trimbytes_13:
store 82
load 82
len
store 79
intc_1 // 1
bzero
store 81
intc_0 // 0
store 80
trimbytes_13_l1:
load 80
load 79
<
bz trimbytes_13_l5
load 82
load 80
intc_1 // 1
extract3
load 81
==
bnz trimbytes_13_l4
trimbytes_13_l3:
load 80
intc_1 // 1
+
store 80
b trimbytes_13_l1
trimbytes_13_l4:
load 82
intc_0 // 0
load 80
extract3
store 82
load 79
store 80
b trimbytes_13_l3
trimbytes_13_l5:
load 82
retsub
// getFactor
getFactor_14:
store 83
load 83
pushint 9 // 9
==
bnz getFactor_14_l20
load 83
pushint 10 // 10
==
bnz getFactor_14_l19
load 83
pushint 11 // 11
==
bnz getFactor_14_l18
load 83
pushint 12 // 12
==
bnz getFactor_14_l17
load 83
pushint 13 // 13
==
bnz getFactor_14_l16
load 83
pushint 14 // 14
==
bnz getFactor_14_l15
load 83
pushint 15 // 15
==
bnz getFactor_14_l14
load 83
pushint 16 // 16
==
bnz getFactor_14_l13
load 83
pushint 16 // 16
>
bnz getFactor_14_l12
load 83
pushint 9 // 9
<
bnz getFactor_14_l11
err
getFactor_14_l11:
intc_1 // 1
b getFactor_14_l21
getFactor_14_l12:
intc_0 // 0
return
intc_1 // 1
getFactor_14_l13:
pushint 100000000 // 100000000
b getFactor_14_l21
getFactor_14_l14:
pushint 10000000 // 10000000
b getFactor_14_l21
getFactor_14_l15:
pushint 1000000 // 1000000
b getFactor_14_l21
getFactor_14_l16:
intc 5 // 100000
b getFactor_14_l21
getFactor_14_l17:
pushint 10000 // 10000
b getFactor_14_l21
getFactor_14_l18:
pushint 1000 // 1000
b getFactor_14_l21
getFactor_14_l19:
pushint 100 // 100
b getFactor_14_l21
getFactor_14_l20:
pushint 10 // 10
getFactor_14_l21:
retsub
// get_sig_address
getsigaddress_15:
store 85
store 84
pushbytes 0x50726f6772616d // "Program"
pushbytes 0x0620010181 // 0x0620010181
concat
load 84
bytec_0 // ""
callsub encodeuvarint_12
concat
pushbytes 0x4880 // 0x4880
concat
load 85
len
bytec_0 // ""
callsub encodeuvarint_12
concat
load 85
concat
pushbytes 0x483110810612443119221244311881 // 0x483110810612443119221244311881
concat
global CurrentApplicationID
bytec_0 // ""
callsub encodeuvarint_12
concat
pushbytes 0x1244312080 // 0x1244312080
concat
global CurrentApplicationAddress
len
bytec_0 // ""
callsub encodeuvarint_12
concat
global CurrentApplicationAddress
concat
pushbytes 0x124431018100124431093203124431153203124422 // 0x124431018100124431093203124431153203124422
concat
sha512_256
retsub
// auth_addr
authaddr_16:
acct_params_get AcctAuthAddr
store 89
store 88
load 89
bnz authaddr_16_l2
bytec_0 // ""
b authaddr_16_l3
authaddr_16_l2:
load 88
authaddr_16_l3:
retsub
// extract_name
extractname_17:
asset_params_get AssetName
store 91
store 90
load 91
bnz extractname_17_l2
bytec_0 // ""
b extractname_17_l3
extractname_17_l2:
load 90
extractname_17_l3:
retsub
// extract_creator
extractcreator_18:
asset_params_get AssetCreator
store 93
store 92
load 93
bnz extractcreator_18_l2
bytec_0 // ""
b extractcreator_18_l3
extractcreator_18_l2:
load 92
extractcreator_18_l3:
retsub
// extract_unit_name
extractunitname_19:
asset_params_get AssetUnitName
store 95
store 94
load 95
bnz extractunitname_19_l2
bytec_0 // ""
b extractunitname_19_l3
extractunitname_19_l2:
load 94
extractunitname_19_l3:
retsub
// extract_decimal
extractdecimal_20:
asset_params_get AssetDecimals
store 97
store 96
load 97
bnz extractdecimal_20_l2
pushbytes 0x00 // 0x00
b extractdecimal_20_l3
extractdecimal_20_l2:
load 96
itob
extract 7 1
extractdecimal_20_l3:
retsub
// checkForDuplicate
checkForDuplicate_21:
txna ApplicationArgs 1
extract 0 1
btoi
intc_1 // 1
==
pushint 933 // 933
&&
assert
txna ApplicationArgs 1
extract 5 1
btoi
pushint 66 // 66
*
pushint 14 // 14
+
store 98
txna ApplicationArgs 1
load 98
pushint 34 // 34
extract3
store 99
txna ApplicationArgs 1
load 98
pushint 34 // 34
+
pushint 8 // 8
extract3
btoi
store 100
load 100
pushint 15240 // 15240
/
store 102
txna Accounts 1
load 102
load 99
callsub getsigaddress_15
==
pushint 943 // 943
&&
assert
load 100
pushint 8 // 8
/
pushint 1905 // 1905
%
store 102
intc_1 // 1
load 102
callsub getbyte_2
store 101
load 101
load 100
pushint 8 // 8
%
getbit
intc_0 // 0
==
pushint 950 // 950
&&
assert
intc_1 // 1
load 102
load 101
load 100
pushint 8 // 8
%
intc_1 // 1
setbit
callsub setbyte_3
retsub
// optin
optin_22:
gtxn 0 TypeEnum
intc_1 // pay
==
gtxn 0 Amount
pushint 1002000 // 1002000
==
&&
gtxn 1 TypeEnum
pushint 6 // appl
==
&&
gtxn 1 OnCompletion
intc_1 // OptIn
==
&&
pushint 1008 // 1008
&&
assert
intc_0 // 0
callsub zero_1
intc_1 // 1
retsub