Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

Sui Framework

authenticator_state

Move path
0x0000…0002::authenticator_state
Functions
130 public, 0 entry
Structs
5
Friend modules
None
authenticator_state

Bytecode1063 lines

The on-chain disassembly. Offsets are instruction numbers within each function.

// Move bytecode v7
module 2.authenticator_state {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
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:
0CopyLoc[0](Arg0: &ActiveJwk)
1ImmBorrowField[0](ActiveJwk.jwk: JWK)
2CopyLoc[1](Arg1: &ActiveJwk)
3ImmBorrowField[0](ActiveJwk.jwk: JWK)
4Call jwk_equal(&JWK, &JWK): bool
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &ActiveJwk)
7ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
8MoveLoc[1](Arg1: &ActiveJwk)
9ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
10Call jwk_id_equal(&JwkId, &JwkId): bool
11StLoc[2](loc0: bool)
12Branch(19)
B2:
13MoveLoc[1](Arg1: &ActiveJwk)
14Pop
15MoveLoc[0](Arg0: &ActiveJwk)
16Pop
17LdFalse
18StLoc[2](loc0: bool)
B3:
19MoveLoc[2](loc0: bool)
20Ret
}
 
jwk_equal(Arg0: &JWK, Arg1: &JWK): bool {
L2: loc0: bool
B0:
0CopyLoc[0](Arg0: &JWK)
1ImmBorrowField[2](JWK.kty: String)
2CopyLoc[1](Arg1: &JWK)
3ImmBorrowField[2](JWK.kty: String)
4Eq
5BrFalse(39)
B1:
6CopyLoc[0](Arg0: &JWK)
7ImmBorrowField[3](JWK.e: String)
8CopyLoc[1](Arg1: &JWK)
9ImmBorrowField[3](JWK.e: String)
10Eq
11BrFalse(32)
B2:
12CopyLoc[0](Arg0: &JWK)
13ImmBorrowField[4](JWK.n: String)
14CopyLoc[1](Arg1: &JWK)
15ImmBorrowField[4](JWK.n: String)
16Eq
17BrFalse(25)
B3:
18MoveLoc[0](Arg0: &JWK)
19ImmBorrowField[5](JWK.alg: String)
20MoveLoc[1](Arg1: &JWK)
21ImmBorrowField[5](JWK.alg: String)
22Eq
23StLoc[2](loc0: bool)
24Branch(45)
B4:
25MoveLoc[1](Arg1: &JWK)
26Pop
27MoveLoc[0](Arg0: &JWK)
28Pop
29LdFalse
30StLoc[2](loc0: bool)
31Branch(45)
B5:
32MoveLoc[1](Arg1: &JWK)
33Pop
34MoveLoc[0](Arg0: &JWK)
35Pop
36LdFalse
37StLoc[2](loc0: bool)
38Branch(45)
B6:
39MoveLoc[1](Arg1: &JWK)
40Pop
41MoveLoc[0](Arg0: &JWK)
42Pop
43LdFalse
44StLoc[2](loc0: bool)
B7:
45MoveLoc[2](loc0: bool)
46Ret
}
 
