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

API

math

Module0x40fc…5bb2
Move path
0xed6c…9f32::math
Functions
88 public, 0 entry
Structs
0
Friend modules
None
math

Bytecode338 lines

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

// Move bytecode v6
module ed6c6fe0732be937f4379bc0b471f0f6bfbe0e8741968009e0f01e6de3d59f32.math {
 
public max(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: u64)
1CopyLoc[1](Arg1: u64)
2Ge
3BrFalse(7)
B1:
4MoveLoc[0](Arg0: u64)
5StLoc[2](loc0: u64)
6Branch(9)
B2:
7MoveLoc[1](Arg1: u64)
8StLoc[2](loc0: u64)
B3:
9MoveLoc[2](loc0: u64)
10Ret
}
 
public min(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: u64)
1CopyLoc[1](Arg1: u64)
2Lt
3BrFalse(7)
B1:
4MoveLoc[0](Arg0: u64)
5StLoc[2](loc0: u64)
6Branch(9)
B2:
7MoveLoc[1](Arg1: u64)
8StLoc[2](loc0: u64)
B3:
9MoveLoc[2](loc0: u64)
10Ret
}
 
public average(Arg0: u64, Arg1: u64): u64 {
B0:
0CopyLoc[0](Arg0: u64)
1CopyLoc[1](Arg1: u64)
2BitAnd
3MoveLoc[0](Arg0: u64)
4MoveLoc[1](Arg1: u64)
5Xor
6LdU64(2)
7Div
8Add
9Ret
}
 
public ceil_div(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: u64)
1LdU64(0)
2Eq
3BrFalse(7)
B1:
4LdU64(0)
5StLoc[2](loc0: u64)
6Branch(15)
B2:
7MoveLoc[0](Arg0: u64)
8LdU64(1)
9Sub
10MoveLoc[1](Arg1: u64)
11Div
12LdU64(1)
13Add
14StLoc[2](loc0: u64)
B3:
15MoveLoc[2](loc0: u64)
16Ret
}
 
public exp(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0LdU64(1)
1StLoc[2](loc0: u64)
B1:
2CopyLoc[1](Arg1: u64)
3LdU64(0)
4Gt
5BrFalse(26)
B2:
6Branch(7)
B3:
7CopyLoc[1](Arg1: u64)
8LdU64(1)
9BitAnd
10LdU64(0)
11Gt
12BrFalse(17)
B4:
13MoveLoc[2](loc0: u64)
14CopyLoc[0](Arg0: u64)
15Mul
16StLoc[2](loc0: u64)
B5:
17MoveLoc[1](Arg1: u64)
18LdU8(1)
19Shr
20StLoc[1](Arg1: u64)
21CopyLoc[0](Arg0: u64)
22MoveLoc[0](Arg0: u64)
23Mul
24StLoc[0](Arg0: u64)
25Branch(2)
B6:
26MoveLoc[2](loc0: u64)
27Ret
}
 
