utils
Module0xbe89…7732
- Move path
- 0x3492…c267::utils
- Functions
- 99 public, 0 entry
- Structs
- 0
- Friend modules
- None
utils
Bytecode259 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267.utils {
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::constants;
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::errors;
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::i128H;
use 03637b7b60978ef4389124f7683456f0050ab015a0590d52b6e6cadb342af34a::i128;
use 03637b7b60978ef4389124f7683456f0050ab015a0590d52b6e6cadb342af34a::math_u256;
use 714a63a0dba6da4f017b42d5d0fb78867f18bcde904868e51d951a5a6f5b7f57::i128 as 0i128;
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
public get_type_string<Ty0>(): String {
B0:
0Call type_name::get<Ty0>(): TypeName
1Call type_name::into_string(TypeName): String
2Call ascii::into_bytes(String): vector<u8>
3Call string::utf8(vector<u8>): String
4Ret
}
public transfer_coin<Ty0>(Arg0: Coin<Ty0>, Arg1: address) {
B0:
0ImmBorrowLoc[0](Arg0: Coin<Ty0>)
1Call coin::value<Ty0>(&Coin<Ty0>): u64
2LdU64(0)
3Gt
4BrFalse(9)
B1:
5MoveLoc[0](Arg0: Coin<Ty0>)
6MoveLoc[1](Arg1: address)
7Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
8Branch(11)
B2:
9MoveLoc[0](Arg0: Coin<Ty0>)
10Call coin::destroy_zero<Ty0>(Coin<Ty0>)
B3:
11Ret
}
public transfer_balance<Ty0>(Arg0: Balance<Ty0>, Arg1: address, Arg2: &mut TxContext) {
B0:
0ImmBorrowLoc[0](Arg0: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2LdU64(0)
3Gt
4BrFalse(11)
B1:
5MoveLoc[0](Arg0: Balance<Ty0>)
6MoveLoc[2](Arg2: &mut TxContext)
7Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
8MoveLoc[1](Arg1: address)
9Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
10Branch(15)
B2:
11MoveLoc[2](Arg2: &mut TxContext)
12Pop
13MoveLoc[0](Arg0: Balance<Ty0>)
14Call balance::destroy_zero<Ty0>(Balance<Ty0>)
B3:
15Ret
}
public timestamp_seconds(Arg0: &Clock): u64 {
B0:
0MoveLoc[0](Arg0: &Clock)
1Call clock::timestamp_ms(&Clock): u64
2LdU64(1000)
3Div
4Ret
}
public deposit_balance<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: Balance<Ty0>, Arg2: u64): Balance<Ty0> {
L3: loc0: Balance<Ty0>
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2CopyLoc[2](Arg2: u64)
3Ge
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut Balance<Ty0>)
7Pop
8Call errors::insufficient_coin_balance(): u64
9Abort
B3:
10MutBorrowLoc[1](Arg1: Balance<Ty0>)
11MoveLoc[2](Arg2: u64)
12Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
13StLoc[3](loc0: Balance<Ty0>)
14MoveLoc[0](Arg0: &mut Balance<Ty0>)
15MoveLoc[3](loc0: Balance<Ty0>)
16Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
17Pop
18MoveLoc[1](Arg1: Balance<Ty0>)
19Ret
}
public withdraw_balance<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: u64): Balance<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut Balance<Ty0>)
1FreezeRef
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3CopyLoc[1](Arg1: u64)
4Ge
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut Balance<Ty0>)
8Pop
9Call errors::insufficient_coin_balance(): u64
10Abort
B3:
11MoveLoc[0](Arg0: &mut Balance<Ty0>)
12MoveLoc[1](Arg1: u64)
13Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
14Ret
}
public u128_to_string(Arg0: u128): String {
L1: loc0: u8
L2: loc1: vector<u8>
B0:
0CopyLoc[0](Arg0: u128)
1LdU128(0)
2Eq
3BrFalse(7)
B1:
4LdConst[0](vector<u8>: "0" ..)
5Call string::utf8(vector<u8>): String
6Ret
B2:
7VecPack(24, 0)
8StLoc[2](loc1: vector<u8>)
B3:
9CopyLoc[0](Arg0: u128)
10LdU128(0)
11Gt
12BrFalse(29)
B4:
13Branch(14)
B5:
14CopyLoc[0](Arg0: u128)
15LdU128(10)
16Mod
17CastU8
18StLoc[1](loc0: u8)
19MoveLoc[0](Arg0: u128)
20LdU128(10)
21Div
22StLoc[0](Arg0: u128)
23MutBorrowLoc[2](loc1: vector<u8>)
24MoveLoc[1](loc0: u8)
25LdU8(48)
26Add
27Call vector::push_back<u8>(&mut vector<u8>, u8)
28Branch(9)
B6:
29MutBorrowLoc[2](loc1: vector<u8>)
30Call vector::reverse<u8>(&mut vector<u8>)
31MoveLoc[2](loc1: vector<u8>)
32Call string::utf8(vector<u8>): String
33Ret
}
public add_delta(Arg0: u128, Arg1: I128): u128 {
L2: loc0: u128
L3: loc1: I128
L4: loc2: u128
B0:
0MoveLoc[1](Arg1: I128)
1Call i128H::mate_to_lib(I128): I128
2StLoc[3](loc1: I128)
3CopyLoc[3](loc1: I128)
4Call i128::abs_u128(I128): u128
5StLoc[4](loc2: u128)
6MoveLoc[3](loc1: I128)
7Call i128::is_neg(I128): bool
8BrFalse(21)
B1:
9CopyLoc[0](Arg0: u128)
10CopyLoc[4](loc2: u128)
11Ge
12BrFalse(14)
B2:
13Branch(16)
B3:
14Call errors::insufficient_liquidity(): u64
15Abort
B4:
16MoveLoc[0](Arg0: u128)
17MoveLoc[4](loc2: u128)
18Sub
19StLoc[2](loc0: u128)
20Branch(34)
B5:
21CopyLoc[4](loc2: u128)
22Call constants::max_u128(): u128
23CopyLoc[0](Arg0: u128)
24Sub
25Lt
26BrFalse(28)
B6:
27Branch(30)
B7:
28Call errors::insufficient_liquidity(): u64
29Abort
B8:
30MoveLoc[0](Arg0: u128)
31MoveLoc[4](loc2: u128)
32Add
33StLoc[2](loc0: u128)
B9:
34MoveLoc[2](loc0: u128)
35Ret
}
public overflow_add(Arg0: u256, Arg1: u256): u256 {
L2: loc0: u256
B0:
0CopyLoc[0](Arg0: u256)
1CopyLoc[1](Arg1: u256)
2Call math_u256::add_check(u256, u256): bool
3Not
4BrFalse(14)
B1:
5MoveLoc[1](Arg1: u256)
6Call constants::max_u256(): u256
7MoveLoc[0](Arg0: u256)
8Sub
9Sub
10LdU256(1)
11Sub
12StLoc[2](loc0: u256)
13Branch(18)
B2:
14MoveLoc[0](Arg0: u256)
15MoveLoc[1](Arg1: u256)
16Add
17StLoc[2](loc0: u256)
B3:
18MoveLoc[2](loc0: u256)
19Ret
}
Constants [
0 => vector<u8>: "0" // interpreted as UTF8 string
]
}