jwk_id_equal(Arg0: &JwkId, Arg1: &JwkId): bool {
L2: loc0: bool
B0:
0CopyLoc[0](Arg0: &JwkId)
1ImmBorrowField[6](JwkId.iss: String)
2CopyLoc[1](Arg1: &JwkId)
3ImmBorrowField[6](JwkId.iss: String)
4Eq
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &JwkId)
7ImmBorrowField[7](JwkId.kid: String)
8MoveLoc[1](Arg1: &JwkId)
9ImmBorrowField[7](JwkId.kid: String)
10Eq
11StLoc[2](loc0: bool)
12Branch(19)
B2:
13MoveLoc[1](Arg1: &JwkId)
14Pop
15MoveLoc[0](Arg0: &JwkId)
16Pop
17LdFalse
18StLoc[2](loc0: bool)
B3:
19MoveLoc[2](loc0: bool)
20Ret
}
 
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:
0MoveLoc[0](Arg0: &String)
1Call string::as_bytes(&String): &vector<u8>
2StLoc[5](loc3: &vector<u8>)
3MoveLoc[1](Arg1: &String)
4Call string::as_bytes(&String): &vector<u8>
5StLoc[7](loc5: &vector<u8>)
6CopyLoc[5](loc3: &vector<u8>)
7VecLen(19)
8CopyLoc[7](loc5: &vector<u8>)
9VecLen(19)
10Lt
11BrFalse(19)
B1:
12MoveLoc[7](loc5: &vector<u8>)
13Pop
14MoveLoc[5](loc3: &vector<u8>)
15Pop
16LdTrue
17StLoc[3](loc1: bool)
18Branch(83)
B2:
19CopyLoc[5](loc3: &vector<u8>)
20VecLen(19)
21CopyLoc[7](loc5: &vector<u8>)
22VecLen(19)
23Gt
24BrFalse(32)
B3:
25MoveLoc[7](loc5: &vector<u8>)
26Pop
27MoveLoc[5](loc3: &vector<u8>)
28Pop
29LdFalse
30StLoc[2](loc0: bool)
31Branch(81)
B4:
32LdU64(0)
33StLoc[8](loc6: u64)
B5:
34CopyLoc[8](loc6: u64)
35CopyLoc[5](loc3: &vector<u8>)
36VecLen(19)
37Lt
38BrFalse(75)
B6:
39Branch(40)
B7:
40CopyLoc[5](loc3: &vector<u8>)
41CopyLoc[8](loc6: u64)
42VecImmBorrow(19)
43ReadRef
44StLoc[4](loc2: u8)
45CopyLoc[7](loc5: &vector<u8>)
46CopyLoc[8](loc6: u64)
47VecImmBorrow(19)
48ReadRef
49StLoc[6](loc4: u8)
50CopyLoc[4](loc2: u8)
51CopyLoc[6](loc4: u8)
52Lt
53BrFalse(60)
B8:
54MoveLoc[7](loc5: &vector<u8>)
55Pop
56MoveLoc[5](loc3: &vector<u8>)
57Pop
58LdTrue
59Ret
B9:
60MoveLoc[4](loc2: u8)
61MoveLoc[6](loc4: u8)
62Gt
63BrFalse(70)
B10:
64MoveLoc[7](loc5: &vector<u8>)
65Pop
66MoveLoc[5](loc3: &vector<u8>)
67Pop
68LdFalse
69Ret
B11:
70MoveLoc[8](loc6: u64)
71LdU64(1)
72Add
73StLoc[8](loc6: u64)
74Branch(34)
B12:
75MoveLoc[7](loc5: &vector<u8>)
76Pop
77MoveLoc[5](loc3: &vector<u8>)
78Pop
79LdFalse
80StLoc[2](loc0: bool)
B13:
81MoveLoc[2](loc0: bool)
82StLoc[3](loc1: bool)
B14:
83MoveLoc[3](loc1: bool)
84Ret
}
 
