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

API

math

Module0x0e73…f748
Move path
0x2c8d…4809::math
Functions
149 public, 0 entry
Structs
0
Friend modules
None
math

Bytecode472 lines

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

// Move bytecode v7
module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.math {
use 0000000000000000000000000000000000000000000000000000000000000001::u128;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
 
public mul(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call mul_internal(u64, u64): u64 * u64
3StLoc[2](loc0: u64)
4Pop
5MoveLoc[2](loc0: u64)
6Ret
}
 
public mul_u128(Arg0: u128, Arg1: u128): u128 {
L2: loc0: u128
B0:
0MoveLoc[0](Arg0: u128)
1MoveLoc[1](Arg1: u128)
2Call mul_internal_u128(u128, u128): u128 * u128
3StLoc[2](loc0: u128)
4Pop
5MoveLoc[2](loc0: u128)
6Ret
}
 
public mul_round_up(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call mul_internal(u64, u64): u64 * u64
3StLoc[3](loc1: u64)
4StLoc[2](loc0: u64)
5MoveLoc[3](loc1: u64)
6MoveLoc[2](loc0: u64)
7Add
8Ret
}
 
public div(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call div_internal(u64, u64): u64 * u64
3StLoc[2](loc0: u64)
4Pop
5MoveLoc[2](loc0: u64)
6Ret
}
 
public div_u128(Arg0: u128, Arg1: u128): u128 {
L2: loc0: u128
B0:
0MoveLoc[0](Arg0: u128)
1MoveLoc[1](Arg1: u128)
2Call div_internal_u128(u128, u128): u128 * u128
3StLoc[2](loc0: u128)
4Pop
5MoveLoc[2](loc0: u128)
6Ret
}
 
public div_round_up(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u64
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: u64)
2Call div_internal(u64, u64): u64 * u64
3StLoc[3](loc1: u64)
4StLoc[2](loc0: u64)
5MoveLoc[3](loc1: u64)
6MoveLoc[2](loc0: u64)
7Add
8Ret
}
 
public median(Arg0: vector<u128>): u128 {
L1: loc0: u128
L2: loc1: u64
L3: loc2: vector<u128>
B0:
0ImmBorrowLoc[0](Arg0: vector<u128>)
1VecLen(3)
2StLoc[2](loc1: u64)
3CopyLoc[2](loc1: u64)
4LdU64(0)
5Eq
6BrFalse(9)
B1:
7LdU128(0)
8Ret
B2:
9MoveLoc[0](Arg0: vector<u128>)
10Call quick_sort(vector<u128>): vector<u128>
11StLoc[3](loc2: vector<u128>)
12CopyLoc[2](loc1: u64)
13LdU64(2)
14Mod
15LdU64(0)
16Eq
17BrFalse(39)
B3:
18ImmBorrowLoc[3](loc2: vector<u128>)
19CopyLoc[2](loc1: u64)
20LdU64(2)
21Div
22LdU64(1)
23Sub
24VecImmBorrow(3)
25ReadRef
26ImmBorrowLoc[3](loc2: vector<u128>)
27MoveLoc[2](loc1: u64)
28LdU64(2)
29Div
30VecImmBorrow(3)
31ReadRef
32Add
33LdConst[1](u128: 1000..)
34LdU128(2)
35Div
36Call mul_u128(u128, u128): u128
37StLoc[1](loc0: u128)
38Branch(46)
B4:
39ImmBorrowLoc[3](loc2: vector<u128>)
40MoveLoc[2](loc1: u64)
41LdU64(2)
42Div
43VecImmBorrow(3)
44ReadRef
45StLoc[1](loc0: u128)
B5:
46MoveLoc[1](loc0: u128)
47Ret
}
 
public sqrt(Arg0: u64, Arg1: u64): u64 {
L2: loc0: u128
B0:
0CopyLoc[1](Arg1: u64)
1LdConst[0](u64: 1000..)
2Le
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[3](u64: 0)
6Abort
B3:
7LdConst[0](u64: 1000..)
8MoveLoc[1](Arg1: u64)
9Div
10CastU128
11StLoc[2](loc0: u128)
12MoveLoc[0](Arg0: u64)
13CastU128
14CopyLoc[2](loc0: u128)
15Mul
16LdConst[1](u128: 1000..)
17Mul
18Call u128::sqrt(u128): u128
19MoveLoc[2](loc0: u128)
20Div
21CastU64
22Ret
}
 
