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

utils

Module0xc067…8bf8
Move path
0x79ee…5b7a::utils
Functions
136 public, 0 entry
Structs
0
Friend modules
staked_positionvault
utils

Bytecode303 lines

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

// Move bytecode v7
module 79ee374b9e3c60c00a19fdbeaea25731bbea8f2cab9bb61bb712543e0ba55b7a.utils {
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
 
public lock_multiplier_lower_bound(): u64 {
B0:
0LdConst[0](u64: 1000..)
1Ret
}
 
public total_rewards_accumulated_per_share_scaling_factor(): u64 {
B0:
0LdConst[0](u64: 1000..)
1Ret
}
 
public calc_number_of_emissions_from_time_tn_to_tm(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: u64): u64 {
L4: loc0: u64
B0:
0MoveLoc[1](Arg1: u64)
1MoveLoc[2](Arg2: u64)
2Call u64::min(u64, u64): u64
3StLoc[4](loc0: u64)
4CopyLoc[4](loc0: u64)
5CopyLoc[0](Arg0: u64)
6Le
7BrFalse(10)
B1:
8LdU64(0)
9Ret
B2:
10MoveLoc[4](loc0: u64)
11MoveLoc[0](Arg0: u64)
12Sub
13MoveLoc[3](Arg3: u64)
14Div
15Ret
}
 
public calc_remaining_number_of_emissions(Arg0: u64, Arg1: u64): u64 {
L2: loc0: bool
B0:
0CopyLoc[0](Arg0: u64)
1LdU64(0)
2Eq
3BrFalse(7)
B1:
4LdTrue
5StLoc[2](loc0: bool)
6Branch(11)
B2:
7CopyLoc[1](Arg1: u64)
8LdU64(0)
9Eq
10StLoc[2](loc0: bool)
B3:
11MoveLoc[2](loc0: bool)
12BrFalse(15)
B4:
13LdU64(0)
14Ret
B5:
15MoveLoc[0](Arg0: u64)
16LdU64(1)
17Sub
18MoveLoc[1](Arg1: u64)
19Div
20LdU64(1)
21Add
22Ret
}
 
public calc_lock_multiplier(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: u64): u64 {
L4: loc0: bool
L5: loc1: u64
B0:
0CopyLoc[0](Arg0: u64)
1CopyLoc[1](Arg1: u64)
2Le
3BrFalse(7)
B1:
4LdTrue
5StLoc[4](loc0: bool)
6Branch(11)
B2:
7CopyLoc[2](Arg2: u64)
8CopyLoc[1](Arg1: u64)
9Le
10StLoc[4](loc0: bool)
B3:
11MoveLoc[4](loc0: bool)
12BrFalse(15)
B4:
13Call lock_multiplier_lower_bound(): u64
14Ret
B5:
15CopyLoc[0](Arg0: u64)
16CopyLoc[2](Arg2: u64)
17Ge
18BrFalse(21)
B6:
19MoveLoc[3](Arg3: u64)
20Ret
B7:
21CopyLoc[3](Arg3: u64)
22Call lock_multiplier_lower_bound(): u64
23Sub
24StLoc[5](loc1: u64)
25Call lock_multiplier_lower_bound(): u64
26MoveLoc[5](loc1: u64)
27CastU128
28MoveLoc[0](Arg0: u64)
29CopyLoc[1](Arg1: u64)
30Sub
31CastU128
32Mul
33MoveLoc[2](Arg2: u64)
34MoveLoc[1](Arg1: u64)
35Sub
36CastU128
37Div
38CastU64
39Add
40MoveLoc[3](Arg3: u64)
41Call u64::min(u64, u64): u64
42Ret
}
 
public calc_multiplier_staked_amount(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0CopyLoc[1](Arg1: u64)
1Call lock_multiplier_lower_bound(): u64
2Ge
3BrFalse(5)
B1:
4Branch(7)
B2:
5MoveLoc[1](Arg1: u64)
6Abort
B3:
7MoveLoc[1](Arg1: u64)
8Call lock_multiplier_lower_bound(): u64
9Sub
10StLoc[2](loc0: u64)
11MoveLoc[0](Arg0: u64)
12MoveLoc[2](loc0: u64)
13Call multiply(u64, u64): u128
14LdConst[0](u64: 1000..)
15Call divide(u128, u64): u64
16Ret
}
 
public(friend) multiply(Arg0: u64, Arg1: u64): u128 {
B0:
0MoveLoc[0](Arg0: u64)
1CastU128
2MoveLoc[1](Arg1: u64)
3CastU128
4Mul
5Ret
}
 
public(friend) multiply_u128(Arg0: u128, Arg1: u64): u128 {
B0:
0MoveLoc[0](Arg0: u128)
1MoveLoc[1](Arg1: u64)
2CastU128
3Mul
4Ret
}
 
public(friend) divide(Arg0: u128, Arg1: u64): u64 {
B0:
0MoveLoc[0](Arg0: u128)
1MoveLoc[1](Arg1: u64)
2CastU128
3Div
4CastU64
5Ret
}
 
public(friend) divide_u128(Arg0: u128, Arg1: u64): u64 {
B0:
0MoveLoc[0](Arg0: u128)
1MoveLoc[1](Arg1: u64)
2CastU128
3Div
4CastU64
5Ret
}
 
public(friend) divide_into_u128(Arg0: u128, Arg1: u64): u128 {
B0:
0MoveLoc[0](Arg0: u128)
1MoveLoc[1](Arg1: u64)
2CastU128
3Div
4Ret
}
 
public(friend) max(Arg0: &vector<u64>): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
B0:
0LdU64(0)
1StLoc[3](loc2: u64)
2CopyLoc[0](Arg0: &vector<u64>)
3VecLen(1)
4StLoc[2](loc1: u64)
5LdU64(0)
6StLoc[1](loc0: u64)
B1:
7CopyLoc[1](loc0: u64)
8CopyLoc[2](loc1: u64)
9Lt
10BrFalse(24)
B2:
11Branch(12)
B3:
12MoveLoc[3](loc2: u64)
13CopyLoc[0](Arg0: &vector<u64>)
14CopyLoc[1](loc0: u64)
15VecImmBorrow(1)
16ReadRef
17Call u64::max(u64, u64): u64
18StLoc[3](loc2: u64)
19MoveLoc[1](loc0: u64)
20LdU64(1)
21Add
22StLoc[1](loc0: u64)
23Branch(7)
B4:
24MoveLoc[0](Arg0: &vector<u64>)
25Pop
26MoveLoc[3](loc2: u64)
27Ret
}
 
