math
Module0x0275…91d3
- Move path
- 0xce7f…4db2::math
- Functions
- 55 public, 0 entry
- Structs
- 0
- Friend modules
- None
math
Bytecode156 lines
The on-chain disassembly. Offsets are instruction numbers within each function.
// Move bytecode v7
module ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2.math {
public mul_div(Arg0: u64, Arg1: u64, Arg2: u64): u64 {
B0:
0CopyLoc[2](Arg2: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[1](u64: 0)
6Abort
B3:
7MoveLoc[0](Arg0: u64)
8CastU128
9MoveLoc[1](Arg1: u64)
10CastU128
11Mul
12MoveLoc[2](Arg2: u64)
13CastU128
14Div
15CastU64
16Ret
}
public mul_div_u128(Arg0: u64, Arg1: u64, Arg2: u64): u64 {
B0:
0CopyLoc[2](Arg2: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[1](u64: 0)
6Abort
B3:
7MoveLoc[0](Arg0: u64)
8CastU128
9MoveLoc[1](Arg1: u64)
10CastU128
11Mul
12MoveLoc[2](Arg2: u64)
13CastU128
14Div
15CastU64
16Ret
}
public mul_factor_u256(Arg0: u256, Arg1: u256, Arg2: u256): u256 {
L3: loc0: u256
L4: loc1: u256
L5: loc2: u256
L6: loc3: u256
L7: loc4: u256
B0:
0CopyLoc[2](Arg2: u256)
1LdU256(0)
2Gt
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[1](u64: 0)
6Abort
B3:
7CopyLoc[0](Arg0: u256)
8CopyLoc[1](Arg1: u256)
9Ge
10BrFalse(16)
B4:
11MoveLoc[0](Arg0: u256)
12MoveLoc[1](Arg1: u256)
13StLoc[4](loc1: u256)
14StLoc[3](loc0: u256)
15Branch(20)
B5:
16MoveLoc[1](Arg1: u256)
17MoveLoc[0](Arg0: u256)
18StLoc[4](loc1: u256)
19StLoc[3](loc0: u256)
B6:
20MoveLoc[3](loc0: u256)
21MoveLoc[4](loc1: u256)
22StLoc[7](loc4: u256)
23StLoc[6](loc3: u256)
24CopyLoc[6](loc3: u256)
25CopyLoc[7](loc4: u256)
26Call is_safe_mul(u256, u256): bool
27Not
28BrFalse(44)
B7:
29CopyLoc[6](loc3: u256)
30CopyLoc[2](Arg2: u256)
31Div
32CopyLoc[7](loc4: u256)
33Call checked_mul(u256, u256): u256
34MoveLoc[6](loc3: u256)
35CopyLoc[2](Arg2: u256)
36Mod
37MoveLoc[7](loc4: u256)
38Call checked_mul(u256, u256): u256
39MoveLoc[2](Arg2: u256)
40Div
41Add
42StLoc[5](loc2: u256)
43Branch(50)
B8:
44MoveLoc[6](loc3: u256)
45MoveLoc[7](loc4: u256)
46Mul
47MoveLoc[2](Arg2: u256)
48Div
49StLoc[5](loc2: u256)
B9:
50MoveLoc[5](loc2: u256)
51Ret
}
public checked_mul(Arg0: u256, Arg1: u256): u256 {
B0:
0CopyLoc[0](Arg0: u256)
1CopyLoc[1](Arg1: u256)
2Call is_safe_mul(u256, u256): bool
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[2](u64: 1)
6Abort
B3:
7MoveLoc[0](Arg0: u256)
8MoveLoc[1](Arg1: u256)
9Mul
10Ret
}
public is_safe_mul(Arg0: u256, Arg1: u256): bool {
B0:
0LdConst[0](u256: 1157..)
1MoveLoc[0](Arg0: u256)
2Div
3MoveLoc[1](Arg1: u256)
4Ge
5Ret
}
Constants [
0 => u256: 115792089237316195423570985008687907853269984665640564039457584007913129639935
1 => u64: 0
2 => u64: 1
]
}