public is_power_of_ten(Arg0: u64): bool {
L1: loc0: bool
L2: loc1: u64
B0:
0MoveLoc[0](Arg0: u64)
1StLoc[2](loc1: u64)
2CopyLoc[2](loc1: u64)
3LdU64(1)
4Lt
5BrFalse(9)
B1:
6LdFalse
7StLoc[1](loc0: bool)
8Branch(24)
B2:
9CopyLoc[2](loc1: u64)
10LdU64(10)
11Mod
12LdU64(0)
13Eq
14BrFalse(20)
B3:
15MoveLoc[2](loc1: u64)
16LdU64(10)
17Div
18StLoc[2](loc1: u64)
19Branch(9)
B4:
20MoveLoc[2](loc1: u64)
21LdU64(1)
22Eq
23StLoc[1](loc0: bool)
B5:
24MoveLoc[1](loc0: bool)
25Ret
}
 
quick_sort(Arg0: vector<u128>): vector<u128> {
L1: loc0: u64
L2: loc1: vector<u128>
L3: loc2: vector<u128>
L4: loc3: u64
L5: loc4: vector<u128>
L6: loc5: u128
L7: loc6: vector<u128>
L8: loc7: u64
L9: loc8: vector<u128>
L10: loc9: u128
B0:
0ImmBorrowLoc[0](Arg0: vector<u128>)
1VecLen(3)
2LdU64(1)
3Le
4BrFalse(7)
B1:
5MoveLoc[0](Arg0: vector<u128>)
6Ret
B2:
7ImmBorrowLoc[0](Arg0: vector<u128>)
8LdU64(0)
9VecImmBorrow(3)
10ReadRef
11StLoc[6](loc5: u128)
12LdConst[4](vector<u128>: 00)
13StLoc[5](loc4: vector<u128>)
14LdConst[4](vector<u128>: 00)
15StLoc[2](loc1: vector<u128>)
16LdConst[4](vector<u128>: 00)
17StLoc[3](loc2: vector<u128>)
18MoveLoc[0](Arg0: vector<u128>)
19StLoc[9](loc8: vector<u128>)
20MutBorrowLoc[9](loc8: vector<u128>)
21Call vector::reverse<u128>(&mut vector<u128>)
22ImmBorrowLoc[9](loc8: vector<u128>)
23VecLen(3)
24StLoc[1](loc0: u64)
25LdU64(0)
26StLoc[4](loc3: u64)
27MoveLoc[1](loc0: u64)
28StLoc[8](loc7: u64)
B3:
29CopyLoc[4](loc3: u64)
30CopyLoc[8](loc7: u64)
31Lt
32BrFalse(63)
B4:
33CopyLoc[4](loc3: u64)
34Pop
35MutBorrowLoc[9](loc8: vector<u128>)
36VecPopBack(3)
37StLoc[10](loc9: u128)
38CopyLoc[10](loc9: u128)
39CopyLoc[6](loc5: u128)
40Lt
41BrFalse(46)
B5:
42MutBorrowLoc[5](loc4: vector<u128>)
43MoveLoc[10](loc9: u128)
44VecPushBack(3)
45Branch(58)
B6:
46CopyLoc[10](loc9: u128)
47CopyLoc[6](loc5: u128)
48Eq
49BrFalse(54)
B7:
50MutBorrowLoc[2](loc1: vector<u128>)
51MoveLoc[10](loc9: u128)
52VecPushBack(3)
53Branch(58)
B8:
54MutBorrowLoc[3](loc2: vector<u128>)
55MoveLoc[10](loc9: u128)
56VecPushBack(3)
57Branch(58)
B9:
58MoveLoc[4](loc3: u64)
59LdU64(1)
60Add
61StLoc[4](loc3: u64)
62Branch(29)
B10:
63MoveLoc[9](loc8: vector<u128>)
64VecUnpack(3, 0)
65LdConst[4](vector<u128>: 00)
66StLoc[7](loc6: vector<u128>)
67MutBorrowLoc[7](loc6: vector<u128>)
68MoveLoc[5](loc4: vector<u128>)
69Call quick_sort(vector<u128>): vector<u128>
70Call vector::append<u128>(&mut vector<u128>, vector<u128>)
71MutBorrowLoc[7](loc6: vector<u128>)
72MoveLoc[2](loc1: vector<u128>)
73Call vector::append<u128>(&mut vector<u128>, vector<u128>)
74MutBorrowLoc[7](loc6: vector<u128>)
75MoveLoc[3](loc2: vector<u128>)
76Call quick_sort(vector<u128>): vector<u128>
77Call vector::append<u128>(&mut vector<u128>, vector<u128>)
78MoveLoc[7](loc6: vector<u128>)
79Ret
}
 
