pseudorandom
Module0xf895…c5f8
- Move path
- 0x95e3…4f50::pseudorandom
- Functions
- 50 public, 0 entry
- Structs
- 1
pseudorandom
Bytecode191 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module 95e360f56458bf2862cd983b63aaa23e43997674eda99f28541cca1adfa44f50.pseudorandom {
use 0000000000000000000000000000000000000000000000000000000000000001::bcs;
use 0000000000000000000000000000000000000000000000000000000000000001::hash;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct PseudoRandomCounter has store, key {
id: UID,
value: u256
}
public(friend) new(Arg0: &mut TxContext): PseudoRandomCounter {
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2LdU256(0)
3Pack[0](PseudoRandomCounter)
4Ret
}
public(friend) rand(Arg0: &mut PseudoRandomCounter, Arg1: vector<u8>, Arg2: &mut TxContext): vector<u8> {
L3: loc0: u256
L4: loc1: address
L5: loc2: vector<u8>
L6: loc3: vector<u8>
L7: loc4: u64
L8: loc5: vector<u8>
L9: loc6: &mut vector<u8>
L10: loc7: vector<u8>
L11: loc8: vector<u8>
L12: loc9: UID
B0:
0MoveLoc[0](Arg0: &mut PseudoRandomCounter)
1Call increment(&mut PseudoRandomCounter): u256
2StLoc[3](loc0: u256)
3ImmBorrowLoc[3](loc0: u256)
4Call bcs::to_bytes<u256>(&u256): vector<u8>
5StLoc[6](loc3: vector<u8>)
6CopyLoc[2](Arg2: &mut TxContext)
7FreezeRef
8Call tx_context::epoch(&TxContext): u64
9StLoc[7](loc4: u64)
10ImmBorrowLoc[7](loc4: u64)
11Call bcs::to_bytes<u64>(&u64): vector<u8>
12StLoc[8](loc5: vector<u8>)
13CopyLoc[2](Arg2: &mut TxContext)
14FreezeRef
15Call tx_context::sender(&TxContext): address
16StLoc[4](loc1: address)
17ImmBorrowLoc[4](loc1: address)
18Call bcs::to_bytes<address>(&address): vector<u8>
19StLoc[11](loc8: vector<u8>)
20MoveLoc[2](Arg2: &mut TxContext)
21Call object::new(&mut TxContext): UID
22StLoc[12](loc9: UID)
23ImmBorrowLoc[12](loc9: UID)
24Call object::uid_to_bytes(&UID): vector<u8>
25StLoc[10](loc7: vector<u8>)
26MoveLoc[12](loc9: UID)
27Call object::delete(UID)
28VecPack(16, 0)
29StLoc[5](loc2: vector<u8>)
30MutBorrowLoc[5](loc2: vector<u8>)
31StLoc[9](loc6: &mut vector<u8>)
32CopyLoc[9](loc6: &mut vector<u8>)
33MoveLoc[1](Arg1: vector<u8>)
34Call vector::append<u8>(&mut vector<u8>, vector<u8>)
35CopyLoc[9](loc6: &mut vector<u8>)
36MoveLoc[6](loc3: vector<u8>)
37Call vector::append<u8>(&mut vector<u8>, vector<u8>)
38CopyLoc[9](loc6: &mut vector<u8>)
39MoveLoc[8](loc5: vector<u8>)
40Call vector::append<u8>(&mut vector<u8>, vector<u8>)
41CopyLoc[9](loc6: &mut vector<u8>)
42MoveLoc[11](loc8: vector<u8>)
43Call vector::append<u8>(&mut vector<u8>, vector<u8>)
44CopyLoc[9](loc6: &mut vector<u8>)
45MoveLoc[10](loc7: vector<u8>)
46Call vector::append<u8>(&mut vector<u8>, vector<u8>)
47MoveLoc[9](loc6: &mut vector<u8>)
48ReadRef
49Call hash::sha3_256(vector<u8>): vector<u8>
50Ret
}
public(friend) select_u64(Arg0: u64, Arg1: &vector<u8>): u64 {
B0:
0CopyLoc[1](Arg1: &vector<u8>)
1VecLen(16)
2LdU64(32)
3Ge
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[1](Arg1: &vector<u8>)
7Pop
8LdConst[1](u64: 2)
9Abort
B3:
10MoveLoc[1](Arg1: &vector<u8>)
11Call u256_from_bytes(&vector<u8>): u256
12MoveLoc[0](Arg0: u64)
13CastU256
14Mod
15CastU64
16Ret
}
increment(Arg0: &mut PseudoRandomCounter): u256 {
L1: loc0: &mut u256
B0:
0MoveLoc[0](Arg0: &mut PseudoRandomCounter)
1MutBorrowField[0](PseudoRandomCounter.value: u256)
2StLoc[1](loc0: &mut u256)
3CopyLoc[1](loc0: &mut u256)
4ReadRef
5LdU256(1)
6Add
7CopyLoc[1](loc0: &mut u256)
8WriteRef
9MoveLoc[1](loc0: &mut u256)
10ReadRef
11Ret
}
u256_from_bytes(Arg0: &vector<u8>): u256 {
L1: loc0: u8
L2: loc1: u64
L3: loc2: u64
L4: loc3: u256
B0:
0LdU256(0)
1StLoc[4](loc3: u256)
2CopyLoc[0](Arg0: &vector<u8>)
3VecLen(16)
4StLoc[3](loc2: u64)
5CopyLoc[3](loc2: u64)
6LdU64(32)
7Le
8BrFalse(10)
B1:
9Branch(14)
B2:
10MoveLoc[0](Arg0: &vector<u8>)
11Pop
12LdConst[0](u64: 1)
13Abort
B3:
14LdU64(0)
15StLoc[2](loc1: u64)
B4:
16CopyLoc[2](loc1: u64)
17CopyLoc[3](loc2: u64)
18Lt
19BrFalse(39)
B5:
20MoveLoc[4](loc3: u256)
21LdU8(8)
22Shl
23StLoc[4](loc3: u256)
24CopyLoc[0](Arg0: &vector<u8>)
25CopyLoc[2](loc1: u64)
26VecImmBorrow(16)
27ReadRef
28StLoc[1](loc0: u8)
29MoveLoc[4](loc3: u256)
30MoveLoc[1](loc0: u8)
31CastU256
32Add
33StLoc[4](loc3: u256)
34MoveLoc[2](loc1: u64)
35LdU64(1)
36Add
37StLoc[2](loc1: u64)
38Branch(16)
B6:
39MoveLoc[0](Arg0: &vector<u8>)
40Pop
41MoveLoc[4](loc3: u256)
42Ret
}
Constants [
0 => u64: 1
1 => u64: 2
]
}