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

Move path
0x0000…dee9::math
Functions
83 public, 0 entry
Structs
0
Friend modules
clob_v2critbit
math

Bytecode306 lines

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

// Move bytecode v7
module dee9.math {
 
public(friend) unsafe_mul(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call unsafe_mul_round(u64, u64): bool * u64
3StLoc[2](loc0: u64)
4Pop
5MoveLoc[2](loc0: u64)
6Ret
}
 
public(friend) unsafe_mul_round(Arg0: u64, Arg1: u64): bool * u64 {
L2: loc0: bool
L3: loc1: u128
L4: loc2: u128
B0:
0MoveLoc[0](Arg0: u64)
1CastU128
2StLoc[3](loc1: u128)
3MoveLoc[1](Arg1: u64)
4CastU128
5StLoc[4](loc2: u128)
6LdTrue
7StLoc[2](loc0: bool)
8CopyLoc[3](loc1: u128)
9CopyLoc[4](loc2: u128)
10Mul
11LdConst[1](u128: 1000..)
12Mod
13LdU128(0)
14Eq
15BrFalse(18)
B1:
16LdFalse
17StLoc[2](loc0: bool)
B2:
18MoveLoc[2](loc0: bool)
19MoveLoc[3](loc1: u128)
20MoveLoc[4](loc2: u128)
21Mul
22LdConst[1](u128: 1000..)
23Div
24CastU64
25Ret
}
 
public mul(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call unsafe_mul_round(u64, u64): bool * u64
3StLoc[2](loc0: u64)
4Pop
5CopyLoc[2](loc0: u64)
6LdU64(0)
7Gt
8BrFalse(10)
B1:
9Branch(12)
B2:
10LdConst[2](u64: 1)
11Abort
B3:
12MoveLoc[2](loc0: u64)
13Ret
}
 
public mul_round(Arg0: u64, Arg1: u64): bool * u64 {
L2: loc0: bool
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call unsafe_mul_round(u64, u64): bool * u64
3StLoc[3](loc1: u64)
4StLoc[2](loc0: bool)
5CopyLoc[3](loc1: u64)
6LdU64(0)
7Gt
8BrFalse(10)
B1:
9Branch(12)
B2:
10LdConst[2](u64: 1)
11Abort
B3:
12MoveLoc[2](loc0: bool)
13MoveLoc[3](loc1: u64)
14Ret
}
 
public(friend) unsafe_div(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call unsafe_div_round(u64, u64): bool * u64
3StLoc[2](loc0: u64)
4Pop
5MoveLoc[2](loc0: u64)
6Ret
}
 
public(friend) unsafe_div_round(Arg0: u64, Arg1: u64): bool * u64 {
L2: loc0: bool
L3: loc1: u128
L4: loc2: u128
B0:
0MoveLoc[0](Arg0: u64)
1CastU128
2StLoc[3](loc1: u128)
3MoveLoc[1](Arg1: u64)
4CastU128
5StLoc[4](loc2: u128)
6LdTrue
7StLoc[2](loc0: bool)
8CopyLoc[3](loc1: u128)
9LdConst[0](u64: 1000..)
10CastU128
11Mul
12CopyLoc[4](loc2: u128)
13Mod
14LdU128(0)
15Eq
16BrFalse(19)
B1:
17LdFalse
18StLoc[2](loc0: bool)
B2:
19MoveLoc[2](loc0: bool)
20MoveLoc[3](loc1: u128)
21LdConst[0](u64: 1000..)
22CastU128
23Mul
24MoveLoc[4](loc2: u128)
25Div
26CastU64
27Ret
}
 
public div_round(Arg0: u64, Arg1: u64): bool * u64 {
L2: loc0: bool
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call unsafe_div_round(u64, u64): bool * u64
3StLoc[3](loc1: u64)
4StLoc[2](loc0: bool)
5CopyLoc[3](loc1: u64)
6LdU64(0)
7Gt
8BrFalse(10)
B1:
9Branch(12)
B2:
10LdConst[2](u64: 1)
11Abort
B3:
12MoveLoc[2](loc0: bool)
13MoveLoc[3](loc1: u64)
14Ret
}
 
public(friend) count_leading_zeros(Arg0: u128): u8 {
L1: loc0: u8
L2: loc1: u8
B0:
0CopyLoc[0](Arg0: u128)
1LdU128(0)
2Eq
3BrFalse(7)
B1:
4LdU8(128)
5StLoc[1](loc0: u8)
6Branch(105)
B2:
7LdU8(0)
8StLoc[2](loc1: u8)
9CopyLoc[0](Arg0: u128)
10LdU128(340282366920938463444927863358058659840)
11BitAnd
12LdU128(0)
13Eq
14BrFalse(23)
B3:
15MoveLoc[0](Arg0: u128)
16LdU8(64)
17Shl
18StLoc[0](Arg0: u128)
19MoveLoc[2](loc1: u8)
20LdU8(64)
21Add
22StLoc[2](loc1: u8)
B4:
23CopyLoc[0](Arg0: u128)
24LdU128(340282366841710300949110269838224261120)
25BitAnd
26LdU128(0)
27Eq
28BrFalse(37)
B5:
29MoveLoc[0](Arg0: u128)
30LdU8(32)
31Shl
32StLoc[0](Arg0: u128)
33MoveLoc[2](loc1: u8)
34LdU8(32)
35Add
36StLoc[2](loc1: u8)
B6:
37CopyLoc[0](Arg0: u128)
38LdU128(340277174624079928635746076935438991360)
39BitAnd
40LdU128(0)
41Eq
42BrFalse(51)
B7:
43MoveLoc[0](Arg0: u128)
44LdU8(16)
45Shl
46StLoc[0](Arg0: u128)
47MoveLoc[2](loc1: u8)
48LdU8(16)
49Add
50StLoc[2](loc1: u8)
B8:
51CopyLoc[0](Arg0: u128)
52LdU128(338953138925153547590470800371487866880)
53BitAnd
54LdU128(0)
55Eq
56BrFalse(65)
B9:
57MoveLoc[0](Arg0: u128)
58LdU8(8)
59Shl
60StLoc[0](Arg0: u128)
61MoveLoc[2](loc1: u8)
62LdU8(8)
63Add
64StLoc[2](loc1: u8)
B10:
65CopyLoc[0](Arg0: u128)
66LdU128(319014718988379809496913694467282698240)
67BitAnd
68LdU128(0)
69Eq
70BrFalse(79)
B11:
71MoveLoc[0](Arg0: u128)
72LdU8(4)
73Shl
74StLoc[0](Arg0: u128)
75MoveLoc[2](loc1: u8)
76LdU8(4)
77Add
78StLoc[2](loc1: u8)
B12:
79CopyLoc[0](Arg0: u128)
80LdU128(255211775190703847597530955573826158592)
81BitAnd
82LdU128(0)
83Eq
84BrFalse(93)
B13:
85MoveLoc[0](Arg0: u128)
86LdU8(2)
87Shl
88StLoc[0](Arg0: u128)
89MoveLoc[2](loc1: u8)
90LdU8(2)
91Add
92StLoc[2](loc1: u8)
B14:
93MoveLoc[0](Arg0: u128)
94LdU128(170141183460469231731687303715884105728)
95BitAnd
96LdU128(0)
97Eq
98BrFalse(103)
B15:
99MoveLoc[2](loc1: u8)
100LdU8(1)
101Add
102StLoc[2](loc1: u8)
B16:
103MoveLoc[2](loc1: u8)
104StLoc[1](loc0: u8)
B17:
105MoveLoc[1](loc0: u8)
106Ret
}
 
Constants [
0 => u64: 1000000000
1 => u128: 1000000000
2 => u64: 1
]
}