jwk_lt(Arg0: &ActiveJwk, Arg1: &ActiveJwk): bool {
B0:
0CopyLoc[0](Arg0: &ActiveJwk)
1ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
2ImmBorrowField[6](JwkId.iss: String)
3CopyLoc[1](Arg1: &ActiveJwk)
4ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
5ImmBorrowField[6](JwkId.iss: String)
6Neq
7BrFalse(16)
B1:
8MoveLoc[0](Arg0: &ActiveJwk)
9ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
10ImmBorrowField[6](JwkId.iss: String)
11MoveLoc[1](Arg1: &ActiveJwk)
12ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
13ImmBorrowField[6](JwkId.iss: String)
14Call string_bytes_lt(&String, &String): bool
15Ret
B2:
16CopyLoc[0](Arg0: &ActiveJwk)
17ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
18ImmBorrowField[7](JwkId.kid: String)
19CopyLoc[1](Arg1: &ActiveJwk)
20ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
21ImmBorrowField[7](JwkId.kid: String)
22Neq
23BrFalse(32)
B3:
24MoveLoc[0](Arg0: &ActiveJwk)
25ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
26ImmBorrowField[7](JwkId.kid: String)
27MoveLoc[1](Arg1: &ActiveJwk)
28ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
29ImmBorrowField[7](JwkId.kid: String)
30Call string_bytes_lt(&String, &String): bool
31Ret
B4:
32CopyLoc[0](Arg0: &ActiveJwk)
33ImmBorrowField[0](ActiveJwk.jwk: JWK)
34ImmBorrowField[2](JWK.kty: String)
35CopyLoc[1](Arg1: &ActiveJwk)
36ImmBorrowField[0](ActiveJwk.jwk: JWK)
37ImmBorrowField[2](JWK.kty: String)
38Neq
39BrFalse(48)
B5:
40MoveLoc[0](Arg0: &ActiveJwk)
41ImmBorrowField[0](ActiveJwk.jwk: JWK)
42ImmBorrowField[2](JWK.kty: String)
43MoveLoc[1](Arg1: &ActiveJwk)
44ImmBorrowField[0](ActiveJwk.jwk: JWK)
45ImmBorrowField[2](JWK.kty: String)
46Call string_bytes_lt(&String, &String): bool
47Ret
B6:
48CopyLoc[0](Arg0: &ActiveJwk)
49ImmBorrowField[0](ActiveJwk.jwk: JWK)
50ImmBorrowField[3](JWK.e: String)
51CopyLoc[1](Arg1: &ActiveJwk)
52ImmBorrowField[0](ActiveJwk.jwk: JWK)
53ImmBorrowField[3](JWK.e: String)
54Neq
55BrFalse(64)
B7:
56MoveLoc[0](Arg0: &ActiveJwk)
57ImmBorrowField[0](ActiveJwk.jwk: JWK)
58ImmBorrowField[3](JWK.e: String)
59MoveLoc[1](Arg1: &ActiveJwk)
60ImmBorrowField[0](ActiveJwk.jwk: JWK)
61ImmBorrowField[3](JWK.e: String)
62Call string_bytes_lt(&String, &String): bool
63Ret
B8:
64CopyLoc[0](Arg0: &ActiveJwk)
65ImmBorrowField[0](ActiveJwk.jwk: JWK)
66ImmBorrowField[4](JWK.n: String)
67CopyLoc[1](Arg1: &ActiveJwk)
68ImmBorrowField[0](ActiveJwk.jwk: JWK)
69ImmBorrowField[4](JWK.n: String)
70Neq
71BrFalse(80)
B9:
72MoveLoc[0](Arg0: &ActiveJwk)
73ImmBorrowField[0](ActiveJwk.jwk: JWK)
74ImmBorrowField[4](JWK.n: String)
75MoveLoc[1](Arg1: &ActiveJwk)
76ImmBorrowField[0](ActiveJwk.jwk: JWK)
77ImmBorrowField[4](JWK.n: String)
78Call string_bytes_lt(&String, &String): bool
79Ret
B10:
80MoveLoc[0](Arg0: &ActiveJwk)
81ImmBorrowField[0](ActiveJwk.jwk: JWK)
82ImmBorrowField[5](JWK.alg: String)
83MoveLoc[1](Arg1: &ActiveJwk)
84ImmBorrowField[0](ActiveJwk.jwk: JWK)
85ImmBorrowField[5](JWK.alg: String)
86Call string_bytes_lt(&String, &String): bool
87Ret
}
 
