group_ops
Module0x0000…0002
- Move path
- 0x0000…0002::group_ops
- Functions
- 232 public, 0 entry
- Structs
- 1
- Friend modules
- bls12381ristretto255
group_ops
- accumulator18
- accumulator_metadata2
- accumulator_settlement8
- address10
- address_alias5
- allowance40
- authenticator_state13
- bag10
- balance18
- bcs30
- bls1238143
- borrow4
- clock3
- coin54
- coin_registry43
- config11
- deny_list21
- derived_object3
- display14
- display_registry18
- dynamic_field19
- dynamic_object_field15
- ecdsa_k13
- ecdsa_r12
- ecvrf1
- ed255191
- event3
- forwarding_address1
- funds_accumulator12
- groth1610
- group_ops23
- hash2
- hex3
- hmac1
- kiosk41
- kiosk_extension14
- linked_table19
- math7
- nitro_attestation11
- object32
- object_bag11
- object_table10
- package26
- party5
- pay8
- poseidon2
- priority_queue8
- protocol_config1
- prover0
- random20
- rangeproofs3
- ristretto25518
- scratch18
- sui2
- table10
- table_vec12
- token45
- transfer16
- transfer_policy18
- tx_context19
- types1
- url4
- vdf4
- vec_map20
- vec_set11
- versioned7
- zklogin_verified_id9
- zklogin_verified_issuer6
Bytecode395 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module 2.group_ops {
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::bcs;
struct Element<phantom Ty0> has copy, drop, store {
bytes: vector<u8>
}
public bytes<Ty0>(Arg0: &Element<Ty0>): &vector<u8> {
B0:
0MoveLoc[0](Arg0: &Element<Ty0>)
1ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
2Ret
}
public equal<Ty0>(Arg0: &Element<Ty0>, Arg1: &Element<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Element<Ty0>)
1ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
2MoveLoc[1](Arg1: &Element<Ty0>)
3ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
4Eq
5Ret
}
public(friend) from_bytes<Ty0>(Arg0: u8, Arg1: vector<u8>, Arg2: bool): Element<Ty0> {
L3: loc0: bool
B0:
0MoveLoc[2](Arg2: bool)
1BrFalse(5)
B1:
2LdTrue
3StLoc[3](loc0: bool)
4Branch(9)
B2:
5MoveLoc[0](Arg0: u8)
6ImmBorrowLoc[1](Arg1: vector<u8>)
7Call internal_validate(u8, &vector<u8>): bool
8StLoc[3](loc0: bool)
B3:
9MoveLoc[3](loc0: bool)
10BrFalse(12)
B4:
11Branch(14)
B5:
12LdConst[1](u64: 1)
13Abort
B6:
14MoveLoc[1](Arg1: vector<u8>)
15PackGeneric[0](Element<Ty0>)
16Ret
}
public(friend) add<Ty0>(Arg0: u8, Arg1: &Element<Ty0>, Arg2: &Element<Ty0>): Element<Ty0> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: &Element<Ty0>)
2ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
3MoveLoc[2](Arg2: &Element<Ty0>)
4ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
5Call internal_add(u8, &vector<u8>, &vector<u8>): vector<u8>
6PackGeneric[0](Element<Ty0>)
7Ret
}
public(friend) sub<Ty0>(Arg0: u8, Arg1: &Element<Ty0>, Arg2: &Element<Ty0>): Element<Ty0> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: &Element<Ty0>)
2ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
3MoveLoc[2](Arg2: &Element<Ty0>)
4ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
5Call internal_sub(u8, &vector<u8>, &vector<u8>): vector<u8>
6PackGeneric[0](Element<Ty0>)
7Ret
}
public(friend) mul<Ty0, Ty1>(Arg0: u8, Arg1: &Element<Ty0>, Arg2: &Element<Ty1>): Element<Ty1> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: &Element<Ty0>)
2ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
3MoveLoc[2](Arg2: &Element<Ty1>)
4ImmBorrowFieldGeneric[1](Element.bytes: vector<u8>)
5Call internal_mul(u8, &vector<u8>, &vector<u8>): vector<u8>
6PackGeneric[1](Element<Ty1>)
7Ret
}
public(friend) div<Ty0, Ty1>(Arg0: u8, Arg1: &Element<Ty0>, Arg2: &Element<Ty1>): Element<Ty1> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: &Element<Ty0>)
2ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
3MoveLoc[2](Arg2: &Element<Ty1>)
4ImmBorrowFieldGeneric[1](Element.bytes: vector<u8>)
5Call internal_div(u8, &vector<u8>, &vector<u8>): vector<u8>
6PackGeneric[1](Element<Ty1>)
7Ret
}
public(friend) hash_to<Ty0>(Arg0: u8, Arg1: &vector<u8>): Element<Ty0> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: &vector<u8>)
2Call internal_hash_to(u8, &vector<u8>): vector<u8>
3PackGeneric[0](Element<Ty0>)
4Ret
}
public(friend) multi_scalar_multiplication<Ty0, Ty1>(Arg0: u8, Arg1: &vector<Element<Ty0>>, Arg2: &vector<Element<Ty1>>): Element<Ty1> {
L3: loc0: Element<Ty1>
L4: loc1: vector<u8>
L5: loc2: u64
L6: loc3: Element<Ty0>
L7: loc4: vector<u8>
B0:
0CopyLoc[1](Arg1: &vector<Element<Ty0>>)
1VecLen(5)
2LdU64(0)
3Gt
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[1](Arg1: &vector<Element<Ty0>>)
7Pop
8MoveLoc[2](Arg2: &vector<Element<Ty1>>)
9Pop
10LdConst[1](u64: 1)
11Abort
B3:
12CopyLoc[1](Arg1: &vector<Element<Ty0>>)
13VecLen(5)
14CopyLoc[2](Arg2: &vector<Element<Ty1>>)
15VecLen(8)
16Eq
17BrFalse(19)
B4:
18Branch(25)
B5:
19MoveLoc[1](Arg1: &vector<Element<Ty0>>)
20Pop
21MoveLoc[2](Arg2: &vector<Element<Ty1>>)
22Pop
23LdConst[1](u64: 1)
24Abort
B6:
25LdConst[4](vector<u8>: "" /..)
26StLoc[7](loc4: vector<u8>)
27LdConst[4](vector<u8>: "" /..)
28StLoc[4](loc1: vector<u8>)
29LdU64(0)
30StLoc[5](loc2: u64)
B7:
31CopyLoc[5](loc2: u64)
32CopyLoc[1](Arg1: &vector<Element<Ty0>>)
33VecLen(5)
34Lt
35BrFalse(61)
B8:
36CopyLoc[1](Arg1: &vector<Element<Ty0>>)
37CopyLoc[5](loc2: u64)
38VecImmBorrow(5)
39ReadRef
40StLoc[6](loc3: Element<Ty0>)
41MutBorrowLoc[7](loc4: vector<u8>)
42ImmBorrowLoc[6](loc3: Element<Ty0>)
43ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
44ReadRef
45Call vector::append<u8>(&mut vector<u8>, vector<u8>)
46CopyLoc[2](Arg2: &vector<Element<Ty1>>)
47CopyLoc[5](loc2: u64)
48VecImmBorrow(8)
49ReadRef
50StLoc[3](loc0: Element<Ty1>)
51MutBorrowLoc[4](loc1: vector<u8>)
52ImmBorrowLoc[3](loc0: Element<Ty1>)
53ImmBorrowFieldGeneric[1](Element.bytes: vector<u8>)
54ReadRef
55Call vector::append<u8>(&mut vector<u8>, vector<u8>)
56MoveLoc[5](loc2: u64)
57LdU64(1)
58Add
59StLoc[5](loc2: u64)
60Branch(31)
B9:
61MoveLoc[1](Arg1: &vector<Element<Ty0>>)
62Pop
63MoveLoc[2](Arg2: &vector<Element<Ty1>>)
64Pop
65MoveLoc[0](Arg0: u8)
66ImmBorrowLoc[7](loc4: vector<u8>)
67ImmBorrowLoc[4](loc1: vector<u8>)
68Call internal_multi_scalar_mul(u8, &vector<u8>, &vector<u8>): vector<u8>
69PackGeneric[1](Element<Ty1>)
70Ret
}
public(friend) pairing<Ty0, Ty1, Ty2>(Arg0: u8, Arg1: &Element<Ty0>, Arg2: &Element<Ty1>): Element<Ty2> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: &Element<Ty0>)
2ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
3MoveLoc[2](Arg2: &Element<Ty1>)
4ImmBorrowFieldGeneric[1](Element.bytes: vector<u8>)
5Call internal_pairing(u8, &vector<u8>, &vector<u8>): vector<u8>
6PackGeneric[2](Element<Ty2>)
7Ret
}
public(friend) convert<Ty0, Ty1>(Arg0: u8, Arg1: u8, Arg2: &Element<Ty0>): Element<Ty1> {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: u8)
2MoveLoc[2](Arg2: &Element<Ty0>)
3ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
4Call internal_convert(u8, u8, &vector<u8>): vector<u8>
5PackGeneric[1](Element<Ty1>)
6Ret
}
public(friend) sum<Ty0>(Arg0: u8, Arg1: &vector<Element<Ty0>>): Element<Ty0> {
L2: loc0: u64
L3: loc1: vector<u8>
L4: loc2: &mut vector<vector<u8>>
L5: loc3: vector<vector<u8>>
L6: loc4: u8
L7: loc5: Element<Ty0>
L8: loc6: u64
L9: loc7: vector<vector<u8>>
L10: loc8: u64
L11: loc9: vector<Element<Ty0>>
L12: loc10: vector<Element<Ty0>>
L13: loc11: Element<Ty0>
B0:
0MoveLoc[0](Arg0: u8)
1StLoc[6](loc4: u8)
2MoveLoc[1](Arg1: &vector<Element<Ty0>>)
3ReadRef
4StLoc[11](loc9: vector<Element<Ty0>>)
5LdConst[5](vector<vector<u8>>: 00)
6StLoc[9](loc7: vector<vector<u8>>)
7MoveLoc[11](loc9: vector<Element<Ty0>>)
8StLoc[12](loc10: vector<Element<Ty0>>)
9MutBorrowLoc[12](loc10: vector<Element<Ty0>>)
10Call vector::reverse<Element<Ty0>>(&mut vector<Element<Ty0>>)
11ImmBorrowLoc[12](loc10: vector<Element<Ty0>>)
12VecLen(5)
13StLoc[2](loc0: u64)
14LdU64(0)
15StLoc[8](loc6: u64)
16MoveLoc[2](loc0: u64)
17StLoc[10](loc8: u64)
B1:
18CopyLoc[8](loc6: u64)
19CopyLoc[10](loc8: u64)
20Lt
21BrFalse(43)
B2:
22CopyLoc[8](loc6: u64)
23Pop
24MutBorrowLoc[12](loc10: vector<Element<Ty0>>)
25VecPopBack(5)
26StLoc[7](loc5: Element<Ty0>)
27MutBorrowLoc[9](loc7: vector<vector<u8>>)
28StLoc[4](loc2: &mut vector<vector<u8>>)
29MoveLoc[7](loc5: Element<Ty0>)
30StLoc[13](loc11: Element<Ty0>)
31ImmBorrowLoc[13](loc11: Element<Ty0>)
32ImmBorrowFieldGeneric[0](Element.bytes: vector<u8>)
33ReadRef
34StLoc[3](loc1: vector<u8>)
35MoveLoc[4](loc2: &mut vector<vector<u8>>)
36MoveLoc[3](loc1: vector<u8>)
37VecPushBack(15)
38MoveLoc[8](loc6: u64)
39LdU64(1)
40Add
41StLoc[8](loc6: u64)
42Branch(18)
B3:
43MoveLoc[12](loc10: vector<Element<Ty0>>)
44VecUnpack(5, 0)
45MoveLoc[9](loc7: vector<vector<u8>>)
46StLoc[5](loc3: vector<vector<u8>>)
47MoveLoc[6](loc4: u8)
48ImmBorrowLoc[5](loc3: vector<vector<u8>>)
49Call internal_sum(u8, &vector<vector<u8>>): vector<u8>
50PackGeneric[0](Element<Ty0>)
51Ret
}
native internal_validate(Arg0: u8, Arg1: &vector<u8>): bool;
native internal_add(Arg0: u8, Arg1: &vector<u8>, Arg2: &vector<u8>): vector<u8>;
native internal_sub(Arg0: u8, Arg1: &vector<u8>, Arg2: &vector<u8>): vector<u8>;
native internal_mul(Arg0: u8, Arg1: &vector<u8>, Arg2: &vector<u8>): vector<u8>;
native internal_div(Arg0: u8, Arg1: &vector<u8>, Arg2: &vector<u8>): vector<u8>;
native internal_hash_to(Arg0: u8, Arg1: &vector<u8>): vector<u8>;
native internal_multi_scalar_mul(Arg0: u8, Arg1: &vector<u8>, Arg2: &vector<u8>): vector<u8>;
native internal_pairing(Arg0: u8, Arg1: &vector<u8>, Arg2: &vector<u8>): vector<u8>;
native internal_convert(Arg0: u8, Arg1: u8, Arg2: &vector<u8>): vector<u8>;
native internal_sum(Arg0: u8, Arg1: &vector<vector<u8>>): vector<u8>;
public(friend) set_as_prefix(Arg0: u64, Arg1: bool, Arg2: &mut vector<u8>) {
L3: loc0: u64
L4: loc1: u64
L5: loc2: u64
L6: loc3: u64
L7: loc4: vector<u8>
B0:
0CopyLoc[2](Arg2: &mut vector<u8>)
1FreezeRef
2VecLen(23)
3StLoc[4](loc1: u64)
4CopyLoc[4](loc1: u64)
5LdU64(7)
6Gt
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[2](Arg2: &mut vector<u8>)
10Pop
11LdConst[3](u64: 3)
12Abort
B3:
13ImmBorrowLoc[0](Arg0: u64)
14Call bcs::to_bytes<u64>(&u64): vector<u8>
15StLoc[7](loc4: vector<u8>)
16LdU64(0)
17StLoc[5](loc2: u64)
B4:
18CopyLoc[5](loc2: u64)
19LdU64(8)
20Lt
21BrFalse(49)
B5:
22CopyLoc[1](Arg1: bool)
23BrFalse(32)
B6:
24Branch(25)
B7:
25CopyLoc[4](loc1: u64)
26CopyLoc[5](loc2: u64)
27Sub
28LdU64(1)
29Sub
30StLoc[3](loc0: u64)
31Branch(34)
B8:
32CopyLoc[5](loc2: u64)
33StLoc[3](loc0: u64)
B9:
34MoveLoc[3](loc0: u64)
35StLoc[6](loc3: u64)
36ImmBorrowLoc[7](loc4: vector<u8>)
37CopyLoc[5](loc2: u64)
38VecImmBorrow(23)
39ReadRef
40CopyLoc[2](Arg2: &mut vector<u8>)
41MoveLoc[6](loc3: u64)
42VecMutBorrow(23)
43WriteRef
44MoveLoc[5](loc2: u64)
45LdU64(1)
46Add
47StLoc[5](loc2: u64)
48Branch(18)
B10:
49MoveLoc[2](Arg2: &mut vector<u8>)
50Pop
51Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => u64: 3
4 => vector<u8>: "" // interpreted as UTF8 string
5 => vector<vector<u8>>: 00
]
}