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

poseidon

Module0x0000…0002
Move path
0x0000…0002::poseidon
Functions
21 public, 0 entry
Structs
0
Friend modules
None
poseidon

Bytecode128 lines

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

// Move bytecode v7
module 2.poseidon {
use 0000000000000000000000000000000000000000000000000000000000000002::bcs;
 
public poseidon_bn254(Arg0: &vector<u256>): u256 {
L1: loc0: u64
L2: loc1: vector<u8>
L3: loc2: &mut vector<vector<u8>>
L4: loc3: BCS
L5: loc4: vector<vector<u8>>
L6: loc5: &u256
L7: loc6: &u256
L8: loc7: u64
L9: loc8: u64
L10: loc9: vector<vector<u8>>
L11: loc10: u64
L12: loc11: &vector<u256>
L13: loc12: &vector<u256>
B0:
0CopyLoc[0](Arg0: &vector<u256>)
1VecLen(1)
2LdU64(0)
3Gt
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &vector<u256>)
7Pop
8LdConst[1](u64: 1)
9Abort
B3:
10CopyLoc[0](Arg0: &vector<u256>)
11VecLen(1)
12LdConst[4](u64: 16)
13Le
14BrFalse(16)
B4:
15Branch(20)
B5:
16MoveLoc[0](Arg0: &vector<u256>)
17Pop
18LdConst[2](u64: 2)
19Abort
B6:
20MoveLoc[0](Arg0: &vector<u256>)
21StLoc[12](loc11: &vector<u256>)
22LdConst[5](vector<vector<u8>>: 00)
23StLoc[10](loc9: vector<vector<u8>>)
24MoveLoc[12](loc11: &vector<u256>)
25StLoc[13](loc12: &vector<u256>)
26CopyLoc[13](loc12: &vector<u256>)
27VecLen(1)
28StLoc[1](loc0: u64)
29LdU64(0)
30StLoc[9](loc8: u64)
31MoveLoc[1](loc0: u64)
32StLoc[11](loc10: u64)
B7:
33CopyLoc[9](loc8: u64)
34CopyLoc[11](loc10: u64)
35Lt
36BrFalse(72)
B8:
37CopyLoc[9](loc8: u64)
38StLoc[8](loc7: u64)
39CopyLoc[13](loc12: &vector<u256>)
40MoveLoc[8](loc7: u64)
41VecImmBorrow(1)
42StLoc[6](loc5: &u256)
43MutBorrowLoc[10](loc9: vector<vector<u8>>)
44StLoc[3](loc2: &mut vector<vector<u8>>)
45MoveLoc[6](loc5: &u256)
46StLoc[7](loc6: &u256)
47CopyLoc[7](loc6: &u256)
48ReadRef
49LdConst[3](u256: 2188..)
50Lt
51BrFalse(53)
B9:
52Branch(61)
B10:
53MoveLoc[13](loc12: &vector<u256>)
54Pop
55MoveLoc[7](loc6: &u256)
56Pop
57MoveLoc[3](loc2: &mut vector<vector<u8>>)
58Pop
59LdConst[0](u64: 0)
60Abort
B11:
61MoveLoc[7](loc6: &u256)
62Call bcs::to_bytes<u256>(&u256): vector<u8>
63StLoc[2](loc1: vector<u8>)
64MoveLoc[3](loc2: &mut vector<vector<u8>>)
65MoveLoc[2](loc1: vector<u8>)
66VecPushBack(3)
67MoveLoc[9](loc8: u64)
68LdU64(1)
69Add
70StLoc[9](loc8: u64)
71Branch(33)
B12:
72MoveLoc[13](loc12: &vector<u256>)
73Pop
74MoveLoc[10](loc9: vector<vector<u8>>)
75StLoc[5](loc4: vector<vector<u8>>)
76ImmBorrowLoc[5](loc4: vector<vector<u8>>)
77Call poseidon_bn254_internal(&vector<vector<u8>>): vector<u8>
78Call bcs::new(vector<u8>): BCS
79StLoc[4](loc3: BCS)
80MutBorrowLoc[4](loc3: BCS)
81Call bcs::peel_u256(&mut BCS): u256
82Ret
}
 
native poseidon_bn254_internal(Arg0: &vector<vector<u8>>): vector<u8>;
 
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => u256: 21888242871839275222246405745257275088548364400416034343698204186575808495617
4 => u64: 16
5 => vector<vector<u8>>: 00
]
}