create(Arg0: &TxContext) {
L1: loc0: AuthenticatorStateInner
L2: loc1: AuthenticatorState
L3: loc2: u64
B0:
0MoveLoc[0](Arg0: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[3](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(8)
B2:
6LdConst[0](u64: 0)
7Abort
B3:
8LdConst[1](u64: 1)
9StLoc[3](loc2: u64)
10CopyLoc[3](loc2: u64)
11VecPack(22, 0)
12Pack[1](AuthenticatorStateInner)
13StLoc[1](loc0: AuthenticatorStateInner)
14Call object::authenticator_state(): UID
15CopyLoc[3](loc2: u64)
16Pack[0](AuthenticatorState)
17StLoc[2](loc1: AuthenticatorState)
18MutBorrowLoc[2](loc1: AuthenticatorState)
19MutBorrowField[8](AuthenticatorState.id: UID)
20MoveLoc[3](loc2: u64)
21MoveLoc[1](loc0: AuthenticatorStateInner)
22Call dynamic_field::add<u64, AuthenticatorStateInner>(&mut UID, u64, AuthenticatorStateInner)
23MoveLoc[2](loc1: AuthenticatorState)
24Call transfer::share_object<AuthenticatorState>(AuthenticatorState)
25Ret
}
 
load_inner_mut(Arg0: &mut AuthenticatorState): &mut AuthenticatorStateInner {
L1: loc0: &mut AuthenticatorStateInner
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut AuthenticatorState)
1ImmBorrowField[9](AuthenticatorState.version: u64)
2ReadRef
3StLoc[2](loc1: u64)
4CopyLoc[2](loc1: u64)
5LdConst[1](u64: 1)
6Eq
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut AuthenticatorState)
10Pop
11LdConst[1](u64: 1)
12Abort
B3:
13CopyLoc[0](Arg0: &mut AuthenticatorState)
14MutBorrowField[8](AuthenticatorState.id: UID)
15MoveLoc[0](Arg0: &mut AuthenticatorState)
16ImmBorrowField[9](AuthenticatorState.version: u64)
17ReadRef
18Call dynamic_field::borrow_mut<u64, AuthenticatorStateInner>(&mut UID, u64): &mut AuthenticatorStateInner
19StLoc[1](loc0: &mut AuthenticatorStateInner)
20CopyLoc[1](loc0: &mut AuthenticatorStateInner)
21ImmBorrowField[10](AuthenticatorStateInner.version: u64)
22ReadRef
23MoveLoc[2](loc1: u64)
24Eq
25BrFalse(27)
B4:
26Branch(31)
B5:
27MoveLoc[1](loc0: &mut AuthenticatorStateInner)
28Pop
29LdConst[1](u64: 1)
30Abort
B6:
31MoveLoc[1](loc0: &mut AuthenticatorStateInner)
32Ret
}
 
load_inner(Arg0: &AuthenticatorState): &AuthenticatorStateInner {
L1: loc0: &AuthenticatorStateInner
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: &AuthenticatorState)
1ImmBorrowField[9](AuthenticatorState.version: u64)
2ReadRef
3StLoc[2](loc1: u64)
4CopyLoc[2](loc1: u64)
5LdConst[1](u64: 1)
6Eq
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &AuthenticatorState)
10Pop
11LdConst[1](u64: 1)
12Abort
B3:
13CopyLoc[0](Arg0: &AuthenticatorState)
14ImmBorrowField[8](AuthenticatorState.id: UID)
15MoveLoc[0](Arg0: &AuthenticatorState)
16ImmBorrowField[9](AuthenticatorState.version: u64)
17ReadRef
18Call dynamic_field::borrow<u64, AuthenticatorStateInner>(&UID, u64): &AuthenticatorStateInner
19StLoc[1](loc0: &AuthenticatorStateInner)
20CopyLoc[1](loc0: &AuthenticatorStateInner)
21ImmBorrowField[10](AuthenticatorStateInner.version: u64)
22ReadRef
23MoveLoc[2](loc1: u64)
24Eq
25BrFalse(27)
B4:
26Branch(31)
B5:
27MoveLoc[1](loc0: &AuthenticatorStateInner)
28Pop
29LdConst[1](u64: 1)
30Abort
B6:
31MoveLoc[1](loc0: &AuthenticatorStateInner)
32Ret
}
 
