Package
0x0000000000000000000000000000000000000000000000000000000000000002
- version
- 1
- digest
- CYyH6fYH4zLYzQyoz4qBbzx7QzygRs9P1mpu5Xb3a2KC
- previous transaction
- AzYEMWffCQNx3cGBpTYqdvYpiisYSghXsUtPZXg5a9EJ
- last modified
- Jul 30, 7:04:59 PM
- checkpoint
- 0
Modules (55)
accumulator
// Move bytecode v6
module 2.accumulator {
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct AccumulatorRoot has key {
id: UID
}
struct Key<phantom Ty0> has copy, drop, store {
address: address
}
struct U128 has store {
value: u128
}
create(Arg0: &TxContext) {
B0:
0: MoveLoc[0](Arg0: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[2](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(8)
B2:
6: LdConst[0](u64: 0)
7: Abort
B3:
8: Call object::safe_accumulator_root_object_id(): UID
9: Pack[0](AccumulatorRoot)
10: Call transfer::share_object<AccumulatorRoot>(AccumulatorRoot)
11: Ret
}
public(friend) accumulator_address<Ty0>(Arg0: address): address {
L1: loc0: Key<Ty0>
B0:
0: MoveLoc[0](Arg0: address)
1: PackGeneric[0](Key<Ty0>)
2: StLoc[1](loc0: Key<Ty0>)
3: Call object::safe_accumulator_root_address(): address
4: MoveLoc[1](loc0: Key<Ty0>)
5: Call dynamic_field::hash_type_and_key<Key<Ty0>>(address, Key<Ty0>): address
6: Ret
}
root_has_accumulator<Ty0, Ty1: store>(Arg0: &AccumulatorRoot, Arg1: Key<Ty0>): bool {
B0:
0: MoveLoc[0](Arg0: &AccumulatorRoot)
1: ImmBorrowField[0](AccumulatorRoot.id: UID)
2: MoveLoc[1](Arg1: Key<Ty0>)
3: Call dynamic_field::exists_with_type<Key<Ty0>, Ty1>(&UID, Key<Ty0>): bool
4: Ret
}
root_add_accumulator<Ty0, Ty1: store>(Arg0: &mut AccumulatorRoot, Arg1: Key<Ty0>, Arg2: Ty1) {
B0:
0: MoveLoc[0](Arg0: &mut AccumulatorRoot)
1: MutBorrowField[0](AccumulatorRoot.id: UID)
2: MoveLoc[1](Arg1: Key<Ty0>)
3: MoveLoc[2](Arg2: Ty1)
4: Call dynamic_field::add<Key<Ty0>, Ty1>(&mut UID, Key<Ty0>, Ty1)
5: Ret
}
root_borrow_accumulator_mut<Ty0, Ty1: store>(Arg0: &mut AccumulatorRoot, Arg1: Key<Ty0>): &mut Ty1 {
B0:
0: MoveLoc[0](Arg0: &mut AccumulatorRoot)
1: MutBorrowField[0](AccumulatorRoot.id: UID)
2: MoveLoc[1](Arg1: Key<Ty0>)
3: Call dynamic_field::borrow_mut<Key<Ty0>, Ty1>(&mut UID, Key<Ty0>): &mut Ty1
4: Ret
}
root_remove_accumulator<Ty0, Ty1: store>(Arg0: &mut AccumulatorRoot, Arg1: Key<Ty0>): Ty1 {
B0:
0: MoveLoc[0](Arg0: &mut AccumulatorRoot)
1: MutBorrowField[0](AccumulatorRoot.id: UID)
2: MoveLoc[1](Arg1: Key<Ty0>)
3: Call dynamic_field::remove<Key<Ty0>, Ty1>(&mut UID, Key<Ty0>): Ty1
4: Ret
}
settlement_prologue(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: &TxContext) {
B0:
0: MoveLoc[3](Arg3: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[2](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(8)
B2:
6: LdConst[0](u64: 0)
7: Abort
B3:
8: Ret
}
settle_u128<Ty0>(Arg0: &mut AccumulatorRoot, Arg1: address, Arg2: u128, Arg3: u128, Arg4: &TxContext) {
L5: loc0: Key<Ty0>
L6: loc1: &mut U128
L7: loc2: U128
B0:
0: MoveLoc[4](Arg4: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[2](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(10)
B2:
6: MoveLoc[0](Arg0: &mut AccumulatorRoot)
7: Pop
8: LdConst[0](u64: 0)
9: Abort
B3:
10: CopyLoc[2](Arg2: u128)
11: LdU128(0)
12: Eq
13: CopyLoc[3](Arg3: u128)
14: LdU128(0)
15: Eq
16: Neq
17: BrFalse(19)
B4:
18: Branch(23)
B5:
19: MoveLoc[0](Arg0: &mut AccumulatorRoot)
20: Pop
21: LdConst[1](u64: 1)
22: Abort
B6:
23: MoveLoc[1](Arg1: address)
24: PackGeneric[0](Key<Ty0>)
25: StLoc[5](loc0: Key<Ty0>)
26: CopyLoc[0](Arg0: &mut AccumulatorRoot)
27: FreezeRef
28: CopyLoc[5](loc0: Key<Ty0>)
29: Call root_has_accumulator<Ty0, U128>(&AccumulatorRoot, Key<Ty0>): bool
30: BrFalse(60)
B7:
31: CopyLoc[0](Arg0: &mut AccumulatorRoot)
32: CopyLoc[5](loc0: Key<Ty0>)
33: Call root_borrow_accumulator_mut<Ty0, U128>(&mut AccumulatorRoot, Key<Ty0>): &mut U128
34: StLoc[6](loc1: &mut U128)
35: CopyLoc[6](loc1: &mut U128)
36: ImmBorrowField[1](U128.value: u128)
37: ReadRef
38: MoveLoc[2](Arg2: u128)
39: Add
40: MoveLoc[3](Arg3: u128)
41: Sub
42: CopyLoc[6](loc1: &mut U128)
43: MutBorrowField[1](U128.value: u128)
44: WriteRef
45: MoveLoc[6](loc1: &mut U128)
46: ImmBorrowField[1](U128.value: u128)
47: ReadRef
48: LdU128(0)
49: Eq
50: BrFalse(57)
B8:
51: MoveLoc[0](Arg0: &mut AccumulatorRoot)
52: MoveLoc[5](loc0: Key<Ty0>)
53: Call root_remove_accumulator<Ty0, U128>(&mut AccumulatorRoot, Key<Ty0>): U128
54: Unpack[2](U128)
55: Pop
56: Branch(76)
B9:
57: MoveLoc[0](Arg0: &mut AccumulatorRoot)
58: Pop
59: Branch(76)
B10:
60: MoveLoc[3](Arg3: u128)
61: LdU128(0)
62: Eq
63: BrFalse(65)
B11:
64: Branch(69)
B12:
65: MoveLoc[0](Arg0: &mut AccumulatorRoot)
66: Pop
67: LdConst[1](u64: 1)
68: Abort
B13:
69: MoveLoc[2](Arg2: u128)
70: Pack[2](U128)
71: StLoc[7](loc2: U128)
72: MoveLoc[0](Arg0: &mut AccumulatorRoot)
73: MoveLoc[5](loc0: Key<Ty0>)
74: MoveLoc[7](loc2: U128)
75: Call root_add_accumulator<Ty0, U128>(&mut AccumulatorRoot, Key<Ty0>, U128)
B14:
76: Ret
}
native public(friend) emit_deposit_event<Ty0>(Arg0: address, Arg1: address, Arg2: u64);
native public(friend) emit_withdraw_event<Ty0>(Arg0: address, Arg1: address, Arg2: u64);
Constants [
0 => u64: 0
1 => u64: 1
2 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
]
}
address
// Move bytecode v6
module 2.address {
use 0000000000000000000000000000000000000000000000000000000000000002::hex;
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::bcs;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
native public to_u256(Arg0: address): u256;
native public from_u256(Arg0: u256): address;
native public from_bytes(Arg0: vector<u8>): address;
public to_bytes(Arg0: address): vector<u8> {
B0:
0: ImmBorrowLoc[0](Arg0: address)
1: Call bcs::to_bytes<address>(&address): vector<u8>
2: Ret
}
public to_ascii_string(Arg0: address): String {
B0:
0: MoveLoc[0](Arg0: address)
1: Call to_bytes(address): vector<u8>
2: Call hex::encode(vector<u8>): vector<u8>
3: Call ascii::string(vector<u8>): String
4: Ret
}
public to_string(Arg0: address): String {
B0:
0: MoveLoc[0](Arg0: address)
1: Call to_ascii_string(address): String
2: Call string::from_ascii(String): String
3: Ret
}
public from_ascii_bytes(Arg0: &vector<u8>): address {
L1: loc0: vector<u8>
L2: loc1: u8
L3: loc2: u64
L4: loc3: u8
B0:
0: CopyLoc[0](Arg0: &vector<u8>)
1: VecLen(6)
2: LdU64(64)
3: Eq
4: BrFalse(6)
B1:
5: Branch(10)
B2:
6: MoveLoc[0](Arg0: &vector<u8>)
7: Pop
8: LdConst[2](u64: 0)
9: Abort
B3:
10: LdConst[3](vector<u8>: "" /..)
11: StLoc[1](loc0: vector<u8>)
12: LdU64(0)
13: StLoc[3](loc2: u64)
B4:
14: CopyLoc[3](loc2: u64)
15: LdU64(64)
16: Lt
17: BrFalse(44)
B5:
18: CopyLoc[0](Arg0: &vector<u8>)
19: CopyLoc[3](loc2: u64)
20: VecImmBorrow(6)
21: ReadRef
22: Call hex_char_value(u8): u8
23: StLoc[2](loc1: u8)
24: CopyLoc[0](Arg0: &vector<u8>)
25: CopyLoc[3](loc2: u64)
26: LdU64(1)
27: Add
28: VecImmBorrow(6)
29: ReadRef
30: Call hex_char_value(u8): u8
31: StLoc[4](loc3: u8)
32: MutBorrowLoc[1](loc0: vector<u8>)
33: MoveLoc[2](loc1: u8)
34: LdU8(4)
35: Shl
36: MoveLoc[4](loc3: u8)
37: BitOr
38: VecPushBack(6)
39: MoveLoc[3](loc2: u64)
40: LdU64(2)
41: Add
42: StLoc[3](loc2: u64)
43: Branch(14)
B6:
44: MoveLoc[0](Arg0: &vector<u8>)
45: Pop
46: MoveLoc[1](loc0: vector<u8>)
47: Call from_bytes(vector<u8>): address
48: Ret
}
hex_char_value(Arg0: u8): u8 {
L1: loc0: bool
L2: loc1: bool
L3: loc2: bool
L4: loc3: u8
L5: loc4: u8
B0:
0: CopyLoc[0](Arg0: u8)
1: LdU8(48)
2: Ge
3: BrFalse(9)
B1:
4: CopyLoc[0](Arg0: u8)
5: LdU8(57)
6: Le
7: StLoc[1](loc0: bool)
8: Branch(11)
B2:
9: LdFalse
10: StLoc[1](loc0: bool)
B3:
11: MoveLoc[1](loc0: bool)
12: BrFalse(18)
B4:
13: MoveLoc[0](Arg0: u8)
14: LdU8(48)
15: Sub
16: StLoc[5](loc4: u8)
17: Branch(58)
B5:
18: CopyLoc[0](Arg0: u8)
19: LdU8(65)
20: Ge
21: BrFalse(27)
B6:
22: CopyLoc[0](Arg0: u8)
23: LdU8(70)
24: Le
25: StLoc[2](loc1: bool)
26: Branch(29)
B7:
27: LdFalse
28: StLoc[2](loc1: bool)
B8:
29: MoveLoc[2](loc1: bool)
30: BrFalse(36)
B9:
31: MoveLoc[0](Arg0: u8)
32: LdU8(55)
33: Sub
34: StLoc[4](loc3: u8)
35: Branch(56)
B10:
36: CopyLoc[0](Arg0: u8)
37: LdU8(97)
38: Ge
39: BrFalse(45)
B11:
40: CopyLoc[0](Arg0: u8)
41: LdU8(102)
42: Le
43: StLoc[3](loc2: bool)
44: Branch(47)
B12:
45: LdFalse
46: StLoc[3](loc2: bool)
B13:
47: MoveLoc[3](loc2: bool)
48: BrFalse(50)
B14:
49: Branch(52)
B15:
50: LdConst[2](u64: 0)
51: Abort
B16:
52: MoveLoc[0](Arg0: u8)
53: LdU8(87)
54: Sub
55: StLoc[4](loc3: u8)
B17:
56: MoveLoc[4](loc3: u8)
57: StLoc[5](loc4: u8)
B18:
58: MoveLoc[5](loc4: u8)
59: Ret
}
public length(): u64 {
B0:
0: LdConst[0](u64: 32)
1: Ret
}
public max(): u256 {
B0:
0: LdConst[1](u256: 1157..)
1: Ret
}
Constants [
0 => u64: 32
1 => u256: 115792089237316195423570985008687907853269984665640564039457584007913129639935
2 => u64: 0
3 => vector<u8>: "" // interpreted as UTF8 string
]
}
authenticator_state
// Move bytecode v6
module 2.authenticator_state {
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
struct AuthenticatorState has key {
id: UID,
version: u64
}
struct AuthenticatorStateInner has store {
version: u64,
active_jwks: vector<ActiveJwk>
}
struct JWK has copy, drop, store {
kty: String,
e: String,
n: String,
alg: String
}
struct JwkId has copy, drop, store {
iss: String,
kid: String
}
struct ActiveJwk has copy, drop, store {
jwk_id: JwkId,
jwk: JWK,
epoch: u64
}
active_jwk_equal(Arg0: &ActiveJwk, Arg1: &ActiveJwk): bool {
L2: loc0: bool
B0:
0: CopyLoc[0](Arg0: &ActiveJwk)
1: ImmBorrowField[0](ActiveJwk.jwk: JWK)
2: CopyLoc[1](Arg1: &ActiveJwk)
3: ImmBorrowField[0](ActiveJwk.jwk: JWK)
4: Call jwk_equal(&JWK, &JWK): bool
5: BrFalse(13)
B1:
6: MoveLoc[0](Arg0: &ActiveJwk)
7: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
8: MoveLoc[1](Arg1: &ActiveJwk)
9: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
10: Call jwk_id_equal(&JwkId, &JwkId): bool
11: StLoc[2](loc0: bool)
12: Branch(19)
B2:
13: MoveLoc[1](Arg1: &ActiveJwk)
14: Pop
15: MoveLoc[0](Arg0: &ActiveJwk)
16: Pop
17: LdFalse
18: StLoc[2](loc0: bool)
B3:
19: MoveLoc[2](loc0: bool)
20: Ret
}
jwk_equal(Arg0: &JWK, Arg1: &JWK): bool {
L2: loc0: bool
B0:
0: CopyLoc[0](Arg0: &JWK)
1: ImmBorrowField[2](JWK.kty: String)
2: CopyLoc[1](Arg1: &JWK)
3: ImmBorrowField[2](JWK.kty: String)
4: Eq
5: BrFalse(39)
B1:
6: CopyLoc[0](Arg0: &JWK)
7: ImmBorrowField[3](JWK.e: String)
8: CopyLoc[1](Arg1: &JWK)
9: ImmBorrowField[3](JWK.e: String)
10: Eq
11: BrFalse(32)
B2:
12: CopyLoc[0](Arg0: &JWK)
13: ImmBorrowField[4](JWK.n: String)
14: CopyLoc[1](Arg1: &JWK)
15: ImmBorrowField[4](JWK.n: String)
16: Eq
17: BrFalse(25)
B3:
18: MoveLoc[0](Arg0: &JWK)
19: ImmBorrowField[5](JWK.alg: String)
20: MoveLoc[1](Arg1: &JWK)
21: ImmBorrowField[5](JWK.alg: String)
22: Eq
23: StLoc[2](loc0: bool)
24: Branch(45)
B4:
25: MoveLoc[1](Arg1: &JWK)
26: Pop
27: MoveLoc[0](Arg0: &JWK)
28: Pop
29: LdFalse
30: StLoc[2](loc0: bool)
31: Branch(45)
B5:
32: MoveLoc[1](Arg1: &JWK)
33: Pop
34: MoveLoc[0](Arg0: &JWK)
35: Pop
36: LdFalse
37: StLoc[2](loc0: bool)
38: Branch(45)
B6:
39: MoveLoc[1](Arg1: &JWK)
40: Pop
41: MoveLoc[0](Arg0: &JWK)
42: Pop
43: LdFalse
44: StLoc[2](loc0: bool)
B7:
45: MoveLoc[2](loc0: bool)
46: Ret
}
jwk_id_equal(Arg0: &JwkId, Arg1: &JwkId): bool {
L2: loc0: bool
B0:
0: CopyLoc[0](Arg0: &JwkId)
1: ImmBorrowField[6](JwkId.iss: String)
2: CopyLoc[1](Arg1: &JwkId)
3: ImmBorrowField[6](JwkId.iss: String)
4: Eq
5: BrFalse(13)
B1:
6: MoveLoc[0](Arg0: &JwkId)
7: ImmBorrowField[7](JwkId.kid: String)
8: MoveLoc[1](Arg1: &JwkId)
9: ImmBorrowField[7](JwkId.kid: String)
10: Eq
11: StLoc[2](loc0: bool)
12: Branch(19)
B2:
13: MoveLoc[1](Arg1: &JwkId)
14: Pop
15: MoveLoc[0](Arg0: &JwkId)
16: Pop
17: LdFalse
18: StLoc[2](loc0: bool)
B3:
19: MoveLoc[2](loc0: bool)
20: Ret
}
string_bytes_lt(Arg0: &String, Arg1: &String): bool {
L2: loc0: bool
L3: loc1: bool
L4: loc2: u8
L5: loc3: &vector<u8>
L6: loc4: u8
L7: loc5: &vector<u8>
L8: loc6: u64
B0:
0: MoveLoc[0](Arg0: &String)
1: Call string::as_bytes(&String): &vector<u8>
2: StLoc[5](loc3: &vector<u8>)
3: MoveLoc[1](Arg1: &String)
4: Call string::as_bytes(&String): &vector<u8>
5: StLoc[7](loc5: &vector<u8>)
6: CopyLoc[5](loc3: &vector<u8>)
7: VecLen(19)
8: CopyLoc[7](loc5: &vector<u8>)
9: VecLen(19)
10: Lt
11: BrFalse(19)
B1:
12: MoveLoc[7](loc5: &vector<u8>)
13: Pop
14: MoveLoc[5](loc3: &vector<u8>)
15: Pop
16: LdTrue
17: StLoc[3](loc1: bool)
18: Branch(83)
B2:
19: CopyLoc[5](loc3: &vector<u8>)
20: VecLen(19)
21: CopyLoc[7](loc5: &vector<u8>)
22: VecLen(19)
23: Gt
24: BrFalse(32)
B3:
25: MoveLoc[7](loc5: &vector<u8>)
26: Pop
27: MoveLoc[5](loc3: &vector<u8>)
28: Pop
29: LdFalse
30: StLoc[2](loc0: bool)
31: Branch(81)
B4:
32: LdU64(0)
33: StLoc[8](loc6: u64)
B5:
34: CopyLoc[8](loc6: u64)
35: CopyLoc[5](loc3: &vector<u8>)
36: VecLen(19)
37: Lt
38: BrFalse(75)
B6:
39: Branch(40)
B7:
40: CopyLoc[5](loc3: &vector<u8>)
41: CopyLoc[8](loc6: u64)
42: VecImmBorrow(19)
43: ReadRef
44: StLoc[4](loc2: u8)
45: CopyLoc[7](loc5: &vector<u8>)
46: CopyLoc[8](loc6: u64)
47: VecImmBorrow(19)
48: ReadRef
49: StLoc[6](loc4: u8)
50: CopyLoc[4](loc2: u8)
51: CopyLoc[6](loc4: u8)
52: Lt
53: BrFalse(60)
B8:
54: MoveLoc[7](loc5: &vector<u8>)
55: Pop
56: MoveLoc[5](loc3: &vector<u8>)
57: Pop
58: LdTrue
59: Ret
B9:
60: MoveLoc[4](loc2: u8)
61: MoveLoc[6](loc4: u8)
62: Gt
63: BrFalse(70)
B10:
64: MoveLoc[7](loc5: &vector<u8>)
65: Pop
66: MoveLoc[5](loc3: &vector<u8>)
67: Pop
68: LdFalse
69: Ret
B11:
70: MoveLoc[8](loc6: u64)
71: LdU64(1)
72: Add
73: StLoc[8](loc6: u64)
74: Branch(34)
B12:
75: MoveLoc[7](loc5: &vector<u8>)
76: Pop
77: MoveLoc[5](loc3: &vector<u8>)
78: Pop
79: LdFalse
80: StLoc[2](loc0: bool)
B13:
81: MoveLoc[2](loc0: bool)
82: StLoc[3](loc1: bool)
B14:
83: MoveLoc[3](loc1: bool)
84: Ret
}
jwk_lt(Arg0: &ActiveJwk, Arg1: &ActiveJwk): bool {
B0:
0: CopyLoc[0](Arg0: &ActiveJwk)
1: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
2: ImmBorrowField[6](JwkId.iss: String)
3: CopyLoc[1](Arg1: &ActiveJwk)
4: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
5: ImmBorrowField[6](JwkId.iss: String)
6: Neq
7: BrFalse(16)
B1:
8: MoveLoc[0](Arg0: &ActiveJwk)
9: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
10: ImmBorrowField[6](JwkId.iss: String)
11: MoveLoc[1](Arg1: &ActiveJwk)
12: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
13: ImmBorrowField[6](JwkId.iss: String)
14: Call string_bytes_lt(&String, &String): bool
15: Ret
B2:
16: CopyLoc[0](Arg0: &ActiveJwk)
17: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
18: ImmBorrowField[7](JwkId.kid: String)
19: CopyLoc[1](Arg1: &ActiveJwk)
20: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
21: ImmBorrowField[7](JwkId.kid: String)
22: Neq
23: BrFalse(32)
B3:
24: MoveLoc[0](Arg0: &ActiveJwk)
25: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
26: ImmBorrowField[7](JwkId.kid: String)
27: MoveLoc[1](Arg1: &ActiveJwk)
28: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
29: ImmBorrowField[7](JwkId.kid: String)
30: Call string_bytes_lt(&String, &String): bool
31: Ret
B4:
32: CopyLoc[0](Arg0: &ActiveJwk)
33: ImmBorrowField[0](ActiveJwk.jwk: JWK)
34: ImmBorrowField[2](JWK.kty: String)
35: CopyLoc[1](Arg1: &ActiveJwk)
36: ImmBorrowField[0](ActiveJwk.jwk: JWK)
37: ImmBorrowField[2](JWK.kty: String)
38: Neq
39: BrFalse(48)
B5:
40: MoveLoc[0](Arg0: &ActiveJwk)
41: ImmBorrowField[0](ActiveJwk.jwk: JWK)
42: ImmBorrowField[2](JWK.kty: String)
43: MoveLoc[1](Arg1: &ActiveJwk)
44: ImmBorrowField[0](ActiveJwk.jwk: JWK)
45: ImmBorrowField[2](JWK.kty: String)
46: Call string_bytes_lt(&String, &String): bool
47: Ret
B6:
48: CopyLoc[0](Arg0: &ActiveJwk)
49: ImmBorrowField[0](ActiveJwk.jwk: JWK)
50: ImmBorrowField[3](JWK.e: String)
51: CopyLoc[1](Arg1: &ActiveJwk)
52: ImmBorrowField[0](ActiveJwk.jwk: JWK)
53: ImmBorrowField[3](JWK.e: String)
54: Neq
55: BrFalse(64)
B7:
56: MoveLoc[0](Arg0: &ActiveJwk)
57: ImmBorrowField[0](ActiveJwk.jwk: JWK)
58: ImmBorrowField[3](JWK.e: String)
59: MoveLoc[1](Arg1: &ActiveJwk)
60: ImmBorrowField[0](ActiveJwk.jwk: JWK)
61: ImmBorrowField[3](JWK.e: String)
62: Call string_bytes_lt(&String, &String): bool
63: Ret
B8:
64: CopyLoc[0](Arg0: &ActiveJwk)
65: ImmBorrowField[0](ActiveJwk.jwk: JWK)
66: ImmBorrowField[4](JWK.n: String)
67: CopyLoc[1](Arg1: &ActiveJwk)
68: ImmBorrowField[0](ActiveJwk.jwk: JWK)
69: ImmBorrowField[4](JWK.n: String)
70: Neq
71: BrFalse(80)
B9:
72: MoveLoc[0](Arg0: &ActiveJwk)
73: ImmBorrowField[0](ActiveJwk.jwk: JWK)
74: ImmBorrowField[4](JWK.n: String)
75: MoveLoc[1](Arg1: &ActiveJwk)
76: ImmBorrowField[0](ActiveJwk.jwk: JWK)
77: ImmBorrowField[4](JWK.n: String)
78: Call string_bytes_lt(&String, &String): bool
79: Ret
B10:
80: MoveLoc[0](Arg0: &ActiveJwk)
81: ImmBorrowField[0](ActiveJwk.jwk: JWK)
82: ImmBorrowField[5](JWK.alg: String)
83: MoveLoc[1](Arg1: &ActiveJwk)
84: ImmBorrowField[0](ActiveJwk.jwk: JWK)
85: ImmBorrowField[5](JWK.alg: String)
86: Call string_bytes_lt(&String, &String): bool
87: Ret
}
create(Arg0: &TxContext) {
L1: loc0: AuthenticatorStateInner
L2: loc1: AuthenticatorState
L3: loc2: u64
B0:
0: MoveLoc[0](Arg0: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[3](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(8)
B2:
6: LdConst[0](u64: 0)
7: Abort
B3:
8: LdConst[1](u64: 1)
9: StLoc[3](loc2: u64)
10: CopyLoc[3](loc2: u64)
11: VecPack(22, 0)
12: Pack[1](AuthenticatorStateInner)
13: StLoc[1](loc0: AuthenticatorStateInner)
14: Call object::authenticator_state(): UID
15: CopyLoc[3](loc2: u64)
16: Pack[0](AuthenticatorState)
17: StLoc[2](loc1: AuthenticatorState)
18: MutBorrowLoc[2](loc1: AuthenticatorState)
19: MutBorrowField[8](AuthenticatorState.id: UID)
20: MoveLoc[3](loc2: u64)
21: MoveLoc[1](loc0: AuthenticatorStateInner)
22: Call dynamic_field::add<u64, AuthenticatorStateInner>(&mut UID, u64, AuthenticatorStateInner)
23: MoveLoc[2](loc1: AuthenticatorState)
24: Call transfer::share_object<AuthenticatorState>(AuthenticatorState)
25: Ret
}
load_inner_mut(Arg0: &mut AuthenticatorState): &mut AuthenticatorStateInner {
L1: loc0: &mut AuthenticatorStateInner
L2: loc1: u64
B0:
0: CopyLoc[0](Arg0: &mut AuthenticatorState)
1: ImmBorrowField[9](AuthenticatorState.version: u64)
2: ReadRef
3: StLoc[2](loc1: u64)
4: CopyLoc[2](loc1: u64)
5: LdConst[1](u64: 1)
6: Eq
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[0](Arg0: &mut AuthenticatorState)
10: Pop
11: LdConst[1](u64: 1)
12: Abort
B3:
13: CopyLoc[0](Arg0: &mut AuthenticatorState)
14: MutBorrowField[8](AuthenticatorState.id: UID)
15: MoveLoc[0](Arg0: &mut AuthenticatorState)
16: ImmBorrowField[9](AuthenticatorState.version: u64)
17: ReadRef
18: Call dynamic_field::borrow_mut<u64, AuthenticatorStateInner>(&mut UID, u64): &mut AuthenticatorStateInner
19: StLoc[1](loc0: &mut AuthenticatorStateInner)
20: CopyLoc[1](loc0: &mut AuthenticatorStateInner)
21: ImmBorrowField[10](AuthenticatorStateInner.version: u64)
22: ReadRef
23: MoveLoc[2](loc1: u64)
24: Eq
25: BrFalse(27)
B4:
26: Branch(31)
B5:
27: MoveLoc[1](loc0: &mut AuthenticatorStateInner)
28: Pop
29: LdConst[1](u64: 1)
30: Abort
B6:
31: MoveLoc[1](loc0: &mut AuthenticatorStateInner)
32: Ret
}
load_inner(Arg0: &AuthenticatorState): &AuthenticatorStateInner {
L1: loc0: &AuthenticatorStateInner
L2: loc1: u64
B0:
0: CopyLoc[0](Arg0: &AuthenticatorState)
1: ImmBorrowField[9](AuthenticatorState.version: u64)
2: ReadRef
3: StLoc[2](loc1: u64)
4: CopyLoc[2](loc1: u64)
5: LdConst[1](u64: 1)
6: Eq
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[0](Arg0: &AuthenticatorState)
10: Pop
11: LdConst[1](u64: 1)
12: Abort
B3:
13: CopyLoc[0](Arg0: &AuthenticatorState)
14: ImmBorrowField[8](AuthenticatorState.id: UID)
15: MoveLoc[0](Arg0: &AuthenticatorState)
16: ImmBorrowField[9](AuthenticatorState.version: u64)
17: ReadRef
18: Call dynamic_field::borrow<u64, AuthenticatorStateInner>(&UID, u64): &AuthenticatorStateInner
19: StLoc[1](loc0: &AuthenticatorStateInner)
20: CopyLoc[1](loc0: &AuthenticatorStateInner)
21: ImmBorrowField[10](AuthenticatorStateInner.version: u64)
22: ReadRef
23: MoveLoc[2](loc1: u64)
24: Eq
25: BrFalse(27)
B4:
26: Branch(31)
B5:
27: MoveLoc[1](loc0: &AuthenticatorStateInner)
28: Pop
29: LdConst[1](u64: 1)
30: Abort
B6:
31: MoveLoc[1](loc0: &AuthenticatorStateInner)
32: Ret
}
check_sorted(Arg0: &vector<ActiveJwk>) {
L1: loc0: &ActiveJwk
L2: loc1: &ActiveJwk
L3: loc2: u64
B0:
0: LdU64(0)
1: StLoc[3](loc2: u64)
B1:
2: CopyLoc[3](loc2: u64)
3: CopyLoc[0](Arg0: &vector<ActiveJwk>)
4: VecLen(22)
5: LdU64(1)
6: Sub
7: Lt
8: BrFalse(34)
B2:
9: Branch(10)
B3:
10: CopyLoc[0](Arg0: &vector<ActiveJwk>)
11: CopyLoc[3](loc2: u64)
12: VecImmBorrow(22)
13: StLoc[1](loc0: &ActiveJwk)
14: CopyLoc[0](Arg0: &vector<ActiveJwk>)
15: CopyLoc[3](loc2: u64)
16: LdU64(1)
17: Add
18: VecImmBorrow(22)
19: StLoc[2](loc1: &ActiveJwk)
20: MoveLoc[1](loc0: &ActiveJwk)
21: MoveLoc[2](loc1: &ActiveJwk)
22: Call jwk_lt(&ActiveJwk, &ActiveJwk): bool
23: BrFalse(25)
B4:
24: Branch(29)
B5:
25: MoveLoc[0](Arg0: &vector<ActiveJwk>)
26: Pop
27: LdConst[2](u64: 2)
28: Abort
B6:
29: MoveLoc[3](loc2: u64)
30: LdU64(1)
31: Add
32: StLoc[3](loc2: u64)
33: Branch(2)
B7:
34: MoveLoc[0](Arg0: &vector<ActiveJwk>)
35: Pop
36: Ret
}
update_authenticator_state(Arg0: &mut AuthenticatorState, Arg1: vector<ActiveJwk>, Arg2: &TxContext) {
L3: loc0: bool
L4: loc1: u64
L5: loc2: u64
L6: loc3: &mut AuthenticatorStateInner
L7: loc4: u64
L8: loc5: ActiveJwk
L9: loc6: vector<ActiveJwk>
L10: loc7: u64
L11: loc8: &ActiveJwk
L12: loc9: &ActiveJwk
L13: loc10: vector<ActiveJwk>
B0:
0: MoveLoc[2](Arg2: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[3](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(10)
B2:
6: MoveLoc[0](Arg0: &mut AuthenticatorState)
7: Pop
8: LdConst[0](u64: 0)
9: Abort
B3:
10: ImmBorrowLoc[1](Arg1: vector<ActiveJwk>)
11: Call check_sorted(&vector<ActiveJwk>)
12: MoveLoc[1](Arg1: vector<ActiveJwk>)
13: Call deduplicate(vector<ActiveJwk>): vector<ActiveJwk>
14: StLoc[9](loc6: vector<ActiveJwk>)
15: MoveLoc[0](Arg0: &mut AuthenticatorState)
16: Call load_inner_mut(&mut AuthenticatorState): &mut AuthenticatorStateInner
17: StLoc[6](loc3: &mut AuthenticatorStateInner)
18: VecPack(22, 0)
19: StLoc[13](loc10: vector<ActiveJwk>)
20: LdU64(0)
21: StLoc[5](loc2: u64)
22: LdU64(0)
23: StLoc[7](loc4: u64)
24: CopyLoc[6](loc3: &mut AuthenticatorStateInner)
25: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
26: VecLen(22)
27: StLoc[4](loc1: u64)
28: ImmBorrowLoc[9](loc6: vector<ActiveJwk>)
29: VecLen(22)
30: StLoc[10](loc7: u64)
B4:
31: CopyLoc[5](loc2: u64)
32: CopyLoc[4](loc1: u64)
33: Lt
34: BrFalse(40)
B5:
35: CopyLoc[7](loc4: u64)
36: CopyLoc[10](loc7: u64)
37: Lt
38: StLoc[3](loc0: bool)
39: Branch(42)
B6:
40: LdFalse
41: StLoc[3](loc0: bool)
B7:
42: MoveLoc[3](loc0: bool)
43: BrFalse(129)
B8:
44: CopyLoc[6](loc3: &mut AuthenticatorStateInner)
45: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
46: CopyLoc[5](loc2: u64)
47: VecImmBorrow(22)
48: StLoc[12](loc9: &ActiveJwk)
49: ImmBorrowLoc[9](loc6: vector<ActiveJwk>)
50: CopyLoc[7](loc4: u64)
51: VecImmBorrow(22)
52: StLoc[11](loc8: &ActiveJwk)
53: CopyLoc[12](loc9: &ActiveJwk)
54: CopyLoc[11](loc8: &ActiveJwk)
55: Call active_jwk_equal(&ActiveJwk, &ActiveJwk): bool
56: BrFalse(82)
B9:
57: CopyLoc[12](loc9: &ActiveJwk)
58: ReadRef
59: StLoc[8](loc5: ActiveJwk)
60: MoveLoc[12](loc9: &ActiveJwk)
61: ImmBorrowField[12](ActiveJwk.epoch: u64)
62: ReadRef
63: MoveLoc[11](loc8: &ActiveJwk)
64: ImmBorrowField[12](ActiveJwk.epoch: u64)
65: ReadRef
66: Call u64::max(u64, u64): u64
67: MutBorrowLoc[8](loc5: ActiveJwk)
68: MutBorrowField[12](ActiveJwk.epoch: u64)
69: WriteRef
70: MutBorrowLoc[13](loc10: vector<ActiveJwk>)
71: MoveLoc[8](loc5: ActiveJwk)
72: VecPushBack(22)
73: MoveLoc[5](loc2: u64)
74: LdU64(1)
75: Add
76: StLoc[5](loc2: u64)
77: MoveLoc[7](loc4: u64)
78: LdU64(1)
79: Add
80: StLoc[7](loc4: u64)
81: Branch(31)
B10:
82: CopyLoc[12](loc9: &ActiveJwk)
83: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
84: CopyLoc[11](loc8: &ActiveJwk)
85: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
86: Call jwk_id_equal(&JwkId, &JwkId): bool
87: BrFalse(103)
B11:
88: MoveLoc[11](loc8: &ActiveJwk)
89: Pop
90: MutBorrowLoc[13](loc10: vector<ActiveJwk>)
91: MoveLoc[12](loc9: &ActiveJwk)
92: ReadRef
93: VecPushBack(22)
94: MoveLoc[5](loc2: u64)
95: LdU64(1)
96: Add
97: StLoc[5](loc2: u64)
98: MoveLoc[7](loc4: u64)
99: LdU64(1)
100: Add
101: StLoc[7](loc4: u64)
102: Branch(31)
B12:
103: CopyLoc[12](loc9: &ActiveJwk)
104: CopyLoc[11](loc8: &ActiveJwk)
105: Call jwk_lt(&ActiveJwk, &ActiveJwk): bool
106: BrFalse(118)
B13:
107: MoveLoc[11](loc8: &ActiveJwk)
108: Pop
109: MutBorrowLoc[13](loc10: vector<ActiveJwk>)
110: MoveLoc[12](loc9: &ActiveJwk)
111: ReadRef
112: VecPushBack(22)
113: MoveLoc[5](loc2: u64)
114: LdU64(1)
115: Add
116: StLoc[5](loc2: u64)
117: Branch(31)
B14:
118: MoveLoc[12](loc9: &ActiveJwk)
119: Pop
120: MutBorrowLoc[13](loc10: vector<ActiveJwk>)
121: MoveLoc[11](loc8: &ActiveJwk)
122: ReadRef
123: VecPushBack(22)
124: MoveLoc[7](loc4: u64)
125: LdU64(1)
126: Add
127: StLoc[7](loc4: u64)
128: Branch(31)
B15:
129: CopyLoc[5](loc2: u64)
130: CopyLoc[4](loc1: u64)
131: Lt
132: BrFalse(145)
B16:
133: MutBorrowLoc[13](loc10: vector<ActiveJwk>)
134: CopyLoc[6](loc3: &mut AuthenticatorStateInner)
135: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
136: CopyLoc[5](loc2: u64)
137: VecImmBorrow(22)
138: ReadRef
139: VecPushBack(22)
140: MoveLoc[5](loc2: u64)
141: LdU64(1)
142: Add
143: StLoc[5](loc2: u64)
144: Branch(129)
B17:
145: CopyLoc[7](loc4: u64)
146: CopyLoc[10](loc7: u64)
147: Lt
148: BrFalse(160)
B18:
149: MutBorrowLoc[13](loc10: vector<ActiveJwk>)
150: ImmBorrowLoc[9](loc6: vector<ActiveJwk>)
151: CopyLoc[7](loc4: u64)
152: VecImmBorrow(22)
153: ReadRef
154: VecPushBack(22)
155: MoveLoc[7](loc4: u64)
156: LdU64(1)
157: Add
158: StLoc[7](loc4: u64)
159: Branch(145)
B19:
160: MoveLoc[13](loc10: vector<ActiveJwk>)
161: MoveLoc[6](loc3: &mut AuthenticatorStateInner)
162: MutBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
163: WriteRef
164: Ret
}
deduplicate(Arg0: vector<ActiveJwk>): vector<ActiveJwk> {
L1: loc0: u64
L2: loc1: &ActiveJwk
L3: loc2: Option<JwkId>
L4: loc3: vector<ActiveJwk>
B0:
0: VecPack(22, 0)
1: StLoc[4](loc3: vector<ActiveJwk>)
2: LdU64(0)
3: StLoc[1](loc0: u64)
4: Call option::none<JwkId>(): Option<JwkId>
5: StLoc[3](loc2: Option<JwkId>)
B1:
6: CopyLoc[1](loc0: u64)
7: ImmBorrowLoc[0](Arg0: vector<ActiveJwk>)
8: VecLen(22)
9: Lt
10: BrFalse(53)
B2:
11: Branch(12)
B3:
12: ImmBorrowLoc[0](Arg0: vector<ActiveJwk>)
13: CopyLoc[1](loc0: u64)
14: VecImmBorrow(22)
15: StLoc[2](loc1: &ActiveJwk)
16: ImmBorrowLoc[3](loc2: Option<JwkId>)
17: Call option::is_none<JwkId>(&Option<JwkId>): bool
18: BrFalse(25)
B4:
19: MutBorrowLoc[3](loc2: Option<JwkId>)
20: CopyLoc[2](loc1: &ActiveJwk)
21: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
22: ReadRef
23: Call option::fill<JwkId>(&mut Option<JwkId>, JwkId)
24: Branch(44)
B5:
25: ImmBorrowLoc[3](loc2: Option<JwkId>)
26: Call option::borrow<JwkId>(&Option<JwkId>): &JwkId
27: CopyLoc[2](loc1: &ActiveJwk)
28: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
29: Call jwk_id_equal(&JwkId, &JwkId): bool
30: BrFalse(38)
B6:
31: MoveLoc[2](loc1: &ActiveJwk)
32: Pop
33: MoveLoc[1](loc0: u64)
34: LdU64(1)
35: Add
36: StLoc[1](loc0: u64)
37: Branch(6)
B7:
38: CopyLoc[2](loc1: &ActiveJwk)
39: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
40: ReadRef
41: MutBorrowLoc[3](loc2: Option<JwkId>)
42: Call option::borrow_mut<JwkId>(&mut Option<JwkId>): &mut JwkId
43: WriteRef
B8:
44: MutBorrowLoc[4](loc3: vector<ActiveJwk>)
45: MoveLoc[2](loc1: &ActiveJwk)
46: ReadRef
47: VecPushBack(22)
48: MoveLoc[1](loc0: u64)
49: LdU64(1)
50: Add
51: StLoc[1](loc0: u64)
52: Branch(6)
B9:
53: MoveLoc[4](loc3: vector<ActiveJwk>)
54: Ret
}
expire_jwks(Arg0: &mut AuthenticatorState, Arg1: u64, Arg2: &TxContext) {
L3: loc0: bool
L4: loc1: u64
L5: loc2: &ActiveJwk
L6: loc3: &String
L7: loc4: &String
L8: loc5: u64
L9: loc6: u64
L10: loc7: &mut AuthenticatorStateInner
L11: loc8: vector<u64>
L12: loc9: u64
L13: loc10: &ActiveJwk
L14: loc11: u64
L15: loc12: vector<ActiveJwk>
L16: loc13: Option<String>
L17: loc14: Option<String>
L18: loc15: &mut u64
B0:
0: MoveLoc[2](Arg2: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[3](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(10)
B2:
6: MoveLoc[0](Arg0: &mut AuthenticatorState)
7: Pop
8: LdConst[0](u64: 0)
9: Abort
B3:
10: MoveLoc[0](Arg0: &mut AuthenticatorState)
11: Call load_inner_mut(&mut AuthenticatorState): &mut AuthenticatorStateInner
12: StLoc[10](loc7: &mut AuthenticatorStateInner)
13: CopyLoc[10](loc7: &mut AuthenticatorStateInner)
14: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
15: VecLen(22)
16: StLoc[14](loc11: u64)
17: LdConst[4](vector<u64>: 00)
18: StLoc[11](loc8: vector<u64>)
19: LdU64(0)
20: StLoc[8](loc5: u64)
21: Call option::none<String>(): Option<String>
22: StLoc[16](loc13: Option<String>)
B4:
23: CopyLoc[8](loc5: u64)
24: CopyLoc[14](loc11: u64)
25: Lt
26: BrFalse(90)
B5:
27: CopyLoc[10](loc7: &mut AuthenticatorStateInner)
28: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
29: CopyLoc[8](loc5: u64)
30: VecImmBorrow(22)
31: StLoc[5](loc2: &ActiveJwk)
32: CopyLoc[5](loc2: &ActiveJwk)
33: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
34: ImmBorrowField[6](JwkId.iss: String)
35: StLoc[6](loc3: &String)
36: ImmBorrowLoc[16](loc13: Option<String>)
37: Call option::is_none<String>(&Option<String>): bool
38: BrFalse(50)
B6:
39: Branch(40)
B7:
40: MutBorrowLoc[16](loc13: Option<String>)
41: MoveLoc[6](loc3: &String)
42: ReadRef
43: Call option::fill<String>(&mut Option<String>, String)
44: MutBorrowLoc[11](loc8: vector<u64>)
45: MoveLoc[5](loc2: &ActiveJwk)
46: ImmBorrowField[12](ActiveJwk.epoch: u64)
47: ReadRef
48: VecPushBack(37)
49: Branch(85)
B8:
50: CopyLoc[6](loc3: &String)
51: ImmBorrowLoc[16](loc13: Option<String>)
52: Call option::borrow<String>(&Option<String>): &String
53: Eq
54: BrFalse(75)
B9:
55: MoveLoc[6](loc3: &String)
56: Pop
57: ImmBorrowLoc[11](loc8: vector<u64>)
58: VecLen(37)
59: LdU64(1)
60: Sub
61: StLoc[4](loc1: u64)
62: MutBorrowLoc[11](loc8: vector<u64>)
63: MoveLoc[4](loc1: u64)
64: VecMutBorrow(37)
65: StLoc[18](loc15: &mut u64)
66: CopyLoc[18](loc15: &mut u64)
67: ReadRef
68: MoveLoc[5](loc2: &ActiveJwk)
69: ImmBorrowField[12](ActiveJwk.epoch: u64)
70: ReadRef
71: Call u64::max(u64, u64): u64
72: MoveLoc[18](loc15: &mut u64)
73: WriteRef
74: Branch(85)
B10:
75: MoveLoc[6](loc3: &String)
76: ReadRef
77: MutBorrowLoc[16](loc13: Option<String>)
78: Call option::borrow_mut<String>(&mut Option<String>): &mut String
79: WriteRef
80: MutBorrowLoc[11](loc8: vector<u64>)
81: MoveLoc[5](loc2: &ActiveJwk)
82: ImmBorrowField[12](ActiveJwk.epoch: u64)
83: ReadRef
84: VecPushBack(37)
B11:
85: MoveLoc[8](loc5: u64)
86: LdU64(1)
87: Add
88: StLoc[8](loc5: u64)
89: Branch(23)
B12:
90: VecPack(22, 0)
91: StLoc[15](loc12: vector<ActiveJwk>)
92: Call option::none<String>(): Option<String>
93: StLoc[17](loc14: Option<String>)
94: LdU64(0)
95: StLoc[9](loc6: u64)
96: LdU64(0)
97: StLoc[12](loc9: u64)
B13:
98: CopyLoc[9](loc6: u64)
99: CopyLoc[14](loc11: u64)
100: Lt
101: BrFalse(166)
B14:
102: CopyLoc[10](loc7: &mut AuthenticatorStateInner)
103: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
104: CopyLoc[9](loc6: u64)
105: VecImmBorrow(22)
106: StLoc[13](loc10: &ActiveJwk)
107: CopyLoc[13](loc10: &ActiveJwk)
108: ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
109: ImmBorrowField[6](JwkId.iss: String)
110: StLoc[7](loc4: &String)
111: ImmBorrowLoc[17](loc14: Option<String>)
112: Call option::is_none<String>(&Option<String>): bool
113: BrFalse(119)
B15:
114: MutBorrowLoc[17](loc14: Option<String>)
115: MoveLoc[7](loc4: &String)
116: ReadRef
117: Call option::fill<String>(&mut Option<String>, String)
118: Branch(136)
B16:
119: CopyLoc[7](loc4: &String)
120: ImmBorrowLoc[17](loc14: Option<String>)
121: Call option::borrow<String>(&Option<String>): &String
122: Neq
123: BrFalse(134)
B17:
124: MoveLoc[7](loc4: &String)
125: ReadRef
126: MutBorrowLoc[17](loc14: Option<String>)
127: Call option::borrow_mut<String>(&mut Option<String>): &mut String
128: WriteRef
129: MoveLoc[12](loc9: u64)
130: LdU64(1)
131: Add
132: StLoc[12](loc9: u64)
133: Branch(136)
B18:
134: MoveLoc[7](loc4: &String)
135: Pop
B19:
136: ImmBorrowLoc[11](loc8: vector<u64>)
137: CopyLoc[12](loc9: u64)
138: VecImmBorrow(37)
139: ReadRef
140: CopyLoc[1](Arg1: u64)
141: Lt
142: BrFalse(146)
B20:
143: LdTrue
144: StLoc[3](loc0: bool)
145: Branch(152)
B21:
146: CopyLoc[13](loc10: &ActiveJwk)
147: ImmBorrowField[12](ActiveJwk.epoch: u64)
148: ReadRef
149: CopyLoc[1](Arg1: u64)
150: Ge
151: StLoc[3](loc0: bool)
B22:
152: MoveLoc[3](loc0: bool)
153: BrFalse(159)
B23:
154: MutBorrowLoc[15](loc12: vector<ActiveJwk>)
155: MoveLoc[13](loc10: &ActiveJwk)
156: ReadRef
157: VecPushBack(22)
158: Branch(161)
B24:
159: MoveLoc[13](loc10: &ActiveJwk)
160: Pop
B25:
161: MoveLoc[9](loc6: u64)
162: LdU64(1)
163: Add
164: StLoc[9](loc6: u64)
165: Branch(98)
B26:
166: MoveLoc[15](loc12: vector<ActiveJwk>)
167: MoveLoc[10](loc7: &mut AuthenticatorStateInner)
168: MutBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
169: WriteRef
170: Ret
}
get_active_jwks(Arg0: &AuthenticatorState, Arg1: &TxContext): vector<ActiveJwk> {
B0:
0: MoveLoc[1](Arg1: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[3](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(10)
B2:
6: MoveLoc[0](Arg0: &AuthenticatorState)
7: Pop
8: LdConst[0](u64: 0)
9: Abort
B3:
10: MoveLoc[0](Arg0: &AuthenticatorState)
11: Call load_inner(&AuthenticatorState): &AuthenticatorStateInner
12: ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
13: ReadRef
14: Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
4 => vector<u64>: 00
]
}
bag
// Move bytecode v6
module 2.bag {
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct Bag has store, key {
id: UID,
size: u64
}
public new(Arg0: &mut TxContext): Bag {
B0:
0: MoveLoc[0](Arg0: &mut TxContext)
1: Call object::new(&mut TxContext): UID
2: LdU64(0)
3: Pack[0](Bag)
4: Ret
}
public add<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut Bag, Arg1: Ty0, Arg2: Ty1) {
B0:
0: CopyLoc[0](Arg0: &mut Bag)
1: MutBorrowField[0](Bag.id: UID)
2: MoveLoc[1](Arg1: Ty0)
3: MoveLoc[2](Arg2: Ty1)
4: Call dynamic_field::add<Ty0, Ty1>(&mut UID, Ty0, Ty1)
5: CopyLoc[0](Arg0: &mut Bag)
6: ImmBorrowField[1](Bag.size: u64)
7: ReadRef
8: LdU64(1)
9: Add
10: MoveLoc[0](Arg0: &mut Bag)
11: MutBorrowField[1](Bag.size: u64)
12: WriteRef
13: Ret
}
public borrow<Ty0: copy + drop + store, Ty1: store>(Arg0: &Bag, Arg1: Ty0): &Ty1 {
B0:
0: MoveLoc[0](Arg0: &Bag)
1: ImmBorrowField[0](Bag.id: UID)
2: MoveLoc[1](Arg1: Ty0)
3: Call dynamic_field::borrow<Ty0, Ty1>(&UID, Ty0): &Ty1
4: Ret
}
public borrow_mut<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut Bag, Arg1: Ty0): &mut Ty1 {
B0:
0: MoveLoc[0](Arg0: &mut Bag)
1: MutBorrowField[0](Bag.id: UID)
2: MoveLoc[1](Arg1: Ty0)
3: Call dynamic_field::borrow_mut<Ty0, Ty1>(&mut UID, Ty0): &mut Ty1
4: Ret
}
public remove<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut Bag, Arg1: Ty0): Ty1 {
L2: loc0: Ty1
B0:
0: CopyLoc[0](Arg0: &mut Bag)
1: MutBorrowField[0](Bag.id: UID)
2: MoveLoc[1](Arg1: Ty0)
3: Call dynamic_field::remove<Ty0, Ty1>(&mut UID, Ty0): Ty1
4: StLoc[2](loc0: Ty1)
5: CopyLoc[0](Arg0: &mut Bag)
6: ImmBorrowField[1](Bag.size: u64)
7: ReadRef
8: LdU64(1)
9: Sub
10: MoveLoc[0](Arg0: &mut Bag)
11: MutBorrowField[1](Bag.size: u64)
12: WriteRef
13: MoveLoc[2](loc0: Ty1)
14: Ret
}
public contains<Ty0: copy + drop + store>(Arg0: &Bag, Arg1: Ty0): bool {
B0:
0: MoveLoc[0](Arg0: &Bag)
1: ImmBorrowField[0](Bag.id: UID)
2: MoveLoc[1](Arg1: Ty0)
3: Call dynamic_field::exists_<Ty0>(&UID, Ty0): bool
4: Ret
}
public contains_with_type<Ty0: copy + drop + store, Ty1: store>(Arg0: &Bag, Arg1: Ty0): bool {
B0:
0: MoveLoc[0](Arg0: &Bag)
1: ImmBorrowField[0](Bag.id: UID)
2: MoveLoc[1](Arg1: Ty0)
3: Call dynamic_field::exists_with_type<Ty0, Ty1>(&UID, Ty0): bool
4: Ret
}
public length(Arg0: &Bag): u64 {
B0:
0: MoveLoc[0](Arg0: &Bag)
1: ImmBorrowField[1](Bag.size: u64)
2: ReadRef
3: Ret
}
public is_empty(Arg0: &Bag): bool {
B0:
0: MoveLoc[0](Arg0: &Bag)
1: ImmBorrowField[1](Bag.size: u64)
2: ReadRef
3: LdU64(0)
4: Eq
5: Ret
}
public destroy_empty(Arg0: Bag) {
L1: loc0: UID
L2: loc1: u64
B0:
0: MoveLoc[0](Arg0: Bag)
1: Unpack[0](Bag)
2: StLoc[2](loc1: u64)
3: StLoc[1](loc0: UID)
4: MoveLoc[2](loc1: u64)
5: LdU64(0)
6: Eq
7: BrFalse(9)
B1:
8: Branch(11)
B2:
9: LdConst[0](u64: 0)
10: Abort
B3:
11: MoveLoc[1](loc0: UID)
12: Call object::delete(UID)
13: Ret
}
Constants [
0 => u64: 0
]
}
balance
// Move bytecode v6
module 2.balance {
use 0000000000000000000000000000000000000000000000000000000000000002::accumulator;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
struct Supply<phantom Ty0> has store {
value: u64
}
struct Balance<phantom Ty0> has store {
value: u64
}
public value<Ty0>(Arg0: &Balance<Ty0>): u64 {
B0:
0: MoveLoc[0](Arg0: &Balance<Ty0>)
1: ImmBorrowFieldGeneric[0](Balance.value: u64)
2: ReadRef
3: Ret
}
public supply_value<Ty0>(Arg0: &Supply<Ty0>): u64 {
B0:
0: MoveLoc[0](Arg0: &Supply<Ty0>)
1: ImmBorrowFieldGeneric[1](Supply.value: u64)
2: ReadRef
3: Ret
}
public create_supply<Ty0: drop>(Arg0: Ty0): Supply<Ty0> {
B0:
0: LdU64(0)
1: PackGeneric[0](Supply<Ty0>)
2: Ret
}
public increase_supply<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: u64): Balance<Ty0> {
B0:
0: CopyLoc[1](Arg1: u64)
1: LdU64(18446744073709551615)
2: CopyLoc[0](Arg0: &mut Supply<Ty0>)
3: ImmBorrowFieldGeneric[1](Supply.value: u64)
4: ReadRef
5: Sub
6: Lt
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[0](Arg0: &mut Supply<Ty0>)
10: Pop
11: LdConst[1](u64: 1)
12: Abort
B3:
13: CopyLoc[0](Arg0: &mut Supply<Ty0>)
14: ImmBorrowFieldGeneric[1](Supply.value: u64)
15: ReadRef
16: CopyLoc[1](Arg1: u64)
17: Add
18: MoveLoc[0](Arg0: &mut Supply<Ty0>)
19: MutBorrowFieldGeneric[1](Supply.value: u64)
20: WriteRef
21: MoveLoc[1](Arg1: u64)
22: PackGeneric[1](Balance<Ty0>)
23: Ret
}
public decrease_supply<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: Balance<Ty0>): u64 {
L2: loc0: u64
B0:
0: MoveLoc[1](Arg1: Balance<Ty0>)
1: UnpackGeneric[1](Balance<Ty0>)
2: StLoc[2](loc0: u64)
3: CopyLoc[0](Arg0: &mut Supply<Ty0>)
4: ImmBorrowFieldGeneric[1](Supply.value: u64)
5: ReadRef
6: CopyLoc[2](loc0: u64)
7: Ge
8: BrFalse(10)
B1:
9: Branch(14)
B2:
10: MoveLoc[0](Arg0: &mut Supply<Ty0>)
11: Pop
12: LdConst[1](u64: 1)
13: Abort
B3:
14: CopyLoc[0](Arg0: &mut Supply<Ty0>)
15: ImmBorrowFieldGeneric[1](Supply.value: u64)
16: ReadRef
17: CopyLoc[2](loc0: u64)
18: Sub
19: MoveLoc[0](Arg0: &mut Supply<Ty0>)
20: MutBorrowFieldGeneric[1](Supply.value: u64)
21: WriteRef
22: MoveLoc[2](loc0: u64)
23: Ret
}
public zero<Ty0>(): Balance<Ty0> {
B0:
0: LdU64(0)
1: PackGeneric[1](Balance<Ty0>)
2: Ret
}
public join<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: Balance<Ty0>): u64 {
L2: loc0: u64
B0:
0: MoveLoc[1](Arg1: Balance<Ty0>)
1: UnpackGeneric[1](Balance<Ty0>)
2: StLoc[2](loc0: u64)
3: CopyLoc[0](Arg0: &mut Balance<Ty0>)
4: ImmBorrowFieldGeneric[0](Balance.value: u64)
5: ReadRef
6: MoveLoc[2](loc0: u64)
7: Add
8: CopyLoc[0](Arg0: &mut Balance<Ty0>)
9: MutBorrowFieldGeneric[0](Balance.value: u64)
10: WriteRef
11: MoveLoc[0](Arg0: &mut Balance<Ty0>)
12: ImmBorrowFieldGeneric[0](Balance.value: u64)
13: ReadRef
14: Ret
}
public split<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: u64): Balance<Ty0> {
B0:
0: CopyLoc[0](Arg0: &mut Balance<Ty0>)
1: ImmBorrowFieldGeneric[0](Balance.value: u64)
2: ReadRef
3: CopyLoc[1](Arg1: u64)
4: Ge
5: BrFalse(7)
B1:
6: Branch(11)
B2:
7: MoveLoc[0](Arg0: &mut Balance<Ty0>)
8: Pop
9: LdConst[2](u64: 2)
10: Abort
B3:
11: CopyLoc[0](Arg0: &mut Balance<Ty0>)
12: ImmBorrowFieldGeneric[0](Balance.value: u64)
13: ReadRef
14: CopyLoc[1](Arg1: u64)
15: Sub
16: MoveLoc[0](Arg0: &mut Balance<Ty0>)
17: MutBorrowFieldGeneric[0](Balance.value: u64)
18: WriteRef
19: MoveLoc[1](Arg1: u64)
20: PackGeneric[1](Balance<Ty0>)
21: Ret
}
public withdraw_all<Ty0>(Arg0: &mut Balance<Ty0>): Balance<Ty0> {
L1: loc0: u64
B0:
0: CopyLoc[0](Arg0: &mut Balance<Ty0>)
1: ImmBorrowFieldGeneric[0](Balance.value: u64)
2: ReadRef
3: StLoc[1](loc0: u64)
4: MoveLoc[0](Arg0: &mut Balance<Ty0>)
5: MoveLoc[1](loc0: u64)
6: Call split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
7: Ret
}
public destroy_zero<Ty0>(Arg0: Balance<Ty0>) {
B0:
0: ImmBorrowLoc[0](Arg0: Balance<Ty0>)
1: ImmBorrowFieldGeneric[0](Balance.value: u64)
2: ReadRef
3: LdU64(0)
4: Eq
5: BrFalse(7)
B1:
6: Branch(9)
B2:
7: LdConst[0](u64: 0)
8: Abort
B3:
9: MoveLoc[0](Arg0: Balance<Ty0>)
10: UnpackGeneric[1](Balance<Ty0>)
11: Pop
12: Ret
}
create_staking_rewards<Ty0>(Arg0: u64, Arg1: &TxContext): Balance<Ty0> {
B0:
0: MoveLoc[1](Arg1: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[6](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(8)
B2:
6: LdConst[3](u64: 3)
7: Abort
B3:
8: Call type_name::get<Ty0>(): TypeName
9: Call type_name::into_string(TypeName): String
10: Call ascii::into_bytes(String): vector<u8>
11: LdConst[5](vector<u8>: "000..)
12: Eq
13: BrFalse(15)
B4:
14: Branch(17)
B5:
15: LdConst[4](u64: 4)
16: Abort
B6:
17: MoveLoc[0](Arg0: u64)
18: PackGeneric[1](Balance<Ty0>)
19: Ret
}
destroy_storage_rebates<Ty0>(Arg0: Balance<Ty0>, Arg1: &TxContext) {
B0:
0: MoveLoc[1](Arg1: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: LdConst[6](address: 0x00..)
3: Eq
4: BrFalse(6)
B1:
5: Branch(8)
B2:
6: LdConst[3](u64: 3)
7: Abort
B3:
8: Call type_name::get<Ty0>(): TypeName
9: Call type_name::into_string(TypeName): String
10: Call ascii::into_bytes(String): vector<u8>
11: LdConst[5](vector<u8>: "000..)
12: Eq
13: BrFalse(15)
B4:
14: Branch(17)
B5:
15: LdConst[4](u64: 4)
16: Abort
B6:
17: MoveLoc[0](Arg0: Balance<Ty0>)
18: UnpackGeneric[1](Balance<Ty0>)
19: Pop
20: Ret
}
public(friend) destroy_supply<Ty0>(Arg0: Supply<Ty0>): u64 {
B0:
0: MoveLoc[0](Arg0: Supply<Ty0>)
1: UnpackGeneric[0](Supply<Ty0>)
2: Ret
}
send_to_account<Ty0>(Arg0: Balance<Ty0>, Arg1: address) {
L2: loc0: u64
B0:
0: MoveLoc[0](Arg0: Balance<Ty0>)
1: UnpackGeneric[1](Balance<Ty0>)
2: StLoc[2](loc0: u64)
3: CopyLoc[1](Arg1: address)
4: Call accumulator::accumulator_address<Balance<Ty0>>(address): address
5: MoveLoc[1](Arg1: address)
6: MoveLoc[2](loc0: u64)
7: Call accumulator::emit_deposit_event<Balance<Ty0>>(address, address, u64)
8: Ret
}
withdraw_from_account<Ty0>(Arg0: u64, Arg1: &TxContext): Balance<Ty0> {
L2: loc0: address
L3: loc1: Balance<Ty0>
L4: loc2: address
B0:
0: MoveLoc[1](Arg1: &TxContext)
1: Call tx_context::sender(&TxContext): address
2: StLoc[4](loc2: address)
3: CopyLoc[4](loc2: address)
4: Call accumulator::accumulator_address<Balance<Ty0>>(address): address
5: StLoc[2](loc0: address)
6: CopyLoc[0](Arg0: u64)
7: PackGeneric[1](Balance<Ty0>)
8: StLoc[3](loc1: Balance<Ty0>)
9: MoveLoc[2](loc0: address)
10: MoveLoc[4](loc2: address)
11: MoveLoc[0](Arg0: u64)
12: Call accumulator::emit_withdraw_event<Balance<Ty0>>(address, address, u64)
13: MoveLoc[3](loc1: Balance<Ty0>)
14: Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => u64: 3
4 => u64: 4
5 => vector<u8>: "0000000000000000000000000000000000000000000000000000000000000002::safe::SAFE" // interpreted as UTF8 string
6 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
]
}
bcs
// Move bytecode v6
module 2.bcs {
use 0000000000000000000000000000000000000000000000000000000000000002::address;
use 0000000000000000000000000000000000000000000000000000000000000001::bcs as 1bcs;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
struct BCS has copy, drop, store {
bytes: vector<u8>
}
public to_bytes<Ty0>(Arg0: &Ty0): vector<u8> {
B0:
0: MoveLoc[0](Arg0: &Ty0)
1: Call 1bcs::to_bytes<Ty0>(&Ty0): vector<u8>
2: Ret
}
public new(Arg0: vector<u8>): BCS {
B0:
0: MutBorrowLoc[0](Arg0: vector<u8>)
1: Call vector::reverse<u8>(&mut vector<u8>)
2: MoveLoc[0](Arg0: vector<u8>)
3: Pack[0](BCS)
4: Ret
}
public into_remainder_bytes(Arg0: BCS): vector<u8> {
L1: loc0: vector<u8>
B0:
0: MoveLoc[0](Arg0: BCS)
1: Unpack[0](BCS)
2: StLoc[1](loc0: vector<u8>)
3: MutBorrowLoc[1](loc0: vector<u8>)
4: Call vector::reverse<u8>(&mut vector<u8>)
5: MoveLoc[1](loc0: vector<u8>)
6: Ret
}
public peel_address(Arg0: &mut BCS): address {
L1: loc0: u64
L2: loc1: u8
L3: loc2: &mut vector<u8>
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: vector<u8>
B0:
0: CopyLoc[0](Arg0: &mut BCS)
1: ImmBorrowField[0](BCS.bytes: vector<u8>)
2: VecLen(6)
3: Call address::length(): u64
4: Ge
5: BrFalse(7)
B1:
6: Branch(11)
B2:
7: MoveLoc[0](Arg0: &mut BCS)
8: Pop
9: LdConst[0](u64: 0)
10: Abort
B3:
11: LdConst[3](vector<u8>: "" /..)
12: StLoc[7](loc6: vector<u8>)
13: Call address::length(): u64
14: StLoc[1](loc0: u64)
15: LdU64(0)
16: StLoc[5](loc4: u64)
17: MoveLoc[1](loc0: u64)
18: StLoc[6](loc5: u64)
B4:
19: CopyLoc[5](loc4: u64)
20: CopyLoc[6](loc5: u64)
21: Lt
22: BrFalse(41)
B5:
23: CopyLoc[5](loc4: u64)
24: StLoc[4](loc3: u64)
25: MutBorrowLoc[7](loc6: vector<u8>)
26: StLoc[3](loc2: &mut vector<u8>)
27: MoveLoc[4](loc3: u64)
28: Pop
29: CopyLoc[0](Arg0: &mut BCS)
30: MutBorrowField[0](BCS.bytes: vector<u8>)
31: VecPopBack(6)
32: StLoc[2](loc1: u8)
33: MoveLoc[3](loc2: &mut vector<u8>)
34: MoveLoc[2](loc1: u8)
35: VecPushBack(6)
36: MoveLoc[5](loc4: u64)
37: LdU64(1)
38: Add
39: StLoc[5](loc4: u64)
40: Branch(19)
B6:
41: MoveLoc[0](Arg0: &mut BCS)
42: Pop
43: MoveLoc[7](loc6: vector<u8>)
44: Call address::from_bytes(vector<u8>): address
45: Ret
}
public peel_bool(Arg0: &mut BCS): bool {
L1: loc0: bool
L2: loc1: u8
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: Call peel_u8(&mut BCS): u8
2: StLoc[2](loc1: u8)
3: CopyLoc[2](loc1: u8)
4: LdU8(0)
5: Eq
6: BrFalse(10)
B1:
7: LdFalse
8: StLoc[1](loc0: bool)
9: Branch(19)
B2:
10: MoveLoc[2](loc1: u8)
11: LdU8(1)
12: Eq
13: BrFalse(15)
B3:
14: Branch(17)
B4:
15: LdConst[1](u64: 1)
16: Abort
B5:
17: LdTrue
18: StLoc[1](loc0: bool)
B6:
19: MoveLoc[1](loc0: bool)
20: Ret
}
public peel_u8(Arg0: &mut BCS): u8 {
B0:
0: CopyLoc[0](Arg0: &mut BCS)
1: ImmBorrowField[0](BCS.bytes: vector<u8>)
2: VecLen(6)
3: LdU64(1)
4: Ge
5: BrFalse(7)
B1:
6: Branch(11)
B2:
7: MoveLoc[0](Arg0: &mut BCS)
8: Pop
9: LdConst[0](u64: 0)
10: Abort
B3:
11: MoveLoc[0](Arg0: &mut BCS)
12: MutBorrowField[0](BCS.bytes: vector<u8>)
13: VecPopBack(6)
14: Ret
}
public peel_u16(Arg0: &mut BCS): u16 {
L1: loc0: &mut BCS
L2: loc1: u16
L3: loc2: u8
L4: loc3: u16
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[1](loc0: &mut BCS)
2: CopyLoc[1](loc0: &mut BCS)
3: ImmBorrowField[0](BCS.bytes: vector<u8>)
4: VecLen(6)
5: LdU64(2)
6: Ge
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[1](loc0: &mut BCS)
10: Pop
11: LdConst[0](u64: 0)
12: Abort
B3:
13: LdU16(0)
14: StLoc[4](loc3: u16)
15: LdU8(0)
16: StLoc[3](loc2: u8)
B4:
17: CopyLoc[3](loc2: u8)
18: LdU8(16)
19: Lt
20: BrFalse(38)
B5:
21: CopyLoc[1](loc0: &mut BCS)
22: MutBorrowField[0](BCS.bytes: vector<u8>)
23: VecPopBack(6)
24: CastU16
25: StLoc[2](loc1: u16)
26: MoveLoc[4](loc3: u16)
27: MoveLoc[2](loc1: u16)
28: CopyLoc[3](loc2: u8)
29: CastU8
30: Shl
31: Add
32: StLoc[4](loc3: u16)
33: MoveLoc[3](loc2: u8)
34: LdU8(8)
35: Add
36: StLoc[3](loc2: u8)
37: Branch(17)
B6:
38: MoveLoc[1](loc0: &mut BCS)
39: Pop
40: MoveLoc[4](loc3: u16)
41: Ret
}
public peel_u32(Arg0: &mut BCS): u32 {
L1: loc0: &mut BCS
L2: loc1: u32
L3: loc2: u8
L4: loc3: u32
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[1](loc0: &mut BCS)
2: CopyLoc[1](loc0: &mut BCS)
3: ImmBorrowField[0](BCS.bytes: vector<u8>)
4: VecLen(6)
5: LdU64(4)
6: Ge
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[1](loc0: &mut BCS)
10: Pop
11: LdConst[0](u64: 0)
12: Abort
B3:
13: LdU32(0)
14: StLoc[4](loc3: u32)
15: LdU8(0)
16: StLoc[3](loc2: u8)
B4:
17: CopyLoc[3](loc2: u8)
18: LdU8(32)
19: Lt
20: BrFalse(38)
B5:
21: CopyLoc[1](loc0: &mut BCS)
22: MutBorrowField[0](BCS.bytes: vector<u8>)
23: VecPopBack(6)
24: CastU32
25: StLoc[2](loc1: u32)
26: MoveLoc[4](loc3: u32)
27: MoveLoc[2](loc1: u32)
28: CopyLoc[3](loc2: u8)
29: CastU8
30: Shl
31: Add
32: StLoc[4](loc3: u32)
33: MoveLoc[3](loc2: u8)
34: LdU8(8)
35: Add
36: StLoc[3](loc2: u8)
37: Branch(17)
B6:
38: MoveLoc[1](loc0: &mut BCS)
39: Pop
40: MoveLoc[4](loc3: u32)
41: Ret
}
public peel_u64(Arg0: &mut BCS): u64 {
L1: loc0: &mut BCS
L2: loc1: u64
L3: loc2: u8
L4: loc3: u64
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[1](loc0: &mut BCS)
2: CopyLoc[1](loc0: &mut BCS)
3: ImmBorrowField[0](BCS.bytes: vector<u8>)
4: VecLen(6)
5: LdU64(8)
6: Ge
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[1](loc0: &mut BCS)
10: Pop
11: LdConst[0](u64: 0)
12: Abort
B3:
13: LdU64(0)
14: StLoc[4](loc3: u64)
15: LdU8(0)
16: StLoc[3](loc2: u8)
B4:
17: CopyLoc[3](loc2: u8)
18: LdU8(64)
19: Lt
20: BrFalse(38)
B5:
21: CopyLoc[1](loc0: &mut BCS)
22: MutBorrowField[0](BCS.bytes: vector<u8>)
23: VecPopBack(6)
24: CastU64
25: StLoc[2](loc1: u64)
26: MoveLoc[4](loc3: u64)
27: MoveLoc[2](loc1: u64)
28: CopyLoc[3](loc2: u8)
29: CastU8
30: Shl
31: Add
32: StLoc[4](loc3: u64)
33: MoveLoc[3](loc2: u8)
34: LdU8(8)
35: Add
36: StLoc[3](loc2: u8)
37: Branch(17)
B6:
38: MoveLoc[1](loc0: &mut BCS)
39: Pop
40: MoveLoc[4](loc3: u64)
41: Ret
}
public peel_u128(Arg0: &mut BCS): u128 {
L1: loc0: &mut BCS
L2: loc1: u128
L3: loc2: u8
L4: loc3: u128
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[1](loc0: &mut BCS)
2: CopyLoc[1](loc0: &mut BCS)
3: ImmBorrowField[0](BCS.bytes: vector<u8>)
4: VecLen(6)
5: LdU64(16)
6: Ge
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[1](loc0: &mut BCS)
10: Pop
11: LdConst[0](u64: 0)
12: Abort
B3:
13: LdU128(0)
14: StLoc[4](loc3: u128)
15: LdU8(0)
16: StLoc[3](loc2: u8)
B4:
17: CopyLoc[3](loc2: u8)
18: LdU8(128)
19: Lt
20: BrFalse(38)
B5:
21: CopyLoc[1](loc0: &mut BCS)
22: MutBorrowField[0](BCS.bytes: vector<u8>)
23: VecPopBack(6)
24: CastU128
25: StLoc[2](loc1: u128)
26: MoveLoc[4](loc3: u128)
27: MoveLoc[2](loc1: u128)
28: CopyLoc[3](loc2: u8)
29: CastU8
30: Shl
31: Add
32: StLoc[4](loc3: u128)
33: MoveLoc[3](loc2: u8)
34: LdU8(8)
35: Add
36: StLoc[3](loc2: u8)
37: Branch(17)
B6:
38: MoveLoc[1](loc0: &mut BCS)
39: Pop
40: MoveLoc[4](loc3: u128)
41: Ret
}
public peel_u256(Arg0: &mut BCS): u256 {
L1: loc0: &mut BCS
L2: loc1: u256
L3: loc2: u16
L4: loc3: u256
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[1](loc0: &mut BCS)
2: CopyLoc[1](loc0: &mut BCS)
3: ImmBorrowField[0](BCS.bytes: vector<u8>)
4: VecLen(6)
5: LdU64(32)
6: Ge
7: BrFalse(9)
B1:
8: Branch(13)
B2:
9: MoveLoc[1](loc0: &mut BCS)
10: Pop
11: LdConst[0](u64: 0)
12: Abort
B3:
13: LdU256(0)
14: StLoc[4](loc3: u256)
15: LdU16(0)
16: StLoc[3](loc2: u16)
B4:
17: CopyLoc[3](loc2: u16)
18: LdU16(256)
19: Lt
20: BrFalse(38)
B5:
21: CopyLoc[1](loc0: &mut BCS)
22: MutBorrowField[0](BCS.bytes: vector<u8>)
23: VecPopBack(6)
24: CastU256
25: StLoc[2](loc1: u256)
26: MoveLoc[4](loc3: u256)
27: MoveLoc[2](loc1: u256)
28: CopyLoc[3](loc2: u16)
29: CastU8
30: Shl
31: Add
32: StLoc[4](loc3: u256)
33: MoveLoc[3](loc2: u16)
34: LdU16(8)
35: Add
36: StLoc[3](loc2: u16)
37: Branch(17)
B6:
38: MoveLoc[1](loc0: &mut BCS)
39: Pop
40: MoveLoc[4](loc3: u256)
41: Ret
}
public peel_vec_length(Arg0: &mut BCS): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u8
L4: loc3: u64
B0:
0: LdU64(0)
1: LdU8(0)
2: LdU64(0)
3: StLoc[2](loc1: u64)
4: StLoc[3](loc2: u8)
5: StLoc[4](loc3: u64)
B1:
6: CopyLoc[2](loc1: u64)
7: LdU64(4)
8: Le
9: BrFalse(11)
B2:
10: Branch(15)
B3:
11: MoveLoc[0](Arg0: &mut BCS)
12: Pop
13: LdConst[2](u64: 2)
14: Abort
B4:
15: CopyLoc[0](Arg0: &mut BCS)
16: MutBorrowField[0](BCS.bytes: vector<u8>)
17: VecPopBack(6)
18: CastU64
19: StLoc[1](loc0: u64)
20: MoveLoc[2](loc1: u64)
21: LdU64(1)
22: Add
23: StLoc[2](loc1: u64)
24: MoveLoc[4](loc3: u64)
25: CopyLoc[1](loc0: u64)
26: LdU64(127)
27: BitAnd
28: CopyLoc[3](loc2: u8)
29: Shl
30: BitOr
31: StLoc[4](loc3: u64)
32: MoveLoc[1](loc0: u64)
33: LdU64(128)
34: BitAnd
35: LdU64(0)
36: Eq
37: BrFalse(39)
B5:
38: Branch(44)
B6:
39: MoveLoc[3](loc2: u8)
40: LdU8(7)
41: Add
42: StLoc[3](loc2: u8)
43: Branch(6)
B7:
44: MoveLoc[0](Arg0: &mut BCS)
45: Pop
46: MoveLoc[4](loc3: u64)
47: Ret
}
public peel_vec_address(Arg0: &mut BCS): vector<address> {
L1: loc0: u64
L2: loc1: address
L3: loc2: &mut vector<address>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<address>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[4](vector<address>: 00)
3: StLoc[8](loc7: vector<address>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<address>)
18: StLoc[3](loc2: &mut vector<address>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_address(&mut BCS): address
23: StLoc[2](loc1: address)
24: MoveLoc[3](loc2: &mut vector<address>)
25: MoveLoc[2](loc1: address)
26: VecPushBack(4)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<address>)
35: Ret
}
public peel_vec_bool(Arg0: &mut BCS): vector<bool> {
L1: loc0: u64
L2: loc1: bool
L3: loc2: &mut vector<bool>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<bool>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[5](vector<bool>: 00)
3: StLoc[8](loc7: vector<bool>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<bool>)
18: StLoc[3](loc2: &mut vector<bool>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_bool(&mut BCS): bool
23: StLoc[2](loc1: bool)
24: MoveLoc[3](loc2: &mut vector<bool>)
25: MoveLoc[2](loc1: bool)
26: VecPushBack(5)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<bool>)
35: Ret
}
public peel_vec_u8(Arg0: &mut BCS): vector<u8> {
L1: loc0: u64
L2: loc1: u8
L3: loc2: &mut vector<u8>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<u8>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[3](vector<u8>: "" /..)
3: StLoc[8](loc7: vector<u8>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<u8>)
18: StLoc[3](loc2: &mut vector<u8>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_u8(&mut BCS): u8
23: StLoc[2](loc1: u8)
24: MoveLoc[3](loc2: &mut vector<u8>)
25: MoveLoc[2](loc1: u8)
26: VecPushBack(6)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<u8>)
35: Ret
}
public peel_vec_vec_u8(Arg0: &mut BCS): vector<vector<u8>> {
L1: loc0: u64
L2: loc1: vector<u8>
L3: loc2: &mut vector<vector<u8>>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<vector<u8>>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[6](vector<vector<u8>>: 00)
3: StLoc[8](loc7: vector<vector<u8>>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<vector<u8>>)
18: StLoc[3](loc2: &mut vector<vector<u8>>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_vec_u8(&mut BCS): vector<u8>
23: StLoc[2](loc1: vector<u8>)
24: MoveLoc[3](loc2: &mut vector<vector<u8>>)
25: MoveLoc[2](loc1: vector<u8>)
26: VecPushBack(1)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<vector<u8>>)
35: Ret
}
public peel_vec_u16(Arg0: &mut BCS): vector<u16> {
L1: loc0: u64
L2: loc1: u16
L3: loc2: &mut vector<u16>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<u16>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[7](vector<u16>: 00)
3: StLoc[8](loc7: vector<u16>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<u16>)
18: StLoc[3](loc2: &mut vector<u16>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_u16(&mut BCS): u16
23: StLoc[2](loc1: u16)
24: MoveLoc[3](loc2: &mut vector<u16>)
25: MoveLoc[2](loc1: u16)
26: VecPushBack(7)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<u16>)
35: Ret
}
public peel_vec_u32(Arg0: &mut BCS): vector<u32> {
L1: loc0: u64
L2: loc1: u32
L3: loc2: &mut vector<u32>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<u32>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[8](vector<u32>: 00)
3: StLoc[8](loc7: vector<u32>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<u32>)
18: StLoc[3](loc2: &mut vector<u32>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_u32(&mut BCS): u32
23: StLoc[2](loc1: u32)
24: MoveLoc[3](loc2: &mut vector<u32>)
25: MoveLoc[2](loc1: u32)
26: VecPushBack(8)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<u32>)
35: Ret
}
public peel_vec_u64(Arg0: &mut BCS): vector<u64> {
L1: loc0: u64
L2: loc1: u64
L3: loc2: &mut vector<u64>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<u64>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[9](vector<u64>: 00)
3: StLoc[8](loc7: vector<u64>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<u64>)
18: StLoc[3](loc2: &mut vector<u64>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_u64(&mut BCS): u64
23: StLoc[2](loc1: u64)
24: MoveLoc[3](loc2: &mut vector<u64>)
25: MoveLoc[2](loc1: u64)
26: VecPushBack(9)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<u64>)
35: Ret
}
public peel_vec_u128(Arg0: &mut BCS): vector<u128> {
L1: loc0: u64
L2: loc1: u128
L3: loc2: &mut vector<u128>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<u128>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[10](vector<u128>: 00)
3: StLoc[8](loc7: vector<u128>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<u128>)
18: StLoc[3](loc2: &mut vector<u128>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_u128(&mut BCS): u128
23: StLoc[2](loc1: u128)
24: MoveLoc[3](loc2: &mut vector<u128>)
25: MoveLoc[2](loc1: u128)
26: VecPushBack(10)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<u128>)
35: Ret
}
public peel_vec_u256(Arg0: &mut BCS): vector<u256> {
L1: loc0: u64
L2: loc1: u256
L3: loc2: &mut vector<u256>
L4: loc3: &mut BCS
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: vector<u256>
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[4](loc3: &mut BCS)
2: LdConst[11](vector<u256>: 00)
3: StLoc[8](loc7: vector<u256>)
4: CopyLoc[4](loc3: &mut BCS)
5: Call peel_vec_length(&mut BCS): u64
6: StLoc[1](loc0: u64)
7: LdU64(0)
8: StLoc[5](loc4: u64)
9: MoveLoc[1](loc0: u64)
10: StLoc[7](loc6: u64)
B1:
11: CopyLoc[5](loc4: u64)
12: CopyLoc[7](loc6: u64)
13: Lt
14: BrFalse(32)
B2:
15: CopyLoc[5](loc4: u64)
16: StLoc[6](loc5: u64)
17: MutBorrowLoc[8](loc7: vector<u256>)
18: StLoc[3](loc2: &mut vector<u256>)
19: MoveLoc[6](loc5: u64)
20: Pop
21: CopyLoc[4](loc3: &mut BCS)
22: Call peel_u256(&mut BCS): u256
23: StLoc[2](loc1: u256)
24: MoveLoc[3](loc2: &mut vector<u256>)
25: MoveLoc[2](loc1: u256)
26: VecPushBack(11)
27: MoveLoc[5](loc4: u64)
28: LdU64(1)
29: Add
30: StLoc[5](loc4: u64)
31: Branch(11)
B3:
32: MoveLoc[4](loc3: &mut BCS)
33: Pop
34: MoveLoc[8](loc7: vector<u256>)
35: Ret
}
public peel_enum_tag(Arg0: &mut BCS): u32 {
L1: loc0: u64
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: Call peel_vec_length(&mut BCS): u64
2: StLoc[1](loc0: u64)
3: CopyLoc[1](loc0: u64)
4: LdU64(4294967295)
5: Le
6: BrFalse(8)
B1:
7: Branch(10)
B2:
8: LdConst[0](u64: 0)
9: Abort
B3:
10: MoveLoc[1](loc0: u64)
11: CastU32
12: Ret
}
public peel_option_address(Arg0: &mut BCS): Option<address> {
L1: loc0: Option<address>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_address(&mut BCS): address
7: Call option::some<address>(address): Option<address>
8: StLoc[1](loc0: Option<address>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<address>(): Option<address>
13: StLoc[1](loc0: Option<address>)
B3:
14: MoveLoc[1](loc0: Option<address>)
15: Ret
}
public peel_option_bool(Arg0: &mut BCS): Option<bool> {
L1: loc0: Option<bool>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_bool(&mut BCS): bool
7: Call option::some<bool>(bool): Option<bool>
8: StLoc[1](loc0: Option<bool>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<bool>(): Option<bool>
13: StLoc[1](loc0: Option<bool>)
B3:
14: MoveLoc[1](loc0: Option<bool>)
15: Ret
}
public peel_option_u8(Arg0: &mut BCS): Option<u8> {
L1: loc0: Option<u8>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_u8(&mut BCS): u8
7: Call option::some<u8>(u8): Option<u8>
8: StLoc[1](loc0: Option<u8>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<u8>(): Option<u8>
13: StLoc[1](loc0: Option<u8>)
B3:
14: MoveLoc[1](loc0: Option<u8>)
15: Ret
}
public peel_option_u16(Arg0: &mut BCS): Option<u16> {
L1: loc0: Option<u16>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_u16(&mut BCS): u16
7: Call option::some<u16>(u16): Option<u16>
8: StLoc[1](loc0: Option<u16>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<u16>(): Option<u16>
13: StLoc[1](loc0: Option<u16>)
B3:
14: MoveLoc[1](loc0: Option<u16>)
15: Ret
}
public peel_option_u32(Arg0: &mut BCS): Option<u32> {
L1: loc0: Option<u32>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_u32(&mut BCS): u32
7: Call option::some<u32>(u32): Option<u32>
8: StLoc[1](loc0: Option<u32>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<u32>(): Option<u32>
13: StLoc[1](loc0: Option<u32>)
B3:
14: MoveLoc[1](loc0: Option<u32>)
15: Ret
}
public peel_option_u64(Arg0: &mut BCS): Option<u64> {
L1: loc0: Option<u64>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_u64(&mut BCS): u64
7: Call option::some<u64>(u64): Option<u64>
8: StLoc[1](loc0: Option<u64>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<u64>(): Option<u64>
13: StLoc[1](loc0: Option<u64>)
B3:
14: MoveLoc[1](loc0: Option<u64>)
15: Ret
}
public peel_option_u128(Arg0: &mut BCS): Option<u128> {
L1: loc0: Option<u128>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_u128(&mut BCS): u128
7: Call option::some<u128>(u128): Option<u128>
8: StLoc[1](loc0: Option<u128>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<u128>(): Option<u128>
13: StLoc[1](loc0: Option<u128>)
B3:
14: MoveLoc[1](loc0: Option<u128>)
15: Ret
}
public peel_option_u256(Arg0: &mut BCS): Option<u256> {
L1: loc0: Option<u256>
L2: loc1: &mut BCS
B0:
0: MoveLoc[0](Arg0: &mut BCS)
1: StLoc[2](loc1: &mut BCS)
2: CopyLoc[2](loc1: &mut BCS)
3: Call peel_bool(&mut BCS): bool
4: BrFalse(10)
B1:
5: MoveLoc[2](loc1: &mut BCS)
6: Call peel_u256(&mut BCS): u256
7: Call option::some<u256>(u256): Option<u256>
8: StLoc[1](loc0: Option<u256>)
9: Branch(14)
B2:
10: MoveLoc[2](loc1: &mut BCS)
11: Pop
12: Call option::none<u256>(): Option<u256>
13: StLoc[1](loc0: Option<u256>)
B3:
14: MoveLoc[1](loc0: Option<u256>)
15: Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => vector<u8>: "" // interpreted as UTF8 string
4 => vector<address>: 00
5 => vector<bool>: 00
6 => vector<vector<u8>>: 00
7 => vector<u16>: 00
8 => vector<u32>: 00
9 => vector<u64>: 00
10 => vector<u128>: 00
11 => vector<u256>: 00
]
}
bls12381
// Move bytecode v6
module 2.bls12381 {
use 0000000000000000000000000000000000000000000000000000000000000002::group_ops;
struct Scalar {
dummy_field: bool
}
struct G1 {
dummy_field: bool
}
struct G2 {
dummy_field: bool
}
struct GT {
dummy_field: bool
}
struct UncompressedG1 {
dummy_field: bool
}
native public bls12381_min_sig_verify(Arg0: &vector<u8>, Arg1: &vector<u8>, Arg2: &vector<u8>): bool;
native public bls12381_min_pk_verify(Arg0: &vector<u8>, Arg1: &vector<u8>, Arg2: &vector<u8>): bool;
public scalar_from_bytes(Arg0: &vector<u8>): Element<Scalar> {
B0:
0: LdConst[8](u8: 0)
1: MoveLoc[0](Arg0: &vector<u8>)
2: LdFalse
3: Call group_ops::from_bytes<Scalar>(u8, &vector<u8>, bool): Element<Scalar>
4: Ret
}
public scalar_from_u64(Arg0: u64): Element<Scalar> {
L1: loc0: vector<u8>
B0:
0: LdConst[0](vector<u8>: "
SafeCoin