lb_position
Module0x01ac…6d5c
- Move path
- 0x5a5c…83ac::lb_position
- Functions
- 4611 public, 0 entry
- Structs
- 6
- Friend modules
- lb_pair
lb_position
Bytecode1736 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac.lb_position {
use 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac::constants;
use 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac::q64x64;
use 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac::safe_math;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::display;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::package;
use 0000000000000000000000000000000000000000000000000000000000000002::table;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct LBBinPosition has copy, drop, store {
bin_id: u32,
amount: u128,
fee_growth_inside_last_x: u128,
fee_growth_inside_last_y: u128,
reward_growth_inside_last: vector<u128>
}
struct PackedBins has drop, store {
active_bins_bitmap: u8,
bin_data: vector<LBBinPosition>
}
struct LBPositionManager has store {
positions: Table<ID, LBPositionInfo>
}
struct LBPositionInfo has store {
position_id: ID,
pair_id: ID,
bins: Table<u32, PackedBins>,
toggle: u16
}
struct LBPosition has store, key {
id: UID,
pair_id: ID,
my_id: ID,
saved_fees_x: u128,
saved_fees_y: u128,
saved_rewards: vector<u128>,
coin_type_a: TypeName,
coin_type_b: TypeName,
lock_until: u64,
total_bins: u64
}
struct LB_POSITION has drop {
dummy_field: bool
}
init(Arg0: LB_POSITION, Arg1: &mut TxContext) {
L2: loc0: Display<LBPosition>
L3: loc1: vector<String>
L4: loc2: &mut vector<String>
L5: loc3: Publisher
L6: loc4: vector<String>
L7: loc5: &mut vector<String>
B0:
0VecPack(50, 0)
1StLoc[3](loc1: vector<String>)
2MutBorrowLoc[3](loc1: vector<String>)
3StLoc[4](loc2: &mut vector<String>)
4CopyLoc[4](loc2: &mut vector<String>)
5LdConst[7](vector<u8>: "nam..)
6Call string::utf8(vector<u8>): String
7VecPushBack(50)
8CopyLoc[4](loc2: &mut vector<String>)
9LdConst[8](vector<u8>: "coi..)
10Call string::utf8(vector<u8>): String
11VecPushBack(50)
12CopyLoc[4](loc2: &mut vector<String>)
13LdConst[9](vector<u8>: "coi..)
14Call string::utf8(vector<u8>): String
15VecPushBack(50)
16CopyLoc[4](loc2: &mut vector<String>)
17LdConst[10](vector<u8>: "lin..)
18Call string::utf8(vector<u8>): String
19VecPushBack(50)
20CopyLoc[4](loc2: &mut vector<String>)
21LdConst[11](vector<u8>: "ima..)
22Call string::utf8(vector<u8>): String
23VecPushBack(50)
24CopyLoc[4](loc2: &mut vector<String>)
25LdConst[12](vector<u8>: "des..)
26Call string::utf8(vector<u8>): String
27VecPushBack(50)
28CopyLoc[4](loc2: &mut vector<String>)
29LdConst[13](vector<u8>: "pro..)
30Call string::utf8(vector<u8>): String
31VecPushBack(50)
32MoveLoc[4](loc2: &mut vector<String>)
33LdConst[14](vector<u8>: "cre..)
34Call string::utf8(vector<u8>): String
35VecPushBack(50)
36VecPack(50, 0)
37StLoc[6](loc4: vector<String>)
38MutBorrowLoc[6](loc4: vector<String>)
39StLoc[7](loc5: &mut vector<String>)
40CopyLoc[7](loc5: &mut vector<String>)
41LdConst[15](vector<u8>: "Fer..)
42Call string::utf8(vector<u8>): String
43VecPushBack(50)
44CopyLoc[7](loc5: &mut vector<String>)
45LdConst[16](vector<u8>: "{co..)
46Call string::utf8(vector<u8>): String
47VecPushBack(50)
48CopyLoc[7](loc5: &mut vector<String>)
49LdConst[17](vector<u8>: "{co..)
50Call string::utf8(vector<u8>): String
51VecPushBack(50)
52CopyLoc[7](loc5: &mut vector<String>)
53LdConst[18](vector<u8>: "htt..)
54Call string::utf8(vector<u8>): String
55VecPushBack(50)
56CopyLoc[7](loc5: &mut vector<String>)
57LdConst[19](vector<u8>: "htt..)
58Call string::utf8(vector<u8>): String
59VecPushBack(50)
60CopyLoc[7](loc5: &mut vector<String>)
61LdConst[20](vector<u8>: "Pro..)
62Call string::utf8(vector<u8>): String
63VecPushBack(50)
64CopyLoc[7](loc5: &mut vector<String>)
65LdConst[21](vector<u8>: "htt..)
66Call string::utf8(vector<u8>): String
67VecPushBack(50)
68MoveLoc[7](loc5: &mut vector<String>)
69LdConst[22](vector<u8>: "Fer..)
70Call string::utf8(vector<u8>): String
71VecPushBack(50)
72MoveLoc[0](Arg0: LB_POSITION)
73CopyLoc[1](Arg1: &mut TxContext)
74Call package::claim<LB_POSITION>(LB_POSITION, &mut TxContext): Publisher
75StLoc[5](loc3: Publisher)
76ImmBorrowLoc[5](loc3: Publisher)
77MoveLoc[3](loc1: vector<String>)
78MoveLoc[6](loc4: vector<String>)
79CopyLoc[1](Arg1: &mut TxContext)
80Call display::new_with_fields<LBPosition>(&Publisher, vector<String>, vector<String>, &mut TxContext): Display<LBPosition>
81StLoc[2](loc0: Display<LBPosition>)
82MutBorrowLoc[2](loc0: Display<LBPosition>)
83Call display::update_version<LBPosition>(&mut Display<LBPosition>)
84MoveLoc[5](loc3: Publisher)
85CopyLoc[1](Arg1: &mut TxContext)
86FreezeRef
87Call tx_context::sender(&TxContext): address
88Call transfer::public_transfer<Publisher>(Publisher, address)
89MoveLoc[2](loc0: Display<LBPosition>)
90MoveLoc[1](Arg1: &mut TxContext)
91FreezeRef
92Call tx_context::sender(&TxContext): address
93Call transfer::public_transfer<Display<LBPosition>>(Display<LBPosition>, address)
94Ret
}
public(friend) create_empty_pack(): PackedBins {
B0:
0LdU8(0)
1VecPack(31, 0)
2Pack[1](PackedBins)
3Ret
}
public(friend) get_active_bins_bitmap(Arg0: &PackedBins): u8 {
B0:
0MoveLoc[0](Arg0: &PackedBins)
1ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
2ReadRef
3Ret
}
public(friend) borrow_position_bin_mut_from_pack(Arg0: &mut PackedBins, Arg1: u64): &mut LBBinPosition {
B0:
0MoveLoc[0](Arg0: &mut PackedBins)
1MutBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
2MoveLoc[1](Arg1: u64)
3VecMutBorrow(31)
4Ret
}
public borrow_position_bin_from_pack(Arg0: &PackedBins, Arg1: u64): &LBBinPosition {
B0:
0MoveLoc[0](Arg0: &PackedBins)
1ImmBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
2MoveLoc[1](Arg1: u64)
3VecImmBorrow(31)
4Ret
}
public(friend) borrow_position_bins_mut(Arg0: &mut LBPositionInfo): &mut Table<u32, PackedBins> {
B0:
0MoveLoc[0](Arg0: &mut LBPositionInfo)
1MutBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
2Ret
}
public borrow_position_bins(Arg0: &LBPositionInfo): &Table<u32, PackedBins> {
B0:
0MoveLoc[0](Arg0: &LBPositionInfo)
1ImmBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
2Ret
}
public(friend) resolve_bin_group_index(Arg0: u32): u32 * u8 {
L1: loc0: u32
L2: loc1: u8
B0:
0CopyLoc[0](Arg0: u32)
1LdConst[6](u8: 3)
2Shr
3StLoc[1](loc0: u32)
4MoveLoc[0](Arg0: u32)
5LdConst[5](u32: 7)
6BitAnd
7CastU8
8StLoc[2](loc1: u8)
9MoveLoc[1](loc0: u32)
10MoveLoc[2](loc1: u8)
11Ret
}
public(friend) count_active_bins(Arg0: u8): u8 {
L1: loc0: u8
L2: loc1: u8
L3: loc2: u8
B0:
0MoveLoc[0](Arg0: u8)
1StLoc[3](loc2: u8)
2CopyLoc[3](loc2: u8)
3MoveLoc[3](loc2: u8)
4LdU8(1)
5Shr
6LdU8(85)
7BitAnd
8Sub
9StLoc[3](loc2: u8)
10CopyLoc[3](loc2: u8)
11LdU8(51)
12BitAnd
13StLoc[2](loc1: u8)
14MoveLoc[3](loc2: u8)
15LdU8(2)
16Shr
17LdU8(51)
18BitAnd
19StLoc[1](loc0: u8)
20MoveLoc[2](loc1: u8)
21MoveLoc[1](loc0: u8)
22Add
23StLoc[3](loc2: u8)
24CopyLoc[3](loc2: u8)
25LdU8(15)
26BitAnd
27MoveLoc[3](loc2: u8)
28LdU8(4)
29Shr
30Add
31Ret
}
public(friend) count_active_bins_before_position(Arg0: u8, Arg1: u8): u8 {
L2: loc0: u8
B0:
0CopyLoc[1](Arg1: u8)
1LdU8(0)
2Eq
3BrFalse(6)
B1:
4LdU8(0)
5Ret
B2:
6LdU8(1)
7MoveLoc[1](Arg1: u8)
8Shl
9LdU8(1)
10Sub
11StLoc[2](loc0: u8)
12MoveLoc[0](Arg0: u8)
13MoveLoc[2](loc0: u8)
14BitAnd
15Call count_active_bins(u8): u8
16Ret
}
public(friend) is_bin_active_in_bitmap(Arg0: u8, Arg1: u8): bool {
B0:
0MoveLoc[0](Arg0: u8)
1MoveLoc[1](Arg1: u8)
2Shr
3LdU8(1)
4BitAnd
5LdU8(1)
6Eq
7Ret
}
set_bit_in_bitmap(Arg0: u8, Arg1: u8): u8 {
B0:
0MoveLoc[0](Arg0: u8)
1LdU8(1)
2MoveLoc[1](Arg1: u8)
3Shl
4BitOr
5Ret
}
clear_bit_in_bitmap(Arg0: u8, Arg1: u8): u8 {
B0:
0MoveLoc[0](Arg0: u8)
1LdU8(255)
2LdU8(1)
3MoveLoc[1](Arg1: u8)
4Shl
5Sub
6BitAnd
7Ret
}
public(friend) borrow_bin_mut(Arg0: &mut LBPositionManager, Arg1: &LBPosition, Arg2: u32): &mut LBBinPosition {
L3: loc0: &mut PackedBins
L4: loc1: u32
L5: loc2: &mut LBPositionInfo
L6: loc3: u8
L7: loc4: u8
B0:
0MoveLoc[0](Arg0: &mut LBPositionManager)
1MutBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
2MoveLoc[1](Arg1: &LBPosition)
3ImmBorrowField[4](LBPosition.my_id: ID)
4ReadRef
5Call table::borrow_mut<ID, LBPositionInfo>(&mut Table<ID, LBPositionInfo>, ID): &mut LBPositionInfo
6StLoc[5](loc2: &mut LBPositionInfo)
7MoveLoc[2](Arg2: u32)
8Call resolve_bin_group_index(u32): u32 * u8
9StLoc[6](loc3: u8)
10StLoc[4](loc1: u32)
11MoveLoc[5](loc2: &mut LBPositionInfo)
12MutBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
13MoveLoc[4](loc1: u32)
14Call table::borrow_mut<u32, PackedBins>(&mut Table<u32, PackedBins>, u32): &mut PackedBins
15StLoc[3](loc0: &mut PackedBins)
16CopyLoc[3](loc0: &mut PackedBins)
17ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
18ReadRef
19CopyLoc[6](loc3: u8)
20Call is_bin_active_in_bitmap(u8, u8): bool
21BrFalse(23)
B1:
22Branch(27)
B2:
23MoveLoc[3](loc0: &mut PackedBins)
24Pop
25LdConst[0](u64: 201)
26Abort
B3:
27CopyLoc[3](loc0: &mut PackedBins)
28ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
29ReadRef
30MoveLoc[6](loc3: u8)
31Call count_active_bins_before_position(u8, u8): u8
32StLoc[7](loc4: u8)
33MoveLoc[3](loc0: &mut PackedBins)
34MutBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
35MoveLoc[7](loc4: u8)
36CastU64
37VecMutBorrow(31)
38Ret
}
public(friend) borrow_bin(Arg0: &LBPositionManager, Arg1: &LBPosition, Arg2: u32): &LBBinPosition {
L3: loc0: &PackedBins
L4: loc1: u32
L5: loc2: &LBPositionInfo
L6: loc3: u8
L7: loc4: u8
B0:
0MoveLoc[0](Arg0: &LBPositionManager)
1ImmBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
2MoveLoc[1](Arg1: &LBPosition)
3ImmBorrowField[4](LBPosition.my_id: ID)
4ReadRef
5Call table::borrow<ID, LBPositionInfo>(&Table<ID, LBPositionInfo>, ID): &LBPositionInfo
6StLoc[5](loc2: &LBPositionInfo)
7MoveLoc[2](Arg2: u32)
8Call resolve_bin_group_index(u32): u32 * u8
9StLoc[6](loc3: u8)
10StLoc[4](loc1: u32)
11MoveLoc[5](loc2: &LBPositionInfo)
12ImmBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
13MoveLoc[4](loc1: u32)
14Call table::borrow<u32, PackedBins>(&Table<u32, PackedBins>, u32): &PackedBins
15StLoc[3](loc0: &PackedBins)
16CopyLoc[3](loc0: &PackedBins)
17ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
18ReadRef
19CopyLoc[6](loc3: u8)
20Call is_bin_active_in_bitmap(u8, u8): bool
21BrFalse(23)
B1:
22Branch(27)
B2:
23MoveLoc[3](loc0: &PackedBins)
24Pop
25LdConst[0](u64: 201)
26Abort
B3:
27CopyLoc[3](loc0: &PackedBins)
28ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
29ReadRef
30MoveLoc[6](loc3: u8)
31Call count_active_bins_before_position(u8, u8): u8
32StLoc[7](loc4: u8)
33MoveLoc[3](loc0: &PackedBins)
34ImmBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
35MoveLoc[7](loc4: u8)
36CastU64
37VecImmBorrow(31)
38Ret
}
public(friend) new(Arg0: &mut TxContext): LBPositionManager {
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call table::new<ID, LBPositionInfo>(&mut TxContext): Table<ID, LBPositionInfo>
2Pack[2](LBPositionManager)
3Ret
}
public pair_id(Arg0: &LBPosition): ID {
B0:
0MoveLoc[0](Arg0: &LBPosition)
1ImmBorrowField[5](LBPosition.pair_id: ID)
2ReadRef
3Ret
}
public(friend) open_position<Ty0, Ty1>(Arg0: &mut LBPositionManager, Arg1: ID, Arg2: &mut TxContext): LBPosition {
L3: loc0: UID
L4: loc1: ID
L5: loc2: ID
L6: loc3: Table<u32, PackedBins>
L7: loc4: ID
L8: loc5: ID
L9: loc6: TypeName
L10: loc7: TypeName
L11: loc8: vector<u128>
L12: loc9: ID
L13: loc10: LBPosition
L14: loc11: UID
L15: loc12: ID
L16: loc13: LBPositionInfo
B0:
0CopyLoc[2](Arg2: &mut TxContext)
1Call object::new(&mut TxContext): UID
2StLoc[14](loc11: UID)
3ImmBorrowLoc[14](loc11: UID)
4Call object::uid_to_inner(&UID): ID
5StLoc[12](loc9: ID)
6MoveLoc[14](loc11: UID)
7StLoc[3](loc0: UID)
8CopyLoc[1](Arg1: ID)
9StLoc[7](loc4: ID)
10MoveLoc[12](loc9: ID)
11StLoc[8](loc5: ID)
12Call type_name::get<Ty0>(): TypeName
13StLoc[9](loc6: TypeName)
14Call type_name::get<Ty1>(): TypeName
15StLoc[10](loc7: TypeName)
16VecPack(39, 0)
17StLoc[11](loc8: vector<u128>)
18MoveLoc[3](loc0: UID)
19MoveLoc[7](loc4: ID)
20MoveLoc[8](loc5: ID)
21LdU128(0)
22LdU128(0)
23MoveLoc[11](loc8: vector<u128>)
24MoveLoc[9](loc6: TypeName)
25MoveLoc[10](loc7: TypeName)
26LdU64(0)
27LdU64(0)
28Pack[4](LBPosition)
29StLoc[13](loc10: LBPosition)
30ImmBorrowLoc[13](loc10: LBPosition)
31Call object::id<LBPosition>(&LBPosition): ID
32StLoc[15](loc12: ID)
33MoveLoc[1](Arg1: ID)
34StLoc[4](loc1: ID)
35CopyLoc[15](loc12: ID)
36StLoc[5](loc2: ID)
37MoveLoc[2](Arg2: &mut TxContext)
38Call table::new<u32, PackedBins>(&mut TxContext): Table<u32, PackedBins>
39StLoc[6](loc3: Table<u32, PackedBins>)
40MoveLoc[5](loc2: ID)
41MoveLoc[4](loc1: ID)
42MoveLoc[6](loc3: Table<u32, PackedBins>)
43LdU16(0)
44Pack[3](LBPositionInfo)
45StLoc[16](loc13: LBPositionInfo)
46MoveLoc[0](Arg0: &mut LBPositionManager)
47MutBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
48MoveLoc[15](loc12: ID)
49MoveLoc[16](loc13: LBPositionInfo)
50Call table::add<ID, LBPositionInfo>(&mut Table<ID, LBPositionInfo>, ID, LBPositionInfo)
51MoveLoc[13](loc10: LBPosition)
52Ret
}
public(friend) increase_bin_liquidity(Arg0: &mut LBBinPosition, Arg1: u128) {
B0:
0CopyLoc[0](Arg0: &mut LBBinPosition)
1ImmBorrowField[6](LBBinPosition.amount: u128)
2ReadRef
3MoveLoc[1](Arg1: u128)
4Call safe_math::add_u128(u128, u128): u128
5MoveLoc[0](Arg0: &mut LBBinPosition)
6MutBorrowField[6](LBBinPosition.amount: u128)
7WriteRef
8Ret
}
public(friend) decrease_bin_liquidity(Arg0: &mut LBBinPosition, Arg1: u128) {
B0:
0CopyLoc[0](Arg0: &mut LBBinPosition)
1ImmBorrowField[6](LBBinPosition.amount: u128)
2ReadRef
3CopyLoc[1](Arg1: u128)
4Ge
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut LBBinPosition)
8Pop
9LdConst[4](u64: 206)
10Abort
B3:
11CopyLoc[0](Arg0: &mut LBBinPosition)
12ImmBorrowField[6](LBBinPosition.amount: u128)
13ReadRef
14MoveLoc[1](Arg1: u128)
15Call safe_math::sub_u128(u128, u128): u128
16MoveLoc[0](Arg0: &mut LBBinPosition)
17MutBorrowField[6](LBBinPosition.amount: u128)
18WriteRef
19Ret
}
public(friend) settle_position_fees(Arg0: &mut LBPosition, Arg1: &mut LBBinPosition, Arg2: u128, Arg3: u128) {
L4: loc0: u128
L5: loc1: u128
B0:
0CopyLoc[1](Arg1: &mut LBBinPosition)
1ImmBorrowField[6](LBBinPosition.amount: u128)
2ReadRef
3LdU128(0)
4Eq
5BrFalse(17)
B1:
6MoveLoc[0](Arg0: &mut LBPosition)
7Pop
8MoveLoc[2](Arg2: u128)
9CopyLoc[1](Arg1: &mut LBBinPosition)
10MutBorrowField[7](LBBinPosition.fee_growth_inside_last_x: u128)
11WriteRef
12MoveLoc[3](Arg3: u128)
13MoveLoc[1](Arg1: &mut LBBinPosition)
14MutBorrowField[8](LBBinPosition.fee_growth_inside_last_y: u128)
15WriteRef
16Ret
B2:
17CopyLoc[1](Arg1: &mut LBBinPosition)
18ImmBorrowField[6](LBBinPosition.amount: u128)
19ReadRef
20CopyLoc[2](Arg2: u128)
21CopyLoc[1](Arg1: &mut LBBinPosition)
22ImmBorrowField[7](LBBinPosition.fee_growth_inside_last_x: u128)
23ReadRef
24Call safe_math::sub_u128(u128, u128): u128
25Mul
26StLoc[4](loc0: u128)
27CopyLoc[1](Arg1: &mut LBBinPosition)
28ImmBorrowField[6](LBBinPosition.amount: u128)
29ReadRef
30CopyLoc[3](Arg3: u128)
31CopyLoc[1](Arg1: &mut LBBinPosition)
32ImmBorrowField[8](LBBinPosition.fee_growth_inside_last_y: u128)
33ReadRef
34Call safe_math::sub_u128(u128, u128): u128
35Mul
36StLoc[5](loc1: u128)
37CopyLoc[0](Arg0: &mut LBPosition)
38ImmBorrowField[9](LBPosition.saved_fees_x: u128)
39ReadRef
40MoveLoc[4](loc0: u128)
41Call safe_math::add_u128(u128, u128): u128
42CopyLoc[0](Arg0: &mut LBPosition)
43MutBorrowField[9](LBPosition.saved_fees_x: u128)
44WriteRef
45CopyLoc[0](Arg0: &mut LBPosition)
46ImmBorrowField[10](LBPosition.saved_fees_y: u128)
47ReadRef
48MoveLoc[5](loc1: u128)
49Call safe_math::add_u128(u128, u128): u128
50MoveLoc[0](Arg0: &mut LBPosition)
51MutBorrowField[10](LBPosition.saved_fees_y: u128)
52WriteRef
53MoveLoc[2](Arg2: u128)
54CopyLoc[1](Arg1: &mut LBBinPosition)
55MutBorrowField[7](LBBinPosition.fee_growth_inside_last_x: u128)
56WriteRef
57MoveLoc[3](Arg3: u128)
58MoveLoc[1](Arg1: &mut LBBinPosition)
59MutBorrowField[8](LBBinPosition.fee_growth_inside_last_y: u128)
60WriteRef
61Ret
}
public simulate_settle_position_rewards(Arg0: &LBBinPosition, Arg1: vector<u128>): vector<u128> {
L2: loc0: u128
L3: loc1: u128
L4: loc2: u64
L5: loc3: u128
L6: loc4: u128
L7: loc5: vector<u128>
B0:
0VecPack(39, 0)
1StLoc[7](loc5: vector<u128>)
2CopyLoc[0](Arg0: &LBBinPosition)
3ImmBorrowField[6](LBBinPosition.amount: u128)
4ReadRef
5LdU128(0)
6Eq
7BrFalse(12)
B1:
8MoveLoc[0](Arg0: &LBBinPosition)
9Pop
10MoveLoc[7](loc5: vector<u128>)
11Ret
B2:
12LdU64(0)
13StLoc[4](loc2: u64)
B3:
14CopyLoc[4](loc2: u64)
15ImmBorrowLoc[1](Arg1: vector<u128>)
16VecLen(39)
17Lt
18BrFalse(66)
B4:
19Branch(20)
B5:
20ImmBorrowLoc[1](Arg1: vector<u128>)
21CopyLoc[4](loc2: u64)
22VecImmBorrow(39)
23ReadRef
24StLoc[3](loc1: u128)
25CopyLoc[4](loc2: u64)
26CopyLoc[0](Arg0: &LBBinPosition)
27ImmBorrowField[11](LBBinPosition.reward_growth_inside_last: vector<u128>)
28VecLen(39)
29Lt
30BrFalse(38)
B6:
31CopyLoc[0](Arg0: &LBBinPosition)
32ImmBorrowField[11](LBBinPosition.reward_growth_inside_last: vector<u128>)
33CopyLoc[4](loc2: u64)
34VecImmBorrow(39)
35ReadRef
36StLoc[2](loc0: u128)
37Branch(40)
B7:
38LdU128(0)
39StLoc[2](loc0: u128)
B8:
40MoveLoc[2](loc0: u128)
41StLoc[5](loc3: u128)
42CopyLoc[3](loc1: u128)
43CopyLoc[5](loc3: u128)
44Gt
45BrFalse(58)
B9:
46CopyLoc[0](Arg0: &LBBinPosition)
47ImmBorrowField[6](LBBinPosition.amount: u128)
48ReadRef
49MoveLoc[3](loc1: u128)
50MoveLoc[5](loc3: u128)
51Sub
52Mul
53StLoc[6](loc4: u128)
54MutBorrowLoc[7](loc5: vector<u128>)
55MoveLoc[6](loc4: u128)
56VecPushBack(39)
57Branch(61)
B10:
58MutBorrowLoc[7](loc5: vector<u128>)
59LdU128(0)
60VecPushBack(39)
B11:
61MoveLoc[4](loc2: u64)
62LdU64(1)
63Add
64StLoc[4](loc2: u64)
65Branch(14)
B12:
66MoveLoc[0](Arg0: &LBBinPosition)
67Pop
68MoveLoc[7](loc5: vector<u128>)
69Ret
}
public(friend) settle_position_rewards(Arg0: &mut LBPosition, Arg1: &mut LBBinPosition, Arg2: vector<u128>) {
L3: loc0: u128
L4: loc1: u128
L5: loc2: u64
L6: loc3: u128
L7: loc4: u128
B0:
0CopyLoc[1](Arg1: &mut LBBinPosition)
1ImmBorrowField[6](LBBinPosition.amount: u128)
2ReadRef
3LdU128(0)
4Eq
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &mut LBPosition)
7Pop
8MoveLoc[2](Arg2: vector<u128>)
9MoveLoc[1](Arg1: &mut LBBinPosition)
10MutBorrowField[11](LBBinPosition.reward_growth_inside_last: vector<u128>)
11WriteRef
12Ret
B2:
13LdU64(0)
14StLoc[5](loc2: u64)
B3:
15CopyLoc[5](loc2: u64)
16ImmBorrowLoc[2](Arg2: vector<u128>)
17VecLen(39)
18Lt
19BrFalse(88)
B4:
20Branch(21)
B5:
21ImmBorrowLoc[2](Arg2: vector<u128>)
22CopyLoc[5](loc2: u64)
23VecImmBorrow(39)
24ReadRef
25StLoc[4](loc1: u128)
26CopyLoc[5](loc2: u64)
27CopyLoc[1](Arg1: &mut LBBinPosition)
28ImmBorrowField[11](LBBinPosition.reward_growth_inside_last: vector<u128>)
29VecLen(39)
30Lt
31BrFalse(39)
B6:
32CopyLoc[1](Arg1: &mut LBBinPosition)
33ImmBorrowField[11](LBBinPosition.reward_growth_inside_last: vector<u128>)
34CopyLoc[5](loc2: u64)
35VecImmBorrow(39)
36ReadRef
37StLoc[3](loc0: u128)
38Branch(41)
B7:
39LdU128(0)
40StLoc[3](loc0: u128)
B8:
41MoveLoc[3](loc0: u128)
42StLoc[6](loc3: u128)
43CopyLoc[4](loc1: u128)
44CopyLoc[6](loc3: u128)
45Gt
46BrFalse(83)
B9:
47CopyLoc[1](Arg1: &mut LBBinPosition)
48ImmBorrowField[6](LBBinPosition.amount: u128)
49ReadRef
50MoveLoc[4](loc1: u128)
51MoveLoc[6](loc3: u128)
52Sub
53Mul
54StLoc[7](loc4: u128)
55CopyLoc[7](loc4: u128)
56LdU128(0)
57Gt
58BrFalse(83)
B10:
59CopyLoc[0](Arg0: &mut LBPosition)
60ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
61VecLen(39)
62CopyLoc[5](loc2: u64)
63Le
64BrFalse(71)
B11:
65Branch(66)
B12:
66CopyLoc[0](Arg0: &mut LBPosition)
67MutBorrowField[12](LBPosition.saved_rewards: vector<u128>)
68LdU128(0)
69VecPushBack(39)
70Branch(59)
B13:
71CopyLoc[0](Arg0: &mut LBPosition)
72ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
73CopyLoc[5](loc2: u64)
74VecImmBorrow(39)
75ReadRef
76MoveLoc[7](loc4: u128)
77Call safe_math::add_u128(u128, u128): u128
78CopyLoc[0](Arg0: &mut LBPosition)
79MutBorrowField[12](LBPosition.saved_rewards: vector<u128>)
80CopyLoc[5](loc2: u64)
81VecMutBorrow(39)
82WriteRef
B14:
83MoveLoc[5](loc2: u64)
84LdU64(1)
85Add
86StLoc[5](loc2: u64)
87Branch(15)
B15:
88MoveLoc[0](Arg0: &mut LBPosition)
89Pop
90MoveLoc[2](Arg2: vector<u128>)
91MoveLoc[1](Arg1: &mut LBBinPosition)
92MutBorrowField[11](LBBinPosition.reward_growth_inside_last: vector<u128>)
93WriteRef
94Ret
}
new_bin_position(Arg0: u32, Arg1: u128): LBBinPosition {
B0:
0MoveLoc[0](Arg0: u32)
1MoveLoc[1](Arg1: u128)
2LdU128(0)
3LdU128(0)
4VecPack(39, 0)
5Pack[0](LBBinPosition)
6Ret
}
public(friend) create_bin_in_pack(Arg0: &mut PackedBins, Arg1: u32, Arg2: u8) {
L3: loc0: u8
L4: loc1: u8
L5: loc2: LBBinPosition
B0:
0MoveLoc[1](Arg1: u32)
1LdU128(0)
2Call new_bin_position(u32, u128): LBBinPosition
3StLoc[5](loc2: LBBinPosition)
4CopyLoc[0](Arg0: &mut PackedBins)
5ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
6ReadRef
7StLoc[3](loc0: u8)
8CopyLoc[3](loc0: u8)
9CopyLoc[2](Arg2: u8)
10Call count_active_bins_before_position(u8, u8): u8
11StLoc[4](loc1: u8)
12CopyLoc[0](Arg0: &mut PackedBins)
13MutBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
14MoveLoc[5](loc2: LBBinPosition)
15MoveLoc[4](loc1: u8)
16CastU64
17Call vector::insert<LBBinPosition>(&mut vector<LBBinPosition>, LBBinPosition, u64)
18MoveLoc[3](loc0: u8)
19MoveLoc[2](Arg2: u8)
20Call set_bit_in_bitmap(u8, u8): u8
21MoveLoc[0](Arg0: &mut PackedBins)
22MutBorrowField[0](PackedBins.active_bins_bitmap: u8)
23WriteRef
24Ret
}
public(friend) increase_position_total_bins(Arg0: &mut LBPosition, Arg1: u64) {
B0:
0CopyLoc[0](Arg0: &mut LBPosition)
1ImmBorrowField[13](LBPosition.total_bins: u64)
2ReadRef
3CopyLoc[1](Arg1: u64)
4Add
5Call constants::max_bins(): u64
6Gt
7BrFalse(12)
B1:
8MoveLoc[0](Arg0: &mut LBPosition)
9Pop
10LdConst[3](u64: 205)
11Abort
B2:
12CopyLoc[0](Arg0: &mut LBPosition)
13ImmBorrowField[13](LBPosition.total_bins: u64)
14ReadRef
15MoveLoc[1](Arg1: u64)
16Add
17MoveLoc[0](Arg0: &mut LBPosition)
18MutBorrowField[13](LBPosition.total_bins: u64)
19WriteRef
20Ret
}
public(friend) borrow_position_info(Arg0: &LBPositionManager, Arg1: &LBPosition): &LBPositionInfo {
L2: loc0: ID
L3: loc1: &LBPositionInfo
B0:
0MoveLoc[1](Arg1: &LBPosition)
1Call object::id<LBPosition>(&LBPosition): ID
2StLoc[2](loc0: ID)
3CopyLoc[0](Arg0: &LBPositionManager)
4ImmBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
5CopyLoc[2](loc0: ID)
6Call table::contains<ID, LBPositionInfo>(&Table<ID, LBPositionInfo>, ID): bool
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &LBPositionManager)
10Pop
11LdConst[1](u64: 202)
12Abort
B3:
13MoveLoc[0](Arg0: &LBPositionManager)
14ImmBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
15CopyLoc[2](loc0: ID)
16Call table::borrow<ID, LBPositionInfo>(&Table<ID, LBPositionInfo>, ID): &LBPositionInfo
17StLoc[3](loc1: &LBPositionInfo)
18CopyLoc[3](loc1: &LBPositionInfo)
19ImmBorrowField[14](LBPositionInfo.position_id: ID)
20ReadRef
21MoveLoc[2](loc0: ID)
22Eq
23BrFalse(25)
B4:
24Branch(29)
B5:
25MoveLoc[3](loc1: &LBPositionInfo)
26Pop
27LdConst[1](u64: 202)
28Abort
B6:
29MoveLoc[3](loc1: &LBPositionInfo)
30Ret
}
public(friend) change_toggle(Arg0: &mut LBPositionInfo) {
B0:
0CopyLoc[0](Arg0: &mut LBPositionInfo)
1ImmBorrowField[15](LBPositionInfo.toggle: u16)
2ReadRef
3LdU16(1)
4Add
5CopyLoc[0](Arg0: &mut LBPositionInfo)
6MutBorrowField[15](LBPositionInfo.toggle: u16)
7WriteRef
8CopyLoc[0](Arg0: &mut LBPositionInfo)
9ImmBorrowField[15](LBPositionInfo.toggle: u16)
10ReadRef
11Call constants::max_u16(): u16
12Eq
13BrFalse(19)
B1:
14LdU16(0)
15MoveLoc[0](Arg0: &mut LBPositionInfo)
16MutBorrowField[15](LBPositionInfo.toggle: u16)
17WriteRef
18Branch(21)
B2:
19MoveLoc[0](Arg0: &mut LBPositionInfo)
20Pop
B3:
21Ret
}
public(friend) borrow_position_info_mut(Arg0: &mut LBPositionManager, Arg1: &LBPosition): &mut LBPositionInfo {
L2: loc0: ID
L3: loc1: &mut LBPositionInfo
B0:
0MoveLoc[1](Arg1: &LBPosition)
1ImmBorrowField[4](LBPosition.my_id: ID)
2ReadRef
3StLoc[2](loc0: ID)
4CopyLoc[0](Arg0: &mut LBPositionManager)
5ImmBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
6CopyLoc[2](loc0: ID)
7Call table::contains<ID, LBPositionInfo>(&Table<ID, LBPositionInfo>, ID): bool
8BrFalse(10)
B1:
9Branch(14)
B2:
10MoveLoc[0](Arg0: &mut LBPositionManager)
11Pop
12LdConst[1](u64: 202)
13Abort
B3:
14MoveLoc[0](Arg0: &mut LBPositionManager)
15MutBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
16CopyLoc[2](loc0: ID)
17Call table::borrow_mut<ID, LBPositionInfo>(&mut Table<ID, LBPositionInfo>, ID): &mut LBPositionInfo
18StLoc[3](loc1: &mut LBPositionInfo)
19CopyLoc[3](loc1: &mut LBPositionInfo)
20ImmBorrowField[14](LBPositionInfo.position_id: ID)
21ReadRef
22MoveLoc[2](loc0: ID)
23Eq
24BrFalse(26)
B4:
25Branch(30)
B5:
26MoveLoc[3](loc1: &mut LBPositionInfo)
27Pop
28LdConst[1](u64: 202)
29Abort
B6:
30CopyLoc[3](loc1: &mut LBPositionInfo)
31Call change_toggle(&mut LBPositionInfo)
32MoveLoc[3](loc1: &mut LBPositionInfo)
33Ret
}
public(friend) remove_bins(Arg0: &mut LBPositionManager, Arg1: &mut LBPosition, Arg2: vector<u32>) {
L3: loc0: PackedBins
L4: loc1: bool
L5: loc2: bool
L6: loc3: &mut PackedBins
L7: loc4: u32
L8: loc5: vector<u32>
L9: loc6: u32
L10: loc7: u64
L11: loc8: u64
L12: loc9: u64
L13: loc10: u8
L14: loc11: &mut LBPositionInfo
L15: loc12: u8
B0:
0MoveLoc[0](Arg0: &mut LBPositionManager)
1MutBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
2CopyLoc[1](Arg1: &mut LBPosition)
3ImmBorrowField[4](LBPosition.my_id: ID)
4ReadRef
5Call table::borrow_mut<ID, LBPositionInfo>(&mut Table<ID, LBPositionInfo>, ID): &mut LBPositionInfo
6StLoc[14](loc11: &mut LBPositionInfo)
7VecPack(13, 0)
8StLoc[8](loc5: vector<u32>)
9LdU64(0)
10StLoc[10](loc7: u64)
11Call constants::max_u32(): u32
12StLoc[7](loc4: u32)
13LdU8(0)
14VecPack(31, 0)
15Pack[1](PackedBins)
16StLoc[3](loc0: PackedBins)
17MutBorrowLoc[3](loc0: PackedBins)
18StLoc[6](loc3: &mut PackedBins)
19ImmBorrowLoc[2](Arg2: vector<u32>)
20VecLen(13)
21StLoc[12](loc9: u64)
B1:
22CopyLoc[10](loc7: u64)
23CopyLoc[12](loc9: u64)
24Lt
25BrFalse(112)
B2:
26Branch(27)
B3:
27ImmBorrowLoc[2](Arg2: vector<u32>)
28CopyLoc[10](loc7: u64)
29VecImmBorrow(13)
30ReadRef
31Call resolve_bin_group_index(u32): u32 * u8
32StLoc[13](loc10: u8)
33StLoc[9](loc6: u32)
34CopyLoc[9](loc6: u32)
35CopyLoc[7](loc4: u32)
36Neq
37BrFalse(73)
B4:
38CopyLoc[7](loc4: u32)
39Call constants::max_u32(): u32
40Neq
41BrFalse(57)
B5:
42MoveLoc[6](loc3: &mut PackedBins)
43ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
44ReadRef
45LdU8(0)
46Eq
47BrFalse(54)
B6:
48ImmBorrowLoc[8](loc5: vector<u32>)
49ImmBorrowLoc[7](loc4: u32)
50Call vector::contains<u32>(&vector<u32>, &u32): bool
51Not
52StLoc[4](loc1: bool)
53Branch(56)
B7:
54LdFalse
55StLoc[4](loc1: bool)
B8:
56Branch(61)
B9:
57MoveLoc[6](loc3: &mut PackedBins)
58Pop
59LdFalse
60StLoc[4](loc1: bool)
B10:
61MoveLoc[4](loc1: bool)
62BrFalse(66)
B11:
63MutBorrowLoc[8](loc5: vector<u32>)
64MoveLoc[7](loc4: u32)
65VecPushBack(13)
B12:
66CopyLoc[14](loc11: &mut LBPositionInfo)
67MutBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
68CopyLoc[9](loc6: u32)
69Call table::borrow_mut<u32, PackedBins>(&mut Table<u32, PackedBins>, u32): &mut PackedBins
70StLoc[6](loc3: &mut PackedBins)
71MoveLoc[9](loc6: u32)
72StLoc[7](loc4: u32)
B13:
73CopyLoc[6](loc3: &mut PackedBins)
74ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
75ReadRef
76CopyLoc[13](loc10: u8)
77Call is_bin_active_in_bitmap(u8, u8): bool
78BrFalse(107)
B14:
79CopyLoc[6](loc3: &mut PackedBins)
80ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
81ReadRef
82CopyLoc[13](loc10: u8)
83Call count_active_bins_before_position(u8, u8): u8
84StLoc[15](loc12: u8)
85CopyLoc[1](Arg1: &mut LBPosition)
86ImmBorrowField[13](LBPosition.total_bins: u64)
87ReadRef
88LdU64(1)
89Call safe_math::sub_u64(u64, u64): u64
90CopyLoc[1](Arg1: &mut LBPosition)
91MutBorrowField[13](LBPosition.total_bins: u64)
92WriteRef
93CopyLoc[6](loc3: &mut PackedBins)
94MutBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
95MoveLoc[15](loc12: u8)
96CastU64
97Call vector::remove<LBBinPosition>(&mut vector<LBBinPosition>, u64): LBBinPosition
98Pop
99CopyLoc[6](loc3: &mut PackedBins)
100ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
101ReadRef
102MoveLoc[13](loc10: u8)
103Call clear_bit_in_bitmap(u8, u8): u8
104CopyLoc[6](loc3: &mut PackedBins)
105MutBorrowField[0](PackedBins.active_bins_bitmap: u8)
106WriteRef
B15:
107MoveLoc[10](loc7: u64)
108LdU64(1)
109Add
110StLoc[10](loc7: u64)
111Branch(22)
B16:
112MoveLoc[1](Arg1: &mut LBPosition)
113Pop
114CopyLoc[7](loc4: u32)
115Call constants::max_u32(): u32
116Neq
117BrFalse(133)
B17:
118MoveLoc[6](loc3: &mut PackedBins)
119ImmBorrowField[0](PackedBins.active_bins_bitmap: u8)
120ReadRef
121LdU8(0)
122Eq
123BrFalse(130)
B18:
124ImmBorrowLoc[8](loc5: vector<u32>)
125ImmBorrowLoc[7](loc4: u32)
126Call vector::contains<u32>(&vector<u32>, &u32): bool
127Not
128StLoc[5](loc2: bool)
129Branch(132)
B19:
130LdFalse
131StLoc[5](loc2: bool)
B20:
132Branch(137)
B21:
133MoveLoc[6](loc3: &mut PackedBins)
134Pop
135LdFalse
136StLoc[5](loc2: bool)
B22:
137MoveLoc[5](loc2: bool)
138BrFalse(142)
B23:
139MutBorrowLoc[8](loc5: vector<u32>)
140MoveLoc[7](loc4: u32)
141VecPushBack(13)
B24:
142LdU64(0)
143StLoc[11](loc8: u64)
B25:
144CopyLoc[11](loc8: u64)
145ImmBorrowLoc[8](loc5: vector<u32>)
146VecLen(13)
147Lt
148BrFalse(163)
B26:
149Branch(150)
B27:
150CopyLoc[14](loc11: &mut LBPositionInfo)
151MutBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
152ImmBorrowLoc[8](loc5: vector<u32>)
153CopyLoc[11](loc8: u64)
154VecImmBorrow(13)
155ReadRef
156Call table::remove<u32, PackedBins>(&mut Table<u32, PackedBins>, u32): PackedBins
157Pop
158MoveLoc[11](loc8: u64)
159LdU64(1)
160Add
161StLoc[11](loc8: u64)
162Branch(144)
B28:
163MoveLoc[14](loc11: &mut LBPositionInfo)
164Pop
165Ret
}
public(friend) close_position(Arg0: &mut LBPositionManager, Arg1: LBPosition) {
L2: loc0: bool
L3: loc1: LBPositionInfo
B0:
0MoveLoc[0](Arg0: &mut LBPositionManager)
1MutBorrowField[3](LBPositionManager.positions: Table<ID, LBPositionInfo>)
2ImmBorrowLoc[1](Arg1: LBPosition)
3Call object::id<LBPosition>(&LBPosition): ID
4Call table::remove<ID, LBPositionInfo>(&mut Table<ID, LBPositionInfo>, ID): LBPositionInfo
5StLoc[3](loc1: LBPositionInfo)
6ImmBorrowLoc[3](loc1: LBPositionInfo)
7Call is_empty_lp(&LBPositionInfo): bool
8BrFalse(19)
B1:
9ImmBorrowLoc[1](Arg1: LBPosition)
10Call is_empty_reward(&LBPosition): bool
11BrFalse(16)
B2:
12ImmBorrowLoc[1](Arg1: LBPosition)
13Call is_empty_fees(&LBPosition): bool
14StLoc[2](loc0: bool)
15Branch(18)
B3:
16LdFalse
17StLoc[2](loc0: bool)
B4:
18Branch(21)
B5:
19LdFalse
20StLoc[2](loc0: bool)
B6:
21MoveLoc[2](loc0: bool)
22BrFalse(24)
B7:
23Branch(26)
B8:
24LdConst[2](u64: 203)
25Abort
B9:
26MoveLoc[3](loc1: LBPositionInfo)
27Call destroy_position_info(LBPositionInfo)
28MoveLoc[1](Arg1: LBPosition)
29Call destroy(LBPosition)
30Ret
}
public is_empty_lp(Arg0: &LBPositionInfo): bool {
B0:
0MoveLoc[0](Arg0: &LBPositionInfo)
1ImmBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
2Call table::is_empty<u32, PackedBins>(&Table<u32, PackedBins>): bool
3Ret
}
public is_empty_fees(Arg0: &LBPosition): bool {
L1: loc0: bool
B0:
0CopyLoc[0](Arg0: &LBPosition)
1ImmBorrowField[9](LBPosition.saved_fees_x: u128)
2ReadRef
3LdU128(0)
4Eq
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &LBPosition)
7ImmBorrowField[10](LBPosition.saved_fees_y: u128)
8ReadRef
9LdU128(0)
10Eq
11StLoc[1](loc0: bool)
12Branch(17)
B2:
13MoveLoc[0](Arg0: &LBPosition)
14Pop
15LdFalse
16StLoc[1](loc0: bool)
B3:
17MoveLoc[1](loc0: bool)
18Ret
}
public is_empty_reward(Arg0: &LBPosition): bool {
L1: loc0: u128
L2: loc1: u64
B0:
0LdU128(0)
1StLoc[1](loc0: u128)
2LdU64(0)
3StLoc[2](loc1: u64)
B1:
4CopyLoc[2](loc1: u64)
5CopyLoc[0](Arg0: &LBPosition)
6ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
7VecLen(39)
8Lt
9BrFalse(24)
B2:
10Branch(11)
B3:
11MoveLoc[1](loc0: u128)
12CopyLoc[0](Arg0: &LBPosition)
13ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
14CopyLoc[2](loc1: u64)
15VecImmBorrow(39)
16ReadRef
17Add
18StLoc[1](loc0: u128)
19MoveLoc[2](loc1: u64)
20LdU64(1)
21Add
22StLoc[2](loc1: u64)
23Branch(4)
B4:
24MoveLoc[0](Arg0: &LBPosition)
25Pop
26MoveLoc[1](loc0: u128)
27LdU128(0)
28Eq
29Ret
}
destroy(Arg0: LBPosition) {
B0:
0MoveLoc[0](Arg0: LBPosition)
1Unpack[4](LBPosition)
2Pop
3Pop
4Pop
5Pop
6Pop
7Pop
8Pop
9Pop
10Pop
11Call object::delete(UID)
12Ret
}
destroy_position_info(Arg0: LBPositionInfo) {
L1: loc0: Table<u32, PackedBins>
B0:
0MoveLoc[0](Arg0: LBPositionInfo)
1Unpack[3](LBPositionInfo)
2Pop
3StLoc[1](loc0: Table<u32, PackedBins>)
4Pop
5Pop
6MoveLoc[1](loc0: Table<u32, PackedBins>)
7Call table::drop<u32, PackedBins>(Table<u32, PackedBins>)
8Ret
}
public position_token_amount(Arg0: &LBBinPosition): u128 {
B0:
0MoveLoc[0](Arg0: &LBBinPosition)
1ImmBorrowField[6](LBBinPosition.amount: u128)
2ReadRef
3Ret
}
public get_tokens_in_position(Arg0: &LBPositionManager, Arg1: &LBPosition, Arg2: u32, Arg3: u32): vector<u32> * vector<u128> {
L4: loc0: bool
L5: loc1: u64
L6: loc2: vector<u128>
L7: loc3: &LBBinPosition
L8: loc4: vector<u32>
L9: loc5: u32
L10: loc6: &PackedBins
L11: loc7: u64
L12: loc8: u32
L13: loc9: u32
L14: loc10: &LBPositionInfo
B0:
0VecPack(13, 0)
1StLoc[8](loc4: vector<u32>)
2VecPack(39, 0)
3StLoc[6](loc2: vector<u128>)
4MoveLoc[0](Arg0: &LBPositionManager)
5MoveLoc[1](Arg1: &LBPosition)
6Call borrow_position_info(&LBPositionManager, &LBPosition): &LBPositionInfo
7StLoc[14](loc10: &LBPositionInfo)
8CopyLoc[2](Arg2: u32)
9LdConst[6](u8: 3)
10Shr
11StLoc[13](loc9: u32)
12CopyLoc[3](Arg3: u32)
13LdConst[6](u8: 3)
14Shr
15StLoc[12](loc8: u32)
16MoveLoc[13](loc9: u32)
17StLoc[9](loc5: u32)
B1:
18CopyLoc[9](loc5: u32)
19CopyLoc[12](loc8: u32)
20Le
21BrFalse(100)
B2:
22Branch(23)
B3:
23CopyLoc[14](loc10: &LBPositionInfo)
24ImmBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
25CopyLoc[9](loc5: u32)
26Call table::contains<u32, PackedBins>(&Table<u32, PackedBins>, u32): bool
27BrFalse(95)
B4:
28CopyLoc[14](loc10: &LBPositionInfo)
29ImmBorrowField[2](LBPositionInfo.bins: Table<u32, PackedBins>)
30CopyLoc[9](loc5: u32)
31Call table::borrow<u32, PackedBins>(&Table<u32, PackedBins>, u32): &PackedBins
32StLoc[10](loc6: &PackedBins)
33LdU64(0)
34StLoc[11](loc7: u64)
35CopyLoc[10](loc6: &PackedBins)
36ImmBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
37VecLen(31)
38StLoc[5](loc1: u64)
B5:
39CopyLoc[11](loc7: u64)
40CopyLoc[5](loc1: u64)
41Lt
42BrFalse(93)
B6:
43Branch(44)
B7:
44CopyLoc[10](loc6: &PackedBins)
45ImmBorrowField[1](PackedBins.bin_data: vector<LBBinPosition>)
46CopyLoc[11](loc7: u64)
47VecImmBorrow(31)
48StLoc[7](loc3: &LBBinPosition)
49CopyLoc[7](loc3: &LBBinPosition)
50ImmBorrowField[16](LBBinPosition.bin_id: u32)
51ReadRef
52CopyLoc[2](Arg2: u32)
53Ge
54BrFalse(71)
B8:
55CopyLoc[7](loc3: &LBBinPosition)
56ImmBorrowField[16](LBBinPosition.bin_id: u32)
57ReadRef
58CopyLoc[3](Arg3: u32)
59Le
60BrFalse(68)
B9:
61CopyLoc[7](loc3: &LBBinPosition)
62ImmBorrowField[6](LBBinPosition.amount: u128)
63ReadRef
64LdU128(0)
65Gt
66StLoc[4](loc0: bool)
67Branch(70)
B10:
68LdFalse
69StLoc[4](loc0: bool)
B11:
70Branch(73)
B12:
71LdFalse
72StLoc[4](loc0: bool)
B13:
73MoveLoc[4](loc0: bool)
74BrFalse(86)
B14:
75MutBorrowLoc[8](loc4: vector<u32>)
76CopyLoc[7](loc3: &LBBinPosition)
77ImmBorrowField[16](LBBinPosition.bin_id: u32)
78ReadRef
79VecPushBack(13)
80MutBorrowLoc[6](loc2: vector<u128>)
81MoveLoc[7](loc3: &LBBinPosition)
82ImmBorrowField[6](LBBinPosition.amount: u128)
83ReadRef
84VecPushBack(39)
85Branch(88)
B15:
86MoveLoc[7](loc3: &LBBinPosition)
87Pop
B16:
88MoveLoc[11](loc7: u64)
89LdU64(1)
90Add
91StLoc[11](loc7: u64)
92Branch(39)
B17:
93MoveLoc[10](loc6: &PackedBins)
94Pop
B18:
95MoveLoc[9](loc5: u32)
96LdU32(1)
97Call safe_math::add_u32(u32, u32): u32
98StLoc[9](loc5: u32)
99Branch(18)
B19:
100MoveLoc[14](loc10: &LBPositionInfo)
101Pop
102MoveLoc[8](loc4: vector<u32>)
103MoveLoc[6](loc2: vector<u128>)
104Ret
}
public(friend) get_pending_fees(Arg0: &LBBinPosition, Arg1: u128, Arg2: u128): u128 * u128 {
L3: loc0: u128
L4: loc1: u128
L5: loc2: u128
L6: loc3: u128
L7: loc4: u128
B0:
0CopyLoc[0](Arg0: &LBBinPosition)
1ImmBorrowField[6](LBBinPosition.amount: u128)
2ReadRef
3StLoc[7](loc4: u128)
4CopyLoc[7](loc4: u128)
5LdU128(0)
6Eq
7BrFalse(13)
B1:
8MoveLoc[0](Arg0: &LBBinPosition)
9Pop
10LdU128(0)
11LdU128(0)
12Ret
B2:
13MoveLoc[1](Arg1: u128)
14CopyLoc[0](Arg0: &LBBinPosition)
15ImmBorrowField[7](LBBinPosition.fee_growth_inside_last_x: u128)
16ReadRef
17Sub
18StLoc[5](loc2: u128)
19MoveLoc[2](Arg2: u128)
20MoveLoc[0](Arg0: &LBBinPosition)
21ImmBorrowField[8](LBBinPosition.fee_growth_inside_last_y: u128)
22ReadRef
23Sub
24StLoc[6](loc3: u128)
25CopyLoc[7](loc4: u128)
26MoveLoc[5](loc2: u128)
27Mul
28StLoc[3](loc0: u128)
29MoveLoc[7](loc4: u128)
30MoveLoc[6](loc3: u128)
31Mul
32StLoc[4](loc1: u128)
33MoveLoc[3](loc0: u128)
34MoveLoc[4](loc1: u128)
35Ret
}
public(friend) get_saved_fees(Arg0: &LBPosition): u128 * u128 {
B0:
0CopyLoc[0](Arg0: &LBPosition)
1ImmBorrowField[9](LBPosition.saved_fees_x: u128)
2ReadRef
3MoveLoc[0](Arg0: &LBPosition)
4ImmBorrowField[10](LBPosition.saved_fees_y: u128)
5ReadRef
6Ret
}
public(friend) collect_saved_fees(Arg0: &mut LBPosition): u64 * u64 {
L1: loc0: u64
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut LBPosition)
1ImmBorrowField[9](LBPosition.saved_fees_x: u128)
2ReadRef
3Call q64x64::scale_offset(): u8
4Shr
5Call safe_math::u128_to_u64(u128): u64
6StLoc[1](loc0: u64)
7CopyLoc[0](Arg0: &mut LBPosition)
8ImmBorrowField[10](LBPosition.saved_fees_y: u128)
9ReadRef
10Call q64x64::scale_offset(): u8
11Shr
12Call safe_math::u128_to_u64(u128): u64
13StLoc[2](loc1: u64)
14LdU128(0)
15CopyLoc[0](Arg0: &mut LBPosition)
16MutBorrowField[9](LBPosition.saved_fees_x: u128)
17WriteRef
18LdU128(0)
19MoveLoc[0](Arg0: &mut LBPosition)
20MutBorrowField[10](LBPosition.saved_fees_y: u128)
21WriteRef
22MoveLoc[1](loc0: u64)
23MoveLoc[2](loc1: u64)
24Ret
}
public(friend) get_saved_rewards(Arg0: &LBPosition, Arg1: u64): u128 {
B0:
0CopyLoc[1](Arg1: u64)
1CopyLoc[0](Arg0: &LBPosition)
2ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
3VecLen(39)
4Ge
5BrFalse(10)
B1:
6MoveLoc[0](Arg0: &LBPosition)
7Pop
8LdU128(0)
9Ret
B2:
10MoveLoc[0](Arg0: &LBPosition)
11ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
12MoveLoc[1](Arg1: u64)
13VecImmBorrow(39)
14ReadRef
15Ret
}
public(friend) collect_saved_rewards(Arg0: &mut LBPosition, Arg1: u64): u64 {
L2: loc0: u128
B0:
0CopyLoc[1](Arg1: u64)
1CopyLoc[0](Arg0: &mut LBPosition)
2ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
3VecLen(39)
4Ge
5BrFalse(10)
B1:
6MoveLoc[0](Arg0: &mut LBPosition)
7Pop
8LdU64(0)
9Ret
B2:
10CopyLoc[0](Arg0: &mut LBPosition)
11ImmBorrowField[12](LBPosition.saved_rewards: vector<u128>)
12CopyLoc[1](Arg1: u64)
13VecImmBorrow(39)
14ReadRef
15StLoc[2](loc0: u128)
16LdU128(0)
17MoveLoc[0](Arg0: &mut LBPosition)
18MutBorrowField[12](LBPosition.saved_rewards: vector<u128>)
19MoveLoc[1](Arg1: u64)
20VecMutBorrow(39)
21WriteRef
22MoveLoc[2](loc0: u128)
23Call q64x64::scale_offset(): u8
24Shr
25Call safe_math::u128_to_u64(u128): u64
26Ret
}
public(friend) lock_position(Arg0: &mut LBPosition, Arg1: u64) {
B0:
0MoveLoc[1](Arg1: u64)
1MoveLoc[0](Arg0: &mut LBPosition)
2MutBorrowField[17](LBPosition.lock_until: u64)
3WriteRef
4Ret
}
public is_position_locked(Arg0: &LBPosition, Arg1: &Clock): bool {
L2: loc0: u64
B0:
0MoveLoc[1](Arg1: &Clock)
1Call clock::timestamp_ms(&Clock): u64
2StLoc[2](loc0: u64)
3MoveLoc[0](Arg0: &LBPosition)
4ImmBorrowField[17](LBPosition.lock_until: u64)
5ReadRef
6MoveLoc[2](loc0: u64)
7Gt
8Ret
}
public get_lock_until(Arg0: &LBPosition): u64 {
B0:
0MoveLoc[0](Arg0: &LBPosition)
1ImmBorrowField[17](LBPosition.lock_until: u64)
2ReadRef
3Ret
}
Constants [
0 => u64: 201
1 => u64: 202
2 => u64: 203
3 => u64: 205
4 => u64: 206
5 => u32: 7
6 => u8: 3
7 => vector<u8>: "name" // interpreted as UTF8 string
8 => vector<u8>: "coin_a" // interpreted as UTF8 string
9 => vector<u8>: "coin_b" // interpreted as UTF8 string
10 => vector<u8>: "link" // interpreted as UTF8 string
11 => vector<u8>: "image_url" // interpreted as UTF8 string
12 => vector<u8>: "description" // interpreted as UTF8 string
13 => vector<u8>: "project_url" // interpreted as UTF8 string
14 => vector<u8>: "creator" // interpreted as UTF8 string
15 => vector<u8>: "Ferra Liquidity Position" // interpreted as UTF8 string
16 => vector<u8>: "{coin_type_a}" // interpreted as UTF8 string
17 => vector<u8>: "{coin_type_b}" // interpreted as UTF8 string
18 => vector<u8>: "https://ferra.ag/position?id={id}" // interpreted as UTF8 string
19 => vector<u8>: "https://ferra.ag/Certified-Ferra-LPer.png" // interpreted as UTF8 string
20 => vector<u8>: "Provides liquidity for the Ferra trading pair" // interpreted as UTF8 string
21 => vector<u8>: "https://ferra.ag" // interpreted as UTF8 string
22 => vector<u8>: "Ferra Labs" // interpreted as UTF8 string
]
}