check_sorted(Arg0: &vector<ActiveJwk>) {
L1: loc0: &ActiveJwk
L2: loc1: &ActiveJwk
L3: loc2: u64
B0:
0LdU64(0)
1StLoc[3](loc2: u64)
B1:
2CopyLoc[3](loc2: u64)
3CopyLoc[0](Arg0: &vector<ActiveJwk>)
4VecLen(22)
5LdU64(1)
6Sub
7Lt
8BrFalse(34)
B2:
9Branch(10)
B3:
10CopyLoc[0](Arg0: &vector<ActiveJwk>)
11CopyLoc[3](loc2: u64)
12VecImmBorrow(22)
13StLoc[1](loc0: &ActiveJwk)
14CopyLoc[0](Arg0: &vector<ActiveJwk>)
15CopyLoc[3](loc2: u64)
16LdU64(1)
17Add
18VecImmBorrow(22)
19StLoc[2](loc1: &ActiveJwk)
20MoveLoc[1](loc0: &ActiveJwk)
21MoveLoc[2](loc1: &ActiveJwk)
22Call jwk_lt(&ActiveJwk, &ActiveJwk): bool
23BrFalse(25)
B4:
24Branch(29)
B5:
25MoveLoc[0](Arg0: &vector<ActiveJwk>)
26Pop
27LdConst[2](u64: 2)
28Abort
B6:
29MoveLoc[3](loc2: u64)
30LdU64(1)
31Add
32StLoc[3](loc2: u64)
33Branch(2)
B7:
34MoveLoc[0](Arg0: &vector<ActiveJwk>)
35Pop
36Ret
}
 
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:
0MoveLoc[2](Arg2: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[3](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut AuthenticatorState)
7Pop
8LdConst[0](u64: 0)
9Abort
B3:
10ImmBorrowLoc[1](Arg1: vector<ActiveJwk>)
11Call check_sorted(&vector<ActiveJwk>)
12MoveLoc[1](Arg1: vector<ActiveJwk>)
13Call deduplicate(vector<ActiveJwk>): vector<ActiveJwk>
14StLoc[9](loc6: vector<ActiveJwk>)
15MoveLoc[0](Arg0: &mut AuthenticatorState)
16Call load_inner_mut(&mut AuthenticatorState): &mut AuthenticatorStateInner
17StLoc[6](loc3: &mut AuthenticatorStateInner)
18VecPack(22, 0)
19StLoc[13](loc10: vector<ActiveJwk>)
20LdU64(0)
21StLoc[5](loc2: u64)
22LdU64(0)
23StLoc[7](loc4: u64)
24CopyLoc[6](loc3: &mut AuthenticatorStateInner)
25ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
26VecLen(22)
27StLoc[4](loc1: u64)
28ImmBorrowLoc[9](loc6: vector<ActiveJwk>)
29VecLen(22)
30StLoc[10](loc7: u64)
B4:
31CopyLoc[5](loc2: u64)
32CopyLoc[4](loc1: u64)
33Lt
34BrFalse(40)
B5:
35CopyLoc[7](loc4: u64)
36CopyLoc[10](loc7: u64)
37Lt
38StLoc[3](loc0: bool)
39Branch(42)
B6:
40LdFalse
41StLoc[3](loc0: bool)
B7:
42MoveLoc[3](loc0: bool)
43BrFalse(129)
B8:
44CopyLoc[6](loc3: &mut AuthenticatorStateInner)
45ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
46CopyLoc[5](loc2: u64)
47VecImmBorrow(22)
48StLoc[12](loc9: &ActiveJwk)
49ImmBorrowLoc[9](loc6: vector<ActiveJwk>)
50CopyLoc[7](loc4: u64)
51VecImmBorrow(22)
52StLoc[11](loc8: &ActiveJwk)
53CopyLoc[12](loc9: &ActiveJwk)
54CopyLoc[11](loc8: &ActiveJwk)
55Call active_jwk_equal(&ActiveJwk, &ActiveJwk): bool
56BrFalse(82)
B9:
57CopyLoc[12](loc9: &ActiveJwk)
58ReadRef
59StLoc[8](loc5: ActiveJwk)
60MoveLoc[12](loc9: &ActiveJwk)
61ImmBorrowField[12](ActiveJwk.epoch: u64)
62ReadRef
63MoveLoc[11](loc8: &ActiveJwk)
64ImmBorrowField[12](ActiveJwk.epoch: u64)
65ReadRef
66Call u64::max(u64, u64): u64
67MutBorrowLoc[8](loc5: ActiveJwk)
68MutBorrowField[12](ActiveJwk.epoch: u64)
69WriteRef
70MutBorrowLoc[13](loc10: vector<ActiveJwk>)
71MoveLoc[8](loc5: ActiveJwk)
72VecPushBack(22)
73MoveLoc[5](loc2: u64)
74LdU64(1)
75Add
76StLoc[5](loc2: u64)
77MoveLoc[7](loc4: u64)
78LdU64(1)
79Add
80StLoc[7](loc4: u64)
81Branch(31)
B10:
82CopyLoc[12](loc9: &ActiveJwk)
83ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
84CopyLoc[11](loc8: &ActiveJwk)
85ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
86Call jwk_id_equal(&JwkId, &JwkId): bool
87BrFalse(103)
B11:
88MoveLoc[11](loc8: &ActiveJwk)
89Pop
90MutBorrowLoc[13](loc10: vector<ActiveJwk>)
91MoveLoc[12](loc9: &ActiveJwk)
92ReadRef
93VecPushBack(22)
94MoveLoc[5](loc2: u64)
95LdU64(1)
96Add
97StLoc[5](loc2: u64)
98MoveLoc[7](loc4: u64)
99LdU64(1)
100Add
101StLoc[7](loc4: u64)
102Branch(31)
B12:
103CopyLoc[12](loc9: &ActiveJwk)
104CopyLoc[11](loc8: &ActiveJwk)
105Call jwk_lt(&ActiveJwk, &ActiveJwk): bool
106BrFalse(118)
B13:
107MoveLoc[11](loc8: &ActiveJwk)
108Pop
109MutBorrowLoc[13](loc10: vector<ActiveJwk>)
110MoveLoc[12](loc9: &ActiveJwk)
111ReadRef
112VecPushBack(22)
113MoveLoc[5](loc2: u64)
114LdU64(1)
115Add
116StLoc[5](loc2: u64)
117Branch(31)
B14:
118MoveLoc[12](loc9: &ActiveJwk)
119Pop
120MutBorrowLoc[13](loc10: vector<ActiveJwk>)
121MoveLoc[11](loc8: &ActiveJwk)
122ReadRef
123VecPushBack(22)
124MoveLoc[7](loc4: u64)
125LdU64(1)
126Add
127StLoc[7](loc4: u64)
128Branch(31)
B15:
129CopyLoc[5](loc2: u64)
130CopyLoc[4](loc1: u64)
131Lt
132BrFalse(145)
B16:
133MutBorrowLoc[13](loc10: vector<ActiveJwk>)
134CopyLoc[6](loc3: &mut AuthenticatorStateInner)
135ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
136CopyLoc[5](loc2: u64)
137VecImmBorrow(22)
138ReadRef
139VecPushBack(22)
140MoveLoc[5](loc2: u64)
141LdU64(1)
142Add
143StLoc[5](loc2: u64)
144Branch(129)
B17:
145CopyLoc[7](loc4: u64)
146CopyLoc[10](loc7: u64)
147Lt
148BrFalse(160)
B18:
149MutBorrowLoc[13](loc10: vector<ActiveJwk>)
150ImmBorrowLoc[9](loc6: vector<ActiveJwk>)
151CopyLoc[7](loc4: u64)
152VecImmBorrow(22)
153ReadRef
154VecPushBack(22)
155MoveLoc[7](loc4: u64)
156LdU64(1)
157Add
158StLoc[7](loc4: u64)
159Branch(145)
B19:
160MoveLoc[13](loc10: vector<ActiveJwk>)
161MoveLoc[6](loc3: &mut AuthenticatorStateInner)
162MutBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
163WriteRef
164Ret
}
 
