float
Module0x77d9…2f3a
- Move path
- 0x1798…4884::float
- Functions
- 3028 public, 0 entry
- Structs
- 1
- Friend modules
- None
Bytecode439 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module 1798f84ee72176114ddbf5525a6d964c5f8ea1b3738d08d50d0d3de4cf584884.float {
struct Float has copy, drop, store {
value: u256
}
err_divided_by_zero() {
B0:
0LdConst[0](u64: 0)
1Abort
}
err_subtrahend_too_large() {
B0:
0LdConst[1](u64: 1)
1Abort
}
public from(Arg0: u64): Float {
B0:
0MoveLoc[0](Arg0: u64)
1CastU256
2LdConst[2](u256: 1000..)
3Mul
4Pack[0](Float)
5Ret
}
public from_percent(Arg0: u8): Float {
B0:
0MoveLoc[0](Arg0: u8)
1CastU256
2LdConst[2](u256: 1000..)
3Mul
4LdU256(100)
5Div
6Pack[0](Float)
7Ret
}
public from_percent_u64(Arg0: u64): Float {
B0:
0MoveLoc[0](Arg0: u64)
1CastU256
2LdConst[2](u256: 1000..)
3Mul
4LdU256(100)
5Div
6Pack[0](Float)
7Ret
}
public from_bps(Arg0: u64): Float {
B0:
0MoveLoc[0](Arg0: u64)
1CastU256
2LdConst[2](u256: 1000..)
3Mul
4LdU256(10000)
5Div
6Pack[0](Float)
7Ret
}
public from_fraction(Arg0: u64, Arg1: u64): Float {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Eq
3BrFalse(5)
B1:
4Call err_divided_by_zero()
B2:
5MoveLoc[0](Arg0: u64)
6CastU256
7LdConst[2](u256: 1000..)
8Mul
9MoveLoc[1](Arg1: u64)
10CastU256
11Div
12Pack[0](Float)
13Ret
}
public from_scaled_val(Arg0: u256): Float {
B0:
0MoveLoc[0](Arg0: u256)
1Pack[0](Float)
2Ret
}
public to_scaled_val(Arg0: Float): u256 {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3Ret
}
public add(Arg0: Float, Arg1: Float): Float {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Add
7Pack[0](Float)
8Ret
}
public sub(Arg0: Float, Arg1: Float): Float {
B0:
0ImmBorrowLoc[1](Arg1: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[0](Arg0: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Gt
7BrFalse(9)
B1:
8Call err_subtrahend_too_large()
B2:
9ImmBorrowLoc[0](Arg0: Float)
10ImmBorrowField[0](Float.value: u256)
11ReadRef
12ImmBorrowLoc[1](Arg1: Float)
13ImmBorrowField[0](Float.value: u256)
14ReadRef
15Sub
16Pack[0](Float)
17Ret
}
public saturating_sub(Arg0: Float, Arg1: Float): Float {
L2: loc0: Float
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Lt
7BrFalse(12)
B1:
8LdU256(0)
9Pack[0](Float)
10StLoc[2](loc0: Float)
11Branch(21)
B2:
12ImmBorrowLoc[0](Arg0: Float)
13ImmBorrowField[0](Float.value: u256)
14ReadRef
15ImmBorrowLoc[1](Arg1: Float)
16ImmBorrowField[0](Float.value: u256)
17ReadRef
18Sub
19Pack[0](Float)
20StLoc[2](loc0: Float)
B3:
21MoveLoc[2](loc0: Float)
22Ret
}
public mul(Arg0: Float, Arg1: Float): Float {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Mul
7LdConst[2](u256: 1000..)
8Div
9Pack[0](Float)
10Ret
}
public div(Arg0: Float, Arg1: Float): Float {
B0:
0CopyLoc[1](Arg1: Float)
1Call to_scaled_val(Float): u256
2LdU256(0)
3Eq
4BrFalse(6)
B1:
5Call err_divided_by_zero()
B2:
6ImmBorrowLoc[0](Arg0: Float)
7ImmBorrowField[0](Float.value: u256)
8ReadRef
9LdConst[2](u256: 1000..)
10Mul
11ImmBorrowLoc[1](Arg1: Float)
12ImmBorrowField[0](Float.value: u256)
13ReadRef
14Div
15Pack[0](Float)
16Ret
}
public add_u64(Arg0: Float, Arg1: u64): Float {
B0:
0MoveLoc[0](Arg0: Float)
1MoveLoc[1](Arg1: u64)
2Call from(u64): Float
3Call add(Float, Float): Float
4Ret
}
public sub_u64(Arg0: Float, Arg1: u64): Float {
B0:
0MoveLoc[0](Arg0: Float)
1MoveLoc[1](Arg1: u64)
2Call from(u64): Float
3Call add(Float, Float): Float
4Ret
}
public saturating_sub_u64(Arg0: Float, Arg1: u64): Float {
B0:
0MoveLoc[0](Arg0: Float)
1MoveLoc[1](Arg1: u64)
2Call from(u64): Float
3Call saturating_sub(Float, Float): Float
4Ret
}
public mul_u64(Arg0: Float, Arg1: u64): Float {
B0:
0MoveLoc[0](Arg0: Float)
1MoveLoc[1](Arg1: u64)
2Call from(u64): Float
3Call mul(Float, Float): Float
4Ret
}
public div_u64(Arg0: Float, Arg1: u64): Float {
B0:
0MoveLoc[0](Arg0: Float)
1MoveLoc[1](Arg1: u64)
2Call from(u64): Float
3Call div(Float, Float): Float
4Ret
}
public pow(Arg0: Float, Arg1: u64): Float {
L2: loc0: Float
L3: loc1: Float
B0:
0MoveLoc[0](Arg0: Float)
1StLoc[2](loc0: Float)
2LdU64(1)
3Call from(u64): Float
4StLoc[3](loc1: Float)
B1:
5CopyLoc[1](Arg1: u64)
6LdU64(0)
7Gt
8BrFalse(29)
B2:
9Branch(10)
B3:
10CopyLoc[1](Arg1: u64)
11LdU64(2)
12Mod
13LdU64(1)
14Eq
15BrFalse(20)
B4:
16MoveLoc[3](loc1: Float)
17CopyLoc[2](loc0: Float)
18Call mul(Float, Float): Float
19StLoc[3](loc1: Float)
B5:
20CopyLoc[2](loc0: Float)
21MoveLoc[2](loc0: Float)
22Call mul(Float, Float): Float
23StLoc[2](loc0: Float)
24MoveLoc[1](Arg1: u64)
25LdU64(2)
26Div
27StLoc[1](Arg1: u64)
28Branch(5)
B6:
29MoveLoc[3](loc1: Float)
30Ret
}
public floor(Arg0: Float): u64 {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3LdConst[2](u256: 1000..)
4Div
5CastU64
6Ret
}
public ceil(Arg0: Float): u64 {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3LdConst[2](u256: 1000..)
4Add
5LdU256(1)
6Sub
7LdConst[2](u256: 1000..)
8Div
9CastU64
10Ret
}
public eq(Arg0: Float, Arg1: Float): bool {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Eq
7Ret
}
public ge(Arg0: Float, Arg1: Float): bool {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Ge
7Ret
}
public gt(Arg0: Float, Arg1: Float): bool {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Gt
7Ret
}
public le(Arg0: Float, Arg1: Float): bool {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Le
7Ret
}
public lt(Arg0: Float, Arg1: Float): bool {
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Lt
7Ret
}
public min(Arg0: Float, Arg1: Float): Float {
L2: loc0: Float
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Lt
7BrFalse(11)
B1:
8MoveLoc[0](Arg0: Float)
9StLoc[2](loc0: Float)
10Branch(13)
B2:
11MoveLoc[1](Arg1: Float)
12StLoc[2](loc0: Float)
B3:
13MoveLoc[2](loc0: Float)
14Ret
}
public max(Arg0: Float, Arg1: Float): Float {
L2: loc0: Float
B0:
0ImmBorrowLoc[0](Arg0: Float)
1ImmBorrowField[0](Float.value: u256)
2ReadRef
3ImmBorrowLoc[1](Arg1: Float)
4ImmBorrowField[0](Float.value: u256)
5ReadRef
6Gt
7BrFalse(11)
B1:
8MoveLoc[0](Arg0: Float)
9StLoc[2](loc0: Float)
10Branch(13)
B2:
11MoveLoc[1](Arg1: Float)
12StLoc[2](loc0: Float)
B3:
13MoveLoc[2](loc0: Float)
14Ret
}
public wad(): u256 {
B0:
0LdConst[2](u256: 1000..)
1Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u256: 1000000000000000000
]
}