mul_internal(Arg0: u64, Arg1: u64): u64 * u64 {
L2: loc0: u64
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)
6CopyLoc[3](loc1: u128)
7CopyLoc[4](loc2: u128)
8Mul
9LdConst[1](u128: 1000..)
10Mod
11LdU128(0)
12Eq
13BrFalse(17)
B1:
14LdU64(0)
15StLoc[2](loc0: u64)
16Branch(19)
B2:
17LdU64(1)
18StLoc[2](loc0: u64)
B3:
19MoveLoc[2](loc0: u64)
20MoveLoc[3](loc1: u128)
21MoveLoc[4](loc2: u128)
22Mul
23LdConst[1](u128: 1000..)
24Div
25CastU64
26Ret
}
 
mul_internal_u128(Arg0: u128, Arg1: u128): u128 * u128 {
L2: loc0: u128
L3: loc1: u256
L4: loc2: u256
B0:
0MoveLoc[0](Arg0: u128)
1CastU256
2StLoc[3](loc1: u256)
3MoveLoc[1](Arg1: u128)
4CastU256
5StLoc[4](loc2: u256)
6CopyLoc[3](loc1: u256)
7CopyLoc[4](loc2: u256)
8Mul
9LdConst[2](u256: 1000..)
10Mod
11LdU256(0)
12Eq
13BrFalse(17)
B1:
14LdU128(0)
15StLoc[2](loc0: u128)
16Branch(19)
B2:
17LdU128(1)
18StLoc[2](loc0: u128)
B3:
19MoveLoc[2](loc0: u128)
20MoveLoc[3](loc1: u256)
21MoveLoc[4](loc2: u256)
22Mul
23LdConst[2](u256: 1000..)
24Div
25CastU128
26Ret
}
 
div_internal(Arg0: u64, Arg1: u64): u64 * u64 {
L2: loc0: u64
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)
6CopyLoc[3](loc1: u128)
7LdConst[1](u128: 1000..)
8Mul
9CopyLoc[4](loc2: u128)
10Mod
11LdU128(0)
12Eq
13BrFalse(17)
B1:
14LdU64(0)
15StLoc[2](loc0: u64)
16Branch(19)
B2:
17LdU64(1)
18StLoc[2](loc0: u64)
B3:
19MoveLoc[2](loc0: u64)
20MoveLoc[3](loc1: u128)
21LdConst[1](u128: 1000..)
22Mul
23MoveLoc[4](loc2: u128)
24Div
25CastU64
26Ret
}
 
div_internal_u128(Arg0: u128, Arg1: u128): u128 * u128 {
L2: loc0: u128
L3: loc1: u256
L4: loc2: u256
B0:
0MoveLoc[0](Arg0: u128)
1CastU256
2StLoc[3](loc1: u256)
3MoveLoc[1](Arg1: u128)
4CastU256
5StLoc[4](loc2: u256)
6CopyLoc[3](loc1: u256)
7LdConst[2](u256: 1000..)
8Mul
9CopyLoc[4](loc2: u256)
10Mod
11LdU256(0)
12Eq
13BrFalse(17)
B1:
14LdU128(0)
15StLoc[2](loc0: u128)
16Branch(19)
B2:
17LdU128(1)
18StLoc[2](loc0: u128)
B3:
19MoveLoc[2](loc0: u128)
20MoveLoc[3](loc1: u256)
21LdConst[2](u256: 1000..)
22Mul
23MoveLoc[4](loc2: u256)
24Div
25CastU128
26Ret
}
 
Constants [
0 => u64: 1000000000
1 => u128: 1000000000
2 => u256: 1000000000
3 => u64: 0
4 => vector<u128>: 00
]
}