deduplicate(Arg0: vector<ActiveJwk>): vector<ActiveJwk> {
L1: loc0: u64
L2: loc1: &ActiveJwk
L3: loc2: Option<JwkId>
L4: loc3: vector<ActiveJwk>
B0:
0VecPack(22, 0)
1StLoc[4](loc3: vector<ActiveJwk>)
2LdU64(0)
3StLoc[1](loc0: u64)
4Call option::none<JwkId>(): Option<JwkId>
5StLoc[3](loc2: Option<JwkId>)
B1:
6CopyLoc[1](loc0: u64)
7ImmBorrowLoc[0](Arg0: vector<ActiveJwk>)
8VecLen(22)
9Lt
10BrFalse(53)
B2:
11Branch(12)
B3:
12ImmBorrowLoc[0](Arg0: vector<ActiveJwk>)
13CopyLoc[1](loc0: u64)
14VecImmBorrow(22)
15StLoc[2](loc1: &ActiveJwk)
16ImmBorrowLoc[3](loc2: Option<JwkId>)
17Call option::is_none<JwkId>(&Option<JwkId>): bool
18BrFalse(25)
B4:
19MutBorrowLoc[3](loc2: Option<JwkId>)
20CopyLoc[2](loc1: &ActiveJwk)
21ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
22ReadRef
23Call option::fill<JwkId>(&mut Option<JwkId>, JwkId)
24Branch(44)
B5:
25ImmBorrowLoc[3](loc2: Option<JwkId>)
26Call option::borrow<JwkId>(&Option<JwkId>): &JwkId
27CopyLoc[2](loc1: &ActiveJwk)
28ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
29Call jwk_id_equal(&JwkId, &JwkId): bool
30BrFalse(38)
B6:
31MoveLoc[2](loc1: &ActiveJwk)
32Pop
33MoveLoc[1](loc0: u64)
34LdU64(1)
35Add
36StLoc[1](loc0: u64)
37Branch(6)
B7:
38CopyLoc[2](loc1: &ActiveJwk)
39ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
40ReadRef
41MutBorrowLoc[3](loc2: Option<JwkId>)
42Call option::borrow_mut<JwkId>(&mut Option<JwkId>): &mut JwkId
43WriteRef
B8:
44MutBorrowLoc[4](loc3: vector<ActiveJwk>)
45MoveLoc[2](loc1: &ActiveJwk)
46ReadRef
47VecPushBack(22)
48MoveLoc[1](loc0: u64)
49LdU64(1)
50Add
51StLoc[1](loc0: u64)
52Branch(6)
B9:
53MoveLoc[4](loc3: vector<ActiveJwk>)
54Ret
}
 
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:
0MoveLoc[2](Arg2: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[3](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut AuthenticatorState)
7Pop
8LdConst[0](u64: 0)
9Abort
B3:
10MoveLoc[0](Arg0: &mut AuthenticatorState)
11Call load_inner_mut(&mut AuthenticatorState): &mut AuthenticatorStateInner
12StLoc[10](loc7: &mut AuthenticatorStateInner)
13CopyLoc[10](loc7: &mut AuthenticatorStateInner)
14ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
15VecLen(22)
16StLoc[14](loc11: u64)
17LdConst[4](vector<u64>: 00)
18StLoc[11](loc8: vector<u64>)
19LdU64(0)
20StLoc[8](loc5: u64)
21Call option::none<String>(): Option<String>
22StLoc[16](loc13: Option<String>)
B4:
23CopyLoc[8](loc5: u64)
24CopyLoc[14](loc11: u64)
25Lt
26BrFalse(90)
B5:
27CopyLoc[10](loc7: &mut AuthenticatorStateInner)
28ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
29CopyLoc[8](loc5: u64)
30VecImmBorrow(22)
31StLoc[5](loc2: &ActiveJwk)
32CopyLoc[5](loc2: &ActiveJwk)
33ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
34ImmBorrowField[6](JwkId.iss: String)
35StLoc[6](loc3: &String)
36ImmBorrowLoc[16](loc13: Option<String>)
37Call option::is_none<String>(&Option<String>): bool
38BrFalse(50)
B6:
39Branch(40)
B7:
40MutBorrowLoc[16](loc13: Option<String>)
41MoveLoc[6](loc3: &String)
42ReadRef
43Call option::fill<String>(&mut Option<String>, String)
44MutBorrowLoc[11](loc8: vector<u64>)
45MoveLoc[5](loc2: &ActiveJwk)
46ImmBorrowField[12](ActiveJwk.epoch: u64)
47ReadRef
48VecPushBack(37)
49Branch(85)
B8:
50CopyLoc[6](loc3: &String)
51ImmBorrowLoc[16](loc13: Option<String>)
52Call option::borrow<String>(&Option<String>): &String
53Eq
54BrFalse(75)
B9:
55MoveLoc[6](loc3: &String)
56Pop
57ImmBorrowLoc[11](loc8: vector<u64>)
58VecLen(37)
59LdU64(1)
60Sub
61StLoc[4](loc1: u64)
62MutBorrowLoc[11](loc8: vector<u64>)
63MoveLoc[4](loc1: u64)
64VecMutBorrow(37)
65StLoc[18](loc15: &mut u64)
66CopyLoc[18](loc15: &mut u64)
67ReadRef
68MoveLoc[5](loc2: &ActiveJwk)
69ImmBorrowField[12](ActiveJwk.epoch: u64)
70ReadRef
71Call u64::max(u64, u64): u64
72MoveLoc[18](loc15: &mut u64)
73WriteRef
74Branch(85)
B10:
75MoveLoc[6](loc3: &String)
76ReadRef
77MutBorrowLoc[16](loc13: Option<String>)
78Call option::borrow_mut<String>(&mut Option<String>): &mut String
79WriteRef
80MutBorrowLoc[11](loc8: vector<u64>)
81MoveLoc[5](loc2: &ActiveJwk)
82ImmBorrowField[12](ActiveJwk.epoch: u64)
83ReadRef
84VecPushBack(37)
B11:
85MoveLoc[8](loc5: u64)
86LdU64(1)
87Add
88StLoc[8](loc5: u64)
89Branch(23)
B12:
90VecPack(22, 0)
91StLoc[15](loc12: vector<ActiveJwk>)
92Call option::none<String>(): Option<String>
93StLoc[17](loc14: Option<String>)
94LdU64(0)
95StLoc[9](loc6: u64)
96LdU64(0)
97StLoc[12](loc9: u64)
B13:
98CopyLoc[9](loc6: u64)
99CopyLoc[14](loc11: u64)
100Lt
101BrFalse(166)
B14:
102CopyLoc[10](loc7: &mut AuthenticatorStateInner)
103ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
104CopyLoc[9](loc6: u64)
105VecImmBorrow(22)
106StLoc[13](loc10: &ActiveJwk)
107CopyLoc[13](loc10: &ActiveJwk)
108ImmBorrowField[1](ActiveJwk.jwk_id: JwkId)
109ImmBorrowField[6](JwkId.iss: String)
110StLoc[7](loc4: &String)
111ImmBorrowLoc[17](loc14: Option<String>)
112Call option::is_none<String>(&Option<String>): bool
113BrFalse(119)
B15:
114MutBorrowLoc[17](loc14: Option<String>)
115MoveLoc[7](loc4: &String)
116ReadRef
117Call option::fill<String>(&mut Option<String>, String)
118Branch(136)
B16:
119CopyLoc[7](loc4: &String)
120ImmBorrowLoc[17](loc14: Option<String>)
121Call option::borrow<String>(&Option<String>): &String
122Neq
123BrFalse(134)
B17:
124MoveLoc[7](loc4: &String)
125ReadRef
126MutBorrowLoc[17](loc14: Option<String>)
127Call option::borrow_mut<String>(&mut Option<String>): &mut String
128WriteRef
129MoveLoc[12](loc9: u64)
130LdU64(1)
131Add
132StLoc[12](loc9: u64)
133Branch(136)
B18:
134MoveLoc[7](loc4: &String)
135Pop
B19:
136ImmBorrowLoc[11](loc8: vector<u64>)
137CopyLoc[12](loc9: u64)
138VecImmBorrow(37)
139ReadRef
140CopyLoc[1](Arg1: u64)
141Lt
142BrFalse(146)
B20:
143LdTrue
144StLoc[3](loc0: bool)
145Branch(152)
B21:
146CopyLoc[13](loc10: &ActiveJwk)
147ImmBorrowField[12](ActiveJwk.epoch: u64)
148ReadRef
149CopyLoc[1](Arg1: u64)
150Ge
151StLoc[3](loc0: bool)
B22:
152MoveLoc[3](loc0: bool)
153BrFalse(159)
B23:
154MutBorrowLoc[15](loc12: vector<ActiveJwk>)
155MoveLoc[13](loc10: &ActiveJwk)
156ReadRef
157VecPushBack(22)
158Branch(161)
B24:
159MoveLoc[13](loc10: &ActiveJwk)
160Pop
B25:
161MoveLoc[9](loc6: u64)
162LdU64(1)
163Add
164StLoc[9](loc6: u64)
165Branch(98)
B26:
166MoveLoc[15](loc12: vector<ActiveJwk>)
167MoveLoc[10](loc7: &mut AuthenticatorStateInner)
168MutBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
169WriteRef
170Ret
}
 
get_active_jwks(Arg0: &AuthenticatorState, Arg1: &TxContext): vector<ActiveJwk> {
B0:
0MoveLoc[1](Arg1: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[3](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &AuthenticatorState)
7Pop
8LdConst[0](u64: 0)
9Abort
B3:
10MoveLoc[0](Arg0: &AuthenticatorState)
11Call load_inner(&AuthenticatorState): &AuthenticatorStateInner
12ImmBorrowField[11](AuthenticatorStateInner.active_jwks: vector<ActiveJwk>)
13ReadRef
14Ret
}
 
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
4 => vector<u64>: 00
]
}