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

API

decimal

Module0x93f6…7dfd
Move path
0x7fd8…1fec::decimal
Functions
2929 public, 0 entry
Structs
1
Friend modules
None
decimal

Bytecode821 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v7
module 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec.decimal {
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::rate;
 
struct Decimal has copy, drop, store {
value: u256
}
 
public one(): Decimal {
B0:
0LdConst[0](u256: 1000..)
1Pack[0](Decimal)
2Ret
}
 
public zero(): Decimal {
B0:
0LdU256(0)
1Pack[0](Decimal)
2Ret
}
 
public from_raw(Arg0: u256): Decimal {
B0:
0CopyLoc[0](Arg0: u256)
1LdConst[5](u256: 1844..)
2Le
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[6](u64: 1)
6Abort
B3:
7MoveLoc[0](Arg0: u256)
8Pack[0](Decimal)
9Ret
}
 
public from_u64(Arg0: u64): Decimal {
B0:
0MoveLoc[0](Arg0: u64)
1CastU256
2LdConst[0](u256: 1000..)
3Mul
4Pack[0](Decimal)
5Ret
}
 
public from_u128(Arg0: u128): Decimal {
B0:
0MoveLoc[0](Arg0: u128)
1CastU256
2LdConst[0](u256: 1000..)
3Mul
4Pack[0](Decimal)
5Ret
}
 
public from_rate(Arg0: Rate): Decimal {
B0:
0MoveLoc[0](Arg0: Rate)
1Call rate::to_raw(Rate): u128
2CastU256
3Pack[0](Decimal)
4Ret
}
 
public to_rate(Arg0: Decimal): Rate {
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdConst[3](u256: 3402..)
4CastU256
5Le
6BrFalse(8)
B1:
7Branch(10)
B2:
8LdConst[6](u64: 1)
9Abort
B3:
10ImmBorrowLoc[0](Arg0: Decimal)
11ImmBorrowField[0](Decimal.value: u256)
12ReadRef
13CastU128
14Call rate::from_raw(u128): Rate
15Ret
}
 
public to_raw(Arg0: Decimal): u256 {
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3Ret
}
 
public mul_div(Arg0: Decimal, Arg1: Decimal, Arg2: Decimal): Decimal {
L3: loc0: bool
L4: loc1: Decimal
L5: loc2: u256
L6: loc3: u256
B0:
0ImmBorrowLoc[2](Arg2: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdU256(0)
4Gt
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdConst[7](u64: 2)
8Abort
B3:
9ImmBorrowLoc[0](Arg0: Decimal)
10ImmBorrowField[0](Decimal.value: u256)
11ReadRef
12LdU256(0)
13Gt
14BrFalse(35)
B4:
15ImmBorrowLoc[1](Arg1: Decimal)
16ImmBorrowField[0](Decimal.value: u256)
17ReadRef
18LdU256(0)
19Gt
20BrFalse(32)
B5:
21ImmBorrowLoc[0](Arg0: Decimal)
22ImmBorrowField[0](Decimal.value: u256)
23ReadRef
24LdConst[4](u256: 1157..)
25ImmBorrowLoc[1](Arg1: Decimal)
26ImmBorrowField[0](Decimal.value: u256)
27ReadRef
28Div
29Gt
30StLoc[3](loc0: bool)
31Branch(37)
B6:
32LdFalse
33StLoc[3](loc0: bool)
34Branch(37)
B7:
35LdFalse
36StLoc[3](loc0: bool)
B8:
37MoveLoc[3](loc0: bool)
38BrFalse(62)
B9:
39ImmBorrowLoc[0](Arg0: Decimal)
40ImmBorrowField[0](Decimal.value: u256)
41ReadRef
42ImmBorrowLoc[2](Arg2: Decimal)
43ImmBorrowField[0](Decimal.value: u256)
44ReadRef
45Div
46ImmBorrowLoc[1](Arg1: Decimal)
47ImmBorrowField[0](Decimal.value: u256)
48ReadRef
49Mul
50StLoc[5](loc2: u256)
51CopyLoc[5](loc2: u256)
52LdConst[5](u256: 1844..)
53Le
54BrFalse(56)
B10:
55Branch(58)
B11:
56LdConst[6](u64: 1)
57Abort
B12:
58MoveLoc[5](loc2: u256)
59Pack[0](Decimal)
60StLoc[4](loc1: Decimal)
61Branch(84)
B13:
62ImmBorrowLoc[0](Arg0: Decimal)
63ImmBorrowField[0](Decimal.value: u256)
64ReadRef
65ImmBorrowLoc[1](Arg1: Decimal)
66ImmBorrowField[0](Decimal.value: u256)
67ReadRef
68Mul
69ImmBorrowLoc[2](Arg2: Decimal)
70ImmBorrowField[0](Decimal.value: u256)
71ReadRef
72Div
73StLoc[6](loc3: u256)
74CopyLoc[6](loc3: u256)
75LdConst[5](u256: 1844..)
76Le
77BrFalse(79)
B14:
78Branch(81)
B15:
79LdConst[6](u64: 1)
80Abort
B16:
81MoveLoc[6](loc3: u256)
82Pack[0](Decimal)
83StLoc[4](loc1: Decimal)
B17:
84MoveLoc[4](loc1: Decimal)
85Ret
}
 
public mul_div_by_64(Arg0: Decimal, Arg1: Decimal, Arg2: u64): Decimal {
B0:
0CopyLoc[2](Arg2: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[7](u64: 2)
6Abort
B3:
7MoveLoc[0](Arg0: Decimal)
8MoveLoc[1](Arg1: Decimal)
9MoveLoc[2](Arg2: u64)
10Call from_u64(u64): Decimal
11Call mul_div(Decimal, Decimal, Decimal): Decimal
12Ret
}
 
public ceil_u64(Arg0: Decimal): u64 {
L1: loc0: u256
B0:
0LdConst[0](u256: 1000..)
1LdU256(1)
2Sub
3ImmBorrowLoc[0](Arg0: Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Add
7LdConst[0](u256: 1000..)
8Div
9StLoc[1](loc0: u256)
10CopyLoc[1](loc0: u256)
11LdConst[2](u256: 1844..)
12Le
13BrFalse(15)
B1:
14Branch(17)
B2:
15LdConst[6](u64: 1)
16Abort
B3:
17MoveLoc[1](loc0: u256)
18CastU64
19Ret
}
 
public floor_u64(Arg0: Decimal): u64 {
L1: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdConst[0](u256: 1000..)
4Div
5StLoc[1](loc0: u256)
6CopyLoc[1](loc0: u256)
7LdConst[2](u256: 1844..)
8Le
9BrFalse(11)
B1:
10Branch(13)
B2:
11LdConst[6](u64: 1)
12Abort
B3:
13MoveLoc[1](loc0: u256)
14CastU64
15Ret
}
 
public round_u64(Arg0: Decimal): u64 {
L1: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdConst[1](u256: 5000..)
4Add
5LdConst[0](u256: 1000..)
6Div
7StLoc[1](loc0: u256)
8CopyLoc[1](loc0: u256)
9LdConst[2](u256: 1844..)
10Le
11BrFalse(13)
B1:
12Branch(15)
B2:
13LdConst[6](u64: 1)
14Abort
B3:
15MoveLoc[1](loc0: u256)
16CastU64
17Ret
}
 
public truncate_decimal(Arg0: Decimal): u64 {
L1: loc0: u256
B0:
0MoveLoc[0](Arg0: Decimal)
1Call to_raw(Decimal): u256
2LdU256(1000000000000)
3Div
4StLoc[1](loc0: u256)
5CopyLoc[1](loc0: u256)
6LdConst[2](u256: 1844..)
7CastU256
8Le
9BrFalse(11)
B1:
10Branch(13)
B2:
11LdConst[6](u64: 1)
12Abort
B3:
13MoveLoc[1](loc0: u256)
14CastU64
15Ret
}
 
public is_zero(Arg0: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdU256(0)
4Eq
5Ret
}
 
public is_one(Arg0: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdConst[0](u256: 1000..)
4Eq
5Ret
}
 
public eq(Arg0: &Decimal, Arg1: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3MoveLoc[1](Arg1: &Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Eq
7Ret
}
 
public lt(Arg0: &Decimal, Arg1: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3MoveLoc[1](Arg1: &Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Lt
7Ret
}
 
public le(Arg0: &Decimal, Arg1: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3MoveLoc[1](Arg1: &Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Le
7Ret
}
 
public gt(Arg0: &Decimal, Arg1: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3MoveLoc[1](Arg1: &Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Gt
7Ret
}
 
public ge(Arg0: &Decimal, Arg1: &Decimal): bool {
B0:
0MoveLoc[0](Arg0: &Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3MoveLoc[1](Arg1: &Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Ge
7Ret
}
 
public diff(Arg0: Decimal, Arg1: Decimal): Decimal {
L2: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Gt
7BrFalse(17)
B1:
8ImmBorrowLoc[0](Arg0: Decimal)
9ImmBorrowField[0](Decimal.value: u256)
10ReadRef
11ImmBorrowLoc[1](Arg1: Decimal)
12ImmBorrowField[0](Decimal.value: u256)
13ReadRef
14Sub
15StLoc[2](loc0: u256)
16Branch(25)
B2:
17ImmBorrowLoc[1](Arg1: Decimal)
18ImmBorrowField[0](Decimal.value: u256)
19ReadRef
20ImmBorrowLoc[0](Arg0: Decimal)
21ImmBorrowField[0](Decimal.value: u256)
22ReadRef
23Sub
24StLoc[2](loc0: u256)
B3:
25MoveLoc[2](loc0: u256)
26Pack[0](Decimal)
27Ret
}
 
public add(Arg0: Decimal, Arg1: Decimal): Decimal {
L2: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Add
7StLoc[2](loc0: u256)
8CopyLoc[2](loc0: u256)
9LdConst[5](u256: 1844..)
10Le
11BrFalse(13)
B1:
12Branch(15)
B2:
13LdConst[6](u64: 1)
14Abort
B3:
15MoveLoc[2](loc0: u256)
16Pack[0](Decimal)
17Ret
}
 
public sub(Arg0: Decimal, Arg1: Decimal): Decimal {
L2: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Sub
7StLoc[2](loc0: u256)
8CopyLoc[2](loc0: u256)
9LdConst[5](u256: 1844..)
10Le
11BrFalse(13)
B1:
12Branch(15)
B2:
13LdConst[6](u64: 1)
14Abort
B3:
15MoveLoc[2](loc0: u256)
16Pack[0](Decimal)
17Ret
}
 
public mul(Arg0: Decimal, Arg1: Decimal): Decimal {
L2: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Decimal)
4ImmBorrowField[0](Decimal.value: u256)
5ReadRef
6Mul
7LdConst[0](u256: 1000..)
8Div
9StLoc[2](loc0: u256)
10CopyLoc[2](loc0: u256)
11LdConst[5](u256: 1844..)
12Le
13BrFalse(15)
B1:
14Branch(17)
B2:
15LdConst[6](u64: 1)
16Abort
B3:
17MoveLoc[2](loc0: u256)
18Pack[0](Decimal)
19Ret
}
 
public mul_with_u64(Arg0: Decimal, Arg1: u64): Decimal {
L2: loc0: u256
B0:
0ImmBorrowLoc[0](Arg0: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3MoveLoc[1](Arg1: u64)
4CastU256
5Mul
6StLoc[2](loc0: u256)
7CopyLoc[2](loc0: u256)
8LdConst[5](u256: 1844..)
9Le
10BrFalse(12)
B1:
11Branch(14)
B2:
12LdConst[6](u64: 1)
13Abort
B3:
14MoveLoc[2](loc0: u256)
15Pack[0](Decimal)
16Ret
}
 
public mul_with_rate(Arg0: Decimal, Arg1: Rate): Decimal {
B0:
0MoveLoc[0](Arg0: Decimal)
1MoveLoc[1](Arg1: Rate)
2Call from_rate(Rate): Decimal
3Call mul(Decimal, Decimal): Decimal
4Ret
}
 
public div(Arg0: Decimal, Arg1: Decimal): Decimal {
L2: loc0: u256
B0:
0ImmBorrowLoc[1](Arg1: Decimal)
1ImmBorrowField[0](Decimal.value: u256)
2ReadRef
3LdU256(0)
4Gt
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdConst[7](u64: 2)
8Abort
B3:
9ImmBorrowLoc[0](Arg0: Decimal)
10ImmBorrowField[0](Decimal.value: u256)
11ReadRef
12LdConst[0](u256: 1000..)
13Mul
14ImmBorrowLoc[1](Arg1: Decimal)
15ImmBorrowField[0](Decimal.value: u256)
16ReadRef
17Div
18StLoc[2](loc0: u256)
19CopyLoc[2](loc0: u256)
20LdConst[5](u256: 1844..)
21Le
22BrFalse(24)
B4:
23Branch(26)
B5:
24LdConst[6](u64: 1)
25Abort
B6:
26MoveLoc[2](loc0: u256)
27Pack[0](Decimal)
28Ret
}
 
public div_by_u64(Arg0: Decimal, Arg1: u64): Decimal {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[7](u64: 2)
6Abort
B3:
7ImmBorrowLoc[0](Arg0: Decimal)
8ImmBorrowField[0](Decimal.value: u256)
9ReadRef
10MoveLoc[1](Arg1: u64)
11CastU256
12Div
13Pack[0](Decimal)
14Ret
}
 
public div_by_rate(Arg0: Decimal, Arg1: Rate): Decimal {
B0:
0MoveLoc[0](Arg0: Decimal)
1MoveLoc[1](Arg1: Rate)
2Call from_rate(Rate): Decimal
3Call div(Decimal, Decimal): Decimal
4Ret
}
 
public pow_u64(Arg0: Decimal, Arg1: u64): Decimal {
L2: loc0: Decimal
L3: loc1: u64
L4: loc2: Decimal
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Eq
3BrFalse(6)
B1:
4Call one(): Decimal
5Ret
B2:
6ImmBorrowLoc[0](Arg0: Decimal)
7Call is_zero(&Decimal): bool
8BrFalse(11)
B3:
9Call zero(): Decimal
10Ret
B4:
11Call one(): Decimal
12StLoc[4](loc2: Decimal)
13MoveLoc[0](Arg0: Decimal)
14StLoc[2](loc0: Decimal)
15MoveLoc[1](Arg1: u64)
16StLoc[3](loc1: u64)
B5:
17CopyLoc[3](loc1: u64)
18LdU64(0)
19Gt
20BrFalse(45)
B6:
21CopyLoc[3](loc1: u64)
22LdU64(2)
23Mod
24LdU64(1)
25Eq
26BrFalse(32)
B7:
27MoveLoc[4](loc2: Decimal)
28CopyLoc[2](loc0: Decimal)
29Call mul(Decimal, Decimal): Decimal
30StLoc[4](loc2: Decimal)
31Branch(32)
B8:
32MoveLoc[3](loc1: u64)
33LdU64(2)
34Div
35StLoc[3](loc1: u64)
36CopyLoc[3](loc1: u64)
37LdU64(0)
38Gt
39BrFalse(17)
B9:
40CopyLoc[2](loc0: Decimal)
41MoveLoc[2](loc0: Decimal)
42Call mul(Decimal, Decimal): Decimal
43StLoc[2](loc0: Decimal)
44Branch(17)
B10:
45MoveLoc[4](loc2: Decimal)
46Ret
}
 
public pow_frac(Arg0: Decimal, Arg1: Decimal): Decimal {
L2: loc0: Decimal
L3: loc1: bool
L4: loc2: Decimal
L5: loc3: Decimal
L6: loc4: Decimal
L7: loc5: Decimal
L8: loc6: Decimal
L9: loc7: u256
L10: loc8: u64
L11: loc9: u256
L12: loc10: Decimal
L13: loc11: Decimal
L14: loc12: bool
B0:
0ImmBorrowLoc[1](Arg1: Decimal)
1Call is_zero(&Decimal): bool
2BrFalse(5)
B1:
3Call one(): Decimal
4Ret
B2:
5ImmBorrowLoc[0](Arg0: Decimal)
6Call is_zero(&Decimal): bool
7BrFalse(10)
B3:
8Call zero(): Decimal
9Ret
B4:
10MoveLoc[1](Arg1: Decimal)
11Call to_raw(Decimal): u256
12StLoc[11](loc9: u256)
13CopyLoc[11](loc9: u256)
14LdConst[0](u256: 1000..)
15Div
16CastU64
17StLoc[10](loc8: u64)
18MoveLoc[11](loc9: u256)
19LdConst[0](u256: 1000..)
20Mod
21StLoc[9](loc7: u256)
22CopyLoc[0](Arg0: Decimal)
23CopyLoc[10](loc8: u64)
24Call pow_u64(Decimal, u64): Decimal
25StLoc[6](loc4: Decimal)
26CopyLoc[9](loc7: u256)
27LdU256(0)
28Gt
29BrFalse(78)
B5:
30MoveLoc[0](Arg0: Decimal)
31MoveLoc[10](loc8: u64)
32LdU64(1)
33Add
34Call pow_u64(Decimal, u64): Decimal
35StLoc[7](loc5: Decimal)
36ImmBorrowLoc[6](loc4: Decimal)
37ImmBorrowLoc[7](loc5: Decimal)
38Call ge(&Decimal, &Decimal): bool
39BrFalse(47)
B6:
40CopyLoc[6](loc4: Decimal)
41MoveLoc[7](loc5: Decimal)
42Call sub(Decimal, Decimal): Decimal
43LdTrue
44StLoc[3](loc1: bool)
45StLoc[2](loc0: Decimal)
46Branch(53)
B7:
47MoveLoc[7](loc5: Decimal)
48CopyLoc[6](loc4: Decimal)
49Call sub(Decimal, Decimal): Decimal
50LdFalse
51StLoc[3](loc1: bool)
52StLoc[2](loc0: Decimal)
B8:
53MoveLoc[2](loc0: Decimal)
54MoveLoc[3](loc1: bool)
55StLoc[14](loc12: bool)
56StLoc[8](loc6: Decimal)
57MoveLoc[9](loc7: u256)
58Call from_raw(u256): Decimal
59StLoc[13](loc11: Decimal)
60MoveLoc[8](loc6: Decimal)
61MoveLoc[13](loc11: Decimal)
62Call mul(Decimal, Decimal): Decimal
63StLoc[12](loc10: Decimal)
64MoveLoc[14](loc12: bool)
65BrFalse(71)
B9:
66MoveLoc[6](loc4: Decimal)
67MoveLoc[12](loc10: Decimal)
68Call sub(Decimal, Decimal): Decimal
69StLoc[4](loc2: Decimal)
70Branch(75)
B10:
71MoveLoc[6](loc4: Decimal)
72MoveLoc[12](loc10: Decimal)
73Call add(Decimal, Decimal): Decimal
74StLoc[4](loc2: Decimal)
B11:
75MoveLoc[4](loc2: Decimal)
76StLoc[5](loc3: Decimal)
77Branch(80)
B12:
78MoveLoc[6](loc4: Decimal)
79StLoc[5](loc3: Decimal)
B13:
80MoveLoc[5](loc3: Decimal)
81Ret
}
 
Constants [
0 => u256: 1000000000000000000
1 => u256: 500000000000000000
2 => u256: 18446744073709551615
3 => u256: 340282366920938463463374607431768211455
4 => u256: 115792089237316195423570985008687907853269984665640564039457584007913129639935
5 => u256: 18446744073709551615000000000000000000
6 => u64: 1
7 => u64: 2
]
}