public sqrt(Arg0: u64): u64 {
L1: loc0: u64
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: u64)
1LdU64(0)
2Eq
3BrFalse(6)
B1:
4LdU64(0)
5Ret
B2:
6LdU64(1)
7StLoc[1](loc0: u64)
8CopyLoc[0](Arg0: u64)
9StLoc[2](loc1: u64)
10CopyLoc[2](loc1: u64)
11LdU8(32)
12Shr
13LdU64(0)
14Gt
15BrFalse(24)
B3:
16MoveLoc[2](loc1: u64)
17LdU8(32)
18Shr
19StLoc[2](loc1: u64)
20MoveLoc[1](loc0: u64)
21LdU8(16)
22Shl
23StLoc[1](loc0: u64)
B4:
24CopyLoc[2](loc1: u64)
25LdU8(16)
26Shr
27LdU64(0)
28Gt
29BrFalse(38)
B5:
30MoveLoc[2](loc1: u64)
31LdU8(16)
32Shr
33StLoc[2](loc1: u64)
34MoveLoc[1](loc0: u64)
35LdU8(8)
36Shl
37StLoc[1](loc0: u64)
B6:
38CopyLoc[2](loc1: u64)
39LdU8(8)
40Shr
41LdU64(0)
42Gt
43BrFalse(52)
B7:
44MoveLoc[2](loc1: u64)
45LdU8(8)
46Shr
47StLoc[2](loc1: u64)
48MoveLoc[1](loc0: u64)
49LdU8(4)
50Shl
51StLoc[1](loc0: u64)
B8:
52CopyLoc[2](loc1: u64)
53LdU8(4)
54Shr
55LdU64(0)
56Gt
57BrFalse(66)
B9:
58MoveLoc[2](loc1: u64)
59LdU8(4)
60Shr
61StLoc[2](loc1: u64)
62MoveLoc[1](loc0: u64)
63LdU8(2)
64Shl
65StLoc[1](loc0: u64)
B10:
66MoveLoc[2](loc1: u64)
67LdU8(2)
68Shr
69LdU64(0)
70Gt
71BrFalse(76)
B11:
72MoveLoc[1](loc0: u64)
73LdU8(1)
74Shl
75StLoc[1](loc0: u64)
B12:
76CopyLoc[1](loc0: u64)
77CopyLoc[0](Arg0: u64)
78MoveLoc[1](loc0: u64)
79Div
80Add
81LdU8(1)
82Shr
83StLoc[1](loc0: u64)
84CopyLoc[1](loc0: u64)
85CopyLoc[0](Arg0: u64)
86MoveLoc[1](loc0: u64)
87Div
88Add
89LdU8(1)
90Shr
91StLoc[1](loc0: u64)
92CopyLoc[1](loc0: u64)
93CopyLoc[0](Arg0: u64)
94MoveLoc[1](loc0: u64)
95Div
96Add
97LdU8(1)
98Shr
99StLoc[1](loc0: u64)
100CopyLoc[1](loc0: u64)
101CopyLoc[0](Arg0: u64)
102MoveLoc[1](loc0: u64)
103Div
104Add
105LdU8(1)
106Shr
107StLoc[1](loc0: u64)
108CopyLoc[1](loc0: u64)
109CopyLoc[0](Arg0: u64)
110MoveLoc[1](loc0: u64)
111Div
112Add
113LdU8(1)
114Shr
115StLoc[1](loc0: u64)
116CopyLoc[1](loc0: u64)
117CopyLoc[0](Arg0: u64)
118MoveLoc[1](loc0: u64)
119Div
120Add
121LdU8(1)
122Shr
123StLoc[1](loc0: u64)
124CopyLoc[1](loc0: u64)
125CopyLoc[0](Arg0: u64)
126MoveLoc[1](loc0: u64)
127Div
128Add
129LdU8(1)
130Shr
131StLoc[1](loc0: u64)
132CopyLoc[1](loc0: u64)
133MoveLoc[0](Arg0: u64)
134MoveLoc[1](loc0: u64)
135Div
136Call min(u64, u64): u64
137Ret
}
 
public sqrt_rounding(Arg0: u64, Arg1: u8): u64 {
L2: loc0: bool
L3: loc1: u64
B0:
0CopyLoc[0](Arg0: u64)
1Call sqrt(u64): u64
2StLoc[3](loc1: u64)
3MoveLoc[1](Arg1: u8)
4LdConst[0](u8: 0)
5Eq
6BrFalse(14)
B1:
7CopyLoc[3](loc1: u64)
8CopyLoc[3](loc1: u64)
9Mul
10MoveLoc[0](Arg0: u64)
11Lt
12StLoc[2](loc0: bool)
13Branch(16)
B2:
14LdFalse
15StLoc[2](loc0: bool)
B3:
16MoveLoc[2](loc0: bool)
17BrFalse(22)
B4:
18MoveLoc[3](loc1: u64)
19LdU64(1)
20Add
21StLoc[3](loc1: u64)
B5:
22MoveLoc[3](loc1: u64)
23Ret
}
 
public quadratic(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: u64): u64 {
B0:
0CopyLoc[0](Arg0: u64)
1LdU64(2)
2Call exp(u64, u64): u64
3LdConst[1](u64: 65536)
4Div
5MoveLoc[1](Arg1: u64)
6Mul
7LdConst[1](u64: 65536)
8Div
9MoveLoc[2](Arg2: u64)
10MoveLoc[0](Arg0: u64)
11Mul
12LdConst[1](u64: 65536)
13Div
14Add
15MoveLoc[3](Arg3: u64)
16Add
17Ret
}
 
Constants [
0 => u8: 0
1 => u64: 65536
]
}