public(friend) sum(Arg0: vector<u64>): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: vector<u64>
L8: loc7: vector<u64>
L9: loc8: u64
B0:
0MoveLoc[0](Arg0: vector<u64>)
1StLoc[7](loc6: vector<u64>)
2LdU64(0)
3StLoc[2](loc1: u64)
4MoveLoc[7](loc6: vector<u64>)
5StLoc[8](loc7: vector<u64>)
6MutBorrowLoc[8](loc7: vector<u64>)
7Call vector::reverse<u64>(&mut vector<u64>)
8ImmBorrowLoc[8](loc7: vector<u64>)
9VecLen(1)
10StLoc[1](loc0: u64)
11LdU64(0)
12StLoc[5](loc4: u64)
13MoveLoc[1](loc0: u64)
14StLoc[6](loc5: u64)
B1:
15CopyLoc[5](loc4: u64)
16CopyLoc[6](loc5: u64)
17Lt
18BrFalse(37)
B2:
19CopyLoc[5](loc4: u64)
20Pop
21MutBorrowLoc[8](loc7: vector<u64>)
22VecPopBack(1)
23StLoc[4](loc3: u64)
24MoveLoc[2](loc1: u64)
25StLoc[3](loc2: u64)
26MoveLoc[4](loc3: u64)
27StLoc[9](loc8: u64)
28MoveLoc[3](loc2: u64)
29MoveLoc[9](loc8: u64)
30Add
31StLoc[2](loc1: u64)
32MoveLoc[5](loc4: u64)
33LdU64(1)
34Add
35StLoc[5](loc4: u64)
36Branch(15)
B3:
37MoveLoc[8](loc7: vector<u64>)
38VecUnpack(1, 0)
39MoveLoc[2](loc1: u64)
40Ret
}
 
Constants [
0 => u64: 1000